]> git.pld-linux.org Git - packages/crossavr-binutils.git/commitdiff
- synchronized patches with WinAVR project (http://winavr.sourceforge.net). auto/th/crossavr-binutils-2_19_1-1
authorkosmo <kosmo@pld-linux.org>
Sun, 5 Apr 2009 11:48:31 +0000 (11:48 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    crossavr-binutils-aa.patch -> 1.2
    crossavr-binutils-atmega32u6.patch -> 1.1
    crossavr-binutils-avr-coff.patch -> 1.1
    crossavr-binutils-avr-size.patch -> 1.2
    crossavr-binutils-coff-avr.patch -> 1.5
    crossavr-binutils-data-origin.patch -> 1.1
    crossavr-binutils-new-sections.patch -> 1.1
    crossavr-binutils-xmega.patch -> 1.1
    crossavr-binutils-xmega2.patch -> 1.1

crossavr-binutils-aa.patch [deleted file]
crossavr-binutils-atmega32u6.patch [new file with mode: 0644]
crossavr-binutils-avr-coff.patch [moved from crossavr-binutils-coff-avr.patch with 96% similarity]
crossavr-binutils-avr-size.patch
crossavr-binutils-data-origin.patch [new file with mode: 0644]
crossavr-binutils-new-sections.patch [new file with mode: 0644]
crossavr-binutils-xmega.patch [new file with mode: 0644]
crossavr-binutils-xmega2.patch [new file with mode: 0644]

diff --git a/crossavr-binutils-aa.patch b/crossavr-binutils-aa.patch
deleted file mode 100644 (file)
index 7a27308..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
---- libiberty/Makefile.in.orig Fri Apr  7 02:01:25 2006
-+++ libiberty/Makefile.in      Mon Sep 25 21:54:25 2006
-@@ -330,7 +330,8 @@
- @MAINT@       echo stamp > stamp-functions
- INSTALL_DEST = @INSTALL_DEST@
--install: install_to_$(INSTALL_DEST) install-subdir
-+#install: install_to_$(INSTALL_DEST) install-subdir
-+install:
- install_to_libdir: all
-       ${mkinstalldirs} $(DESTDIR)$(libdir)$(MULTISUBDIR)
---- bfd/Makefile.in.orig       Fri Jun 23 20:17:19 2006
-+++ bfd/Makefile.in    Mon Sep 25 21:54:49 2006
-@@ -1158,7 +1158,8 @@
-       for dir in "$(DESTDIR)$(bfdlibdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
-       done
--install: install-recursive
-+#install: install-recursive
-+install:
- install-exec: install-exec-recursive
- install-data: install-data-recursive
- uninstall: uninstall-recursive
---- opcodes/Makefile.in.orig   Thu Apr  6 23:49:35 2006
-+++ opcodes/Makefile.in        Mon Sep 25 21:55:23 2006
-@@ -837,7 +837,8 @@
-       for dir in "$(DESTDIR)$(bfdlibdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
-       done
--install: install-recursive
-+#install: install-recursive
-+install:
- install-exec: install-exec-recursive
- install-data: install-data-recursive
- uninstall: uninstall-recursive
---- etc/Makefile.in.orig       Thu Apr  6 23:49:30 2006
-+++ etc/Makefile.in    Mon Sep 25 21:55:51 2006
-@@ -59,7 +59,8 @@
- HTMLFILES = standards.html configure.html
- all: info
--install: install-info
-+#install: install-info
-+install:
- uninstall:
diff --git a/crossavr-binutils-atmega32u6.patch b/crossavr-binutils-atmega32u6.patch
new file mode 100644 (file)
index 0000000..cb5701c
--- /dev/null
@@ -0,0 +1,21 @@
+--- gas/config/tc-avr.c.orig   2008-11-03 20:26:36.667612400 -0700
++++ gas/config/tc-avr.c        2008-11-04 10:21:02.655736600 -0700
+@@ -181,6 +181,7 @@ static struct mcu_type_s mcu_types[] =
+   {"atmega32c1", AVR_ISA_AVR5,    bfd_mach_avr5},
+   {"atmega32m1", AVR_ISA_AVR5,    bfd_mach_avr5},
+   {"atmega32u4", AVR_ISA_AVR5,    bfd_mach_avr5},
++  {"atmega32u6", AVR_ISA_AVR5,    bfd_mach_avr5},
+   {"at90usb646", AVR_ISA_AVR5,    bfd_mach_avr5},
+   {"at90usb647", AVR_ISA_AVR5,    bfd_mach_avr5},
+   {"at94k",      AVR_ISA_94K,     bfd_mach_avr5},
+--- gas/doc/c-avr.texi.orig    2008-08-29 10:58:02.000000000 -0600
++++ gas/doc/c-avr.texi 2008-11-04 13:20:43.724525000 -0700
+@@ -67,7 +67,7 @@ atmega323, atmega324p, atmega325, atmega
+ atmega328p, atmega329, atmega329p, atmega3290, atmega3290p, atmega406, atmega64,
+ atmega640, atmega644, atmega644p, atmega645, atmega6450, atmega649, atmega6490,
+ atmega16hva, at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4,
+-atmega32c1, atmega32m1, atmega32u4, at90usb646, at90usb647, at94k).
++atmega32c1, atmega32m1, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k).
+ Instruction set avr51 is for the enhanced AVR core with exactly 128K program
+ memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
similarity index 96%
rename from crossavr-binutils-coff-avr.patch
rename to crossavr-binutils-avr-coff.patch
index cd054bd89cc4e5eb10c119176a0a1030f47b71d2..e8554f88f562c1934cb5835902cac0a6a333f4b5 100644 (file)
@@ -1,5 +1,45 @@
---- binutils-2.18.orig/binutils/Makefile.am    Tue Oct 23 21:44:42 2007
-+++ binutils-2.18/binutils/Makefile.am Tue Oct 23 22:22:40 2007
+AVR specific only
+Deprecated
+--------------------------------------------------------------------------------
+diff -Nur ../binutils-2.18.orig/binutils/doc/objcopy.1 ./binutils/doc/objcopy.1
+--- ../binutils-2.18.orig/binutils/doc/objcopy.1       Tue Oct 23 21:44:42 2007
++++ ./binutils/doc/objcopy.1   Tue Oct 23 22:18:44 2007
+@@ -193,6 +193,8 @@
+         [\fB\-\-readonly\-text\fR]
+         [\fB\-\-pure\fR]
+         [\fB\-\-impure\fR]
++        [\fB\-\-change\-pathname\fR \fIold\fR=\fInew\fR]
++        [\fB\-\-basename\fR]
+         [\fB\-v\fR|\fB\-\-verbose\fR]
+         [\fB\-V\fR|\fB\-\-version\fR]  
+         [\fB\-\-help\fR] [\fB\-\-info\fR]
+@@ -807,6 +809,23 @@
+ It can also be a useful way of reducing the size of a \fB\-\-just\-symbols\fR
+ linker input file.
+ .RE
++.IP "\fB\-\-change\-pathname\fR \fIold\fR=\fInew\fR" 4
++.IX Item "--change-pathname old=new"
++When converting debugging information using \fB\-\-debugging\fR, for
++every pathname that starts with \fIold\fR, replace the matching part
++by \fInew\fR.  This is intented to map pathnames between different
++debugging tools, or when parts of the object file(s) had their
++pathnames recorded in a different build environment.  Note that only
++leading directory name components might be changed that way, since the
++trailing filename could be recorded elsewhere as well (depending on the
++debugging format of the input file).
++.IP "\fB\-\-basename\fR"
++.IX Item "--basename"
++When converting debugging information using \fB\-\-debugging\fR, for
++every pathname, strip all leading directory information.  This option
++takes precedence over any \fB\-\-change\-pathname\fR option.  For some
++debugging formats that cannot handle long filenames, this options is
++implied (notably, some COFF debugging formats).
+ .IP "\fB\-V\fR" 4
+ .IX Item "-V"
+ .PD 0
+diff -Nur ../binutils-2.18.orig/binutils/Makefile.am ./binutils/Makefile.am
+--- ../binutils-2.18.orig/binutils/Makefile.am Tue Oct 23 21:44:42 2007
++++ ./binutils/Makefile.am     Tue Oct 23 22:22:40 2007
 @@ -98,7 +98,7 @@
        resbin.c rescoff.c resrc.c resres.c \
        size.c srconv.c stabs.c strings.c sysdump.c \
@@ -18,8 +58,9 @@
  
  # Code shared by all the binutils.
  BULIBS = bucomm.c version.c filemode.c
---- binutils-2.18.orig/binutils/Makefile.in    Tue Oct 23 21:44:42 2007
-+++ binutils-2.18/binutils/Makefile.in Tue Oct 23 22:26:52 2007
+diff -Nur ../binutils-2.18.orig/binutils/Makefile.in ./binutils/Makefile.in
+--- ../binutils-2.18.orig/binutils/Makefile.in Tue Oct 23 21:44:42 2007
++++ ./binutils/Makefile.in     Tue Oct 23 22:26:52 2007
 @@ -129,7 +129,7 @@
  nm_new_OBJECTS = $(am_nm_new_OBJECTS)
  nm_new_LDADD = $(LDADD)
@@ -47,8 +88,9 @@
  
  # Code shared by all the binutils.
  BULIBS = bucomm.c version.c filemode.c
---- binutils-2.18.orig/binutils/bucomm.c       Tue Oct 23 21:44:42 2007
-+++ binutils-2.18/binutils/bucomm.c    Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/binutils/bucomm.c ./binutils/bucomm.c
+--- ../binutils-2.18.orig/binutils/bucomm.c    Tue Oct 23 21:44:42 2007
++++ ./binutils/bucomm.c        Tue Oct 23 22:18:44 2007
 @@ -501,6 +501,32 @@
    return ret;
  }
  /* Returns the size of the named file.  If the file does not
     exist, or if it is not a real file, then a suitable non-fatal
     error message is printed and zero is returned.  */
---- binutils-2.18.orig/binutils/bucomm.h       Tue Oct 23 21:44:42 2007
-+++ binutils-2.18/binutils/bucomm.h    Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/binutils/bucomm.h ./binutils/bucomm.h
+--- ../binutils-2.18.orig/binutils/bucomm.h    Tue Oct 23 21:44:42 2007
++++ ./binutils/bucomm.h        Tue Oct 23 22:18:44 2007
 @@ -54,6 +54,8 @@
  
  off_t get_file_size (const char *);
  extern char *program_name;
  
  /* filemode.c */
---- binutils-2.18.orig/binutils/budbg.h        Tue Oct 23 21:44:42 2007
-+++ binutils-2.18/binutils/budbg.h     Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/binutils/budbg.h ./binutils/budbg.h
+--- ../binutils-2.18.orig/binutils/budbg.h     Tue Oct 23 21:44:42 2007
++++ ./binutils/budbg.h Tue Oct 23 22:18:44 2007
 @@ -51,8 +51,11 @@
  
  extern bfd_boolean write_ieee_debugging_info (bfd *, void *);
 +  (bfd *abfd, void *, long *symcountp, asymbol ***);
  
  #endif
---- binutils-2.18.orig/binutils/debug.c.orig   Mon Aug  6 21:55:10 2007
-+++ binutils-2.18/binutils/debug.c     Tue Oct 23 23:43:19 2007
+--- binutils/debug.c.orig      Mon Aug  6 21:55:10 2007
++++ binutils/debug.c   Tue Oct 23 23:43:19 2007
 @@ -31,6 +31,7 @@
  #include <assert.h>
  #include "bfd.h"
 +  /* Not found, pass the original name on. */
 +  return oname;
  }
---- binutils-2.18.orig/binutils/debug.h        Tue Oct 23 21:44:43 2007
-+++ binutils-2.18/binutils/debug.h     Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/binutils/debug.h ./binutils/debug.h
+--- ../binutils-2.18.orig/binutils/debug.h     Tue Oct 23 21:44:43 2007
++++ ./binutils/debug.h Tue Oct 23 22:18:44 2007
 @@ -440,6 +440,12 @@
  
  extern bfd_boolean debug_start_source (void *, const char *);
  /* Record a function definition.  This implicitly starts a function
     block.  The debug_type argument is the type of the return value.
     The bfd_boolean indicates whether the function is globally visible.
---- binutils-2.18.orig/binutils/objcopy.c      Tue Oct 23 21:44:43 2007
-+++ binutils-2.18/binutils/objcopy.c   Tue Oct 23 22:38:29 2007
+diff -Nur ../binutils-2.18.orig/binutils/objcopy.c ./binutils/objcopy.c
+--- ../binutils-2.18.orig/binutils/objcopy.c   Tue Oct 23 21:44:43 2007
++++ ./binutils/objcopy.c       Tue Oct 23 22:38:29 2007
 @@ -32,6 +32,7 @@
  #include "elf-bfd.h"
  #include <sys/stat.h>
          break;
  
        case OPTION_READONLY_TEXT:
---- binutils-2.18.orig/binutils/rdcoff.c       Tue Oct 23 21:44:43 2007
-+++ binutils-2.18/binutils/rdcoff.c    Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/binutils/rdcoff.c ./binutils/rdcoff.c
+--- ../binutils-2.18.orig/binutils/rdcoff.c    Tue Oct 23 21:44:43 2007
++++ ./binutils/rdcoff.c        Tue Oct 23 22:18:44 2007
 @@ -82,6 +82,9 @@
    struct coff_slots *slots;
    /* Basic types.  */
          if (ISFCN (syment.n_type))
            {
              fnname = name;
---- binutils-2.18.orig/binutils/wrcoff.c       Thu Jan  1 01:00:00 1970
-+++ binutils-2.18/binutils/wrcoff.c    Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/binutils/wrcoff.c ./binutils/wrcoff.c
+--- ../binutils-2.18.orig/binutils/wrcoff.c    Thu Jan  1 01:00:00 1970
++++ ./binutils/wrcoff.c        Tue Oct 23 22:18:44 2007
 @@ -0,0 +1,3410 @@
 +/* wrcoff.c -- Generate (AVR) COFF debugging information
 +   Copyright 2003 Free Software Foundation, Inc.
 +
 +  return TRUE;
 +}
---- binutils-2.18.orig/bfd/Makefile.am Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/Makefile.am      Tue Oct 23 22:41:01 2007
+diff -Nur ../binutils-2.18.orig/bfd/Makefile.am ./bfd/Makefile.am
+--- ../binutils-2.18.orig/bfd/Makefile.am      Tue Oct 23 21:44:07 2007
++++ ./bfd/Makefile.am  Tue Oct 23 22:41:01 2007
 @@ -208,6 +208,8 @@
        coff-apollo.lo \
        coff-arm.lo \
        coff-h8300.c \
        coff-h8500.c \
        coff-i386.c \
-@@ -976,13 +980,13 @@
- bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in
-       @echo "creating $@"
-       @bfd_version=`echo "$(VERSION)" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
--      bfd_version_string="\"$(VERSION)\"" ;\
-+      bfd_version_string="\"$(VERSION) + coff-avr-patch (20050630)\"" ;\
-       bfd_soversion="$(VERSION)" ;\
-       bfd_version_package="\"$(PKGVERSION)\"" ;\
-       report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
-       if test "x$(RELEASE)" = x ; then \
-         bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
--        bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
-+        bfd_version_string="\"$(VERSION).$${bfd_version_date} + coff-avr-patch (20050630)\"" ;\
-         bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
-       fi ;\
-       sed -e "s,@bfd_version@,$$bfd_version," \
 @@ -1186,6 +1190,12 @@
    coff-m68k.c $(INCDIR)/hashtab.h $(INCDIR)/coff/m68k.h \
    $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
  coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
    $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/coff/h8300.h \
    $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
---- binutils-2.18.orig/bfd/Makefile.in Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/Makefile.in      Tue Oct 23 22:41:31 2007
+diff -Nur ../binutils-2.18.orig/bfd/Makefile.in ./bfd/Makefile.in
+--- ../binutils-2.18.orig/bfd/Makefile.in      Tue Oct 23 21:44:07 2007
++++ ./bfd/Makefile.in  Tue Oct 23 22:41:31 2007
 @@ -458,6 +458,8 @@
        coff-apollo.lo \
        coff-arm.lo \
        coff-h8300.c \
        coff-h8500.c \
        coff-i386.c \
-@@ -1556,13 +1560,13 @@
- bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in
-       @echo "creating $@"
-       @bfd_version=`echo "$(VERSION)" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
--      bfd_version_string="\"$(VERSION)\"" ;\
-+      bfd_version_string="\"$(VERSION) + coff-avr-patch (20050630)\"" ;\
-       bfd_soversion="$(VERSION)" ;\
-       bfd_version_package="\"$(PKGVERSION)\"" ;\
-       report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
-       if test "x$(RELEASE)" = x ; then \
-         bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
--        bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
-+        bfd_version_string="\"$(VERSION).$${bfd_version_date} + coff-avr-patch (20050630)\"" ;\
-         bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
-       fi ;\
-       sed -e "s,@bfd_version@,$$bfd_version," \
 @@ -1766,6 +1770,12 @@
    coff-m68k.c $(INCDIR)/hashtab.h $(INCDIR)/coff/m68k.h \
    $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
  coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
    $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/coff/h8300.h \
    $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
---- binutils-2.18.orig/bfd/coff-avr.c  Thu Jan  1 01:00:00 1970
-+++ binutils-2.18/bfd/coff-avr.c       Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/coff-avr.c ./bfd/coff-avr.c
+--- ../binutils-2.18.orig/bfd/coff-avr.c       Thu Jan  1 01:00:00 1970
++++ ./bfd/coff-avr.c   Tue Oct 23 22:18:44 2007
 @@ -0,0 +1,613 @@
 +/* BFD back-end for Atmel AVR COFF files.
 +   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2003
 +
 +  COFF_SWAP_TABLE
 +};
---- binutils-2.18.orig/bfd/coff-ext-avr.c      Thu Jan  1 01:00:00 1970
-+++ binutils-2.18/bfd/coff-ext-avr.c   Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/coff-ext-avr.c ./bfd/coff-ext-avr.c
+--- ../binutils-2.18.orig/bfd/coff-ext-avr.c   Thu Jan  1 01:00:00 1970
++++ ./bfd/coff-ext-avr.c       Tue Oct 23 22:18:44 2007
 @@ -0,0 +1,428 @@
 +/* BFD back-end for Atmel AVR "extended" COFF files.
 +   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2003
 +
 +  COFF_SWAP_TABLE
 +};
---- binutils-2.18.orig/bfd/coffcode.h  Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/coffcode.h       Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/coffcode.h ./bfd/coffcode.h
+--- ../binutils-2.18.orig/bfd/coffcode.h       Tue Oct 23 21:44:07 2007
++++ ./bfd/coffcode.h   Tue Oct 23 22:18:44 2007
 @@ -1,3 +1,4 @@
 +
  /* Support for the generic parts of most COFF variants, for BFD.
            case C_ULABEL:      /* Undefined label.  */
            case C_USTATIC:     /* Undefined static.  */
  #ifndef COFF_WITH_PE
---- binutils-2.18.orig/bfd/coffgen.c   Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/coffgen.c        Tue Oct 23 23:07:23 2007
+diff -Nur ../binutils-2.18.orig/bfd/coffgen.c ./bfd/coffgen.c
+--- ../binutils-2.18.orig/bfd/coffgen.c        Tue Oct 23 21:44:07 2007
++++ ./bfd/coffgen.c    Tue Oct 23 23:07:23 2007
 @@ -687,6 +687,20 @@
              if (last_file != NULL)
                last_file->n_value = native_index;
    new->native = bfd_zalloc (abfd, amt);
    if (!new->native)
      return NULL;
---- binutils-2.18.orig/bfd/coffswap.h  Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/coffswap.h       Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/coffswap.h ./bfd/coffswap.h
+--- ../binutils-2.18.orig/bfd/coffswap.h       Tue Oct 23 21:44:07 2007
++++ ./bfd/coffswap.h   Tue Oct 23 22:18:44 2007
 @@ -383,7 +383,11 @@
                  void * ext1,
                  int type,
            }
          else
            memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
---- binutils-2.18.orig/bfd/config.bfd  Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/config.bfd       Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/config.bfd ./bfd/config.bfd
+--- ../binutils-2.18.orig/bfd/config.bfd       Tue Oct 23 21:44:07 2007
++++ ./bfd/config.bfd   Tue Oct 23 22:18:44 2007
 @@ -327,6 +327,7 @@
  
    avr-*-*)
      ;;
  
    bfin-*-*)
---- binutils-2.18.orig/bfd/configure   Tue Oct 23 21:44:09 2007
-+++ binutils-2.18/bfd/configure        Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/configure ./bfd/configure
+--- ../binutils-2.18.orig/bfd/configure        Tue Oct 23 21:44:09 2007
++++ ./bfd/configure    Tue Oct 23 22:18:44 2007
 @@ -19034,6 +19034,8 @@
      armpe_little_vec)         tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
      armpei_big_vec)           tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
      b_out_vec_big_host)               tb="$tb bout.lo aout32.lo" ;;
      b_out_vec_little_host)    tb="$tb bout.lo aout32.lo" ;;
      bfd_efi_app_ia32_vec)     tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
---- binutils-2.18.orig/bfd/configure.in        Tue Oct 23 21:44:07 2007
-+++ binutils-2.18/bfd/configure.in     Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/configure.in ./bfd/configure.in
+--- ../binutils-2.18.orig/bfd/configure.in     Tue Oct 23 21:44:07 2007
++++ ./bfd/configure.in Tue Oct 23 22:18:44 2007
 @@ -612,6 +612,8 @@
      armpe_little_vec)         tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
      armpei_big_vec)           tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
      b_out_vec_big_host)               tb="$tb bout.lo aout32.lo" ;;
      b_out_vec_little_host)    tb="$tb bout.lo aout32.lo" ;;
      bfd_efi_app_ia32_vec)     tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
---- binutils-2.18.orig/bfd/targets.c   Tue Oct 23 21:44:09 2007
-+++ binutils-2.18/bfd/targets.c        Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/bfd/targets.c ./bfd/targets.c
+--- ../binutils-2.18.orig/bfd/targets.c        Tue Oct 23 21:44:09 2007
++++ ./bfd/targets.c    Tue Oct 23 22:18:44 2007
 @@ -558,6 +558,8 @@
  extern const bfd_target armpe_little_vec;
  extern const bfd_target armpei_big_vec;
        &b_out_vec_big_host,
        &b_out_vec_little_host,
        &bfd_efi_app_ia32_vec,
---- binutils-2.18.orig/include/coff/avr.h      Thu Jan  1 01:00:00 1970
-+++ binutils-2.18/include/coff/avr.h   Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/include/coff/avr.h ./include/coff/avr.h
+--- ../binutils-2.18.orig/include/coff/avr.h   Thu Jan  1 01:00:00 1970
++++ ./include/coff/avr.h       Tue Oct 23 22:18:44 2007
 @@ -0,0 +1,110 @@
 +/* coff information for Atmel AVR.
 +   
 +
 +#define RELOC struct external_reloc
 +#define RELSZ 10
---- binutils-2.18.orig/include/coff/internal.h Tue Oct 23 21:44:43 2007
-+++ binutils-2.18/include/coff/internal.h      Tue Oct 23 22:18:44 2007
+diff -Nur ../binutils-2.18.orig/include/coff/internal.h ./include/coff/internal.h
+--- ../binutils-2.18.orig/include/coff/internal.h      Tue Oct 23 21:44:43 2007
++++ ./include/coff/internal.h  Tue Oct 23 22:18:44 2007
 @@ -630,6 +630,8 @@
  
  };
index 64ffa456e7b0283f7e2a5be583bbd598652eebad..4d23340ac0416f5a19e30e9e7712dff14ff341ad 100644 (file)
@@ -47,7 +47,7 @@ AVR specific only
  static int show_version = 0;
  static int show_help = 0;
  static int show_totals = 0;
-@@ -63,6 +83,156 @@ static bfd_size_type total_textsize;
+@@ -63,6 +83,163 @@ static bfd_size_type total_textsize;
  /* Program exit status.  */
  static int return_code = 0;
  
@@ -80,122 +80,129 @@ AVR specific only
 +
 +avr_device_t avr[] =
 +{
-+      {"atmega2560",  AVR256K, AVR8K,  AVR4K},
-+      {"atmega2561",  AVR256K, AVR8K,  AVR4K},
++      {"atmega2560",    AVR256K, AVR8K,  AVR4K},
++      {"atmega2561",    AVR256K, AVR8K,  AVR4K},
++      {"atxmega256a3",  AVR256K, AVR8K,  AVR4K},
++      {"atxmega256a3b", AVR256K, AVR8K,  AVR4K},
++      {"atxmega256a3v", AVR256K, AVR8K,  AVR4K},
 +
-+      {"at43usb320",  AVR128K, 608UL,    0},
-+      {"at90can128",  AVR128K, AVR4K,  AVR4K},
-+      {"at90usb1286", AVR128K, AVR8K,  AVR4K},
-+      {"at90usb1287", AVR128K, AVR8K,  AVR4K},
-+      {"atmega128",   AVR128K, AVR4K,  AVR4K},
-+      {"atmega1280",  AVR128K, AVR8K,  AVR4K},
-+      {"atmega1281",  AVR128K, AVR8K,  AVR4K},
-+      {"atmega1284P", AVR128K, AVR16K, AVR4K},
-+      {"atmega103",   AVR128K, 4000UL,   AVR4K},
-+      {"atxmega128a1",AVR128K, AVR8K,  AVR2K},
++      {"at43usb320",    AVR128K, 608UL,    0},
++      {"at90can128",    AVR128K, AVR4K,  AVR4K},
++      {"at90usb1286",   AVR128K, AVR8K,  AVR4K},
++      {"at90usb1287",   AVR128K, AVR8K,  AVR4K},
++      {"atmega128",     AVR128K, AVR4K,  AVR4K},
++      {"atmega1280",    AVR128K, AVR8K,  AVR4K},
++      {"atmega1281",    AVR128K, AVR8K,  AVR4K},
++      {"atmega1284P",   AVR128K, AVR16K, AVR4K},
++      {"atmega103",     AVR128K, 4000UL,   AVR4K},
++      {"atxmega128a1",  AVR128K, AVR8K,  AVR2K},
++      {"atxmega128a3",  AVR128K, AVR16K,  AVR2K},
 +
-+      {"at90can64",   AVR64K,  AVR4K,  AVR2K},
-+      {"at90usb646",  AVR64K,  AVR4K,  AVR2K},
-+      {"at90usb647",  AVR64K,  AVR4K,  AVR2K},
-+      {"atmega64",    AVR64K,  AVR4K,  AVR2K},
-+      {"atmega640",   AVR64K,  AVR8K,  AVR4K},
-+      {"atmega644",   AVR64K,  AVR4K,  AVR2K},
-+      {"atmega644p",  AVR64K,  AVR4K,  AVR2K},
-+      {"atmega645",   AVR64K,  AVR4K,  AVR2K},
-+      {"atmega6450",  AVR64K,  AVR4K,  AVR2K},
-+      {"atmega649",   AVR64K,  AVR4K,  AVR2K},
-+      {"atmega6490",  AVR64K,  AVR4K,  AVR2K},
-+      {"atxmega64a1", AVR64K,  AVR4K,  AVR2K},
++      {"at90can64",     AVR64K,  AVR4K,  AVR2K},
++      {"at90usb646",    AVR64K,  AVR4K,  AVR2K},
++      {"at90usb647",    AVR64K,  AVR4K,  AVR2K},
++      {"atmega64",      AVR64K,  AVR4K,  AVR2K},
++      {"atmega640",     AVR64K,  AVR8K,  AVR4K},
++      {"atmega644",     AVR64K,  AVR4K,  AVR2K},
++      {"atmega644p",    AVR64K,  AVR4K,  AVR2K},
++      {"atmega645",     AVR64K,  AVR4K,  AVR2K},
++      {"atmega6450",    AVR64K,  AVR4K,  AVR2K},
++      {"atmega649",     AVR64K,  AVR4K,  AVR2K},
++      {"atmega6490",    AVR64K,  AVR4K,  AVR2K},
++      {"atxmega64a1",   AVR64K,  AVR4K,  AVR2K},
++      {"atxmega64a3",   AVR64K,  AVR4K,  AVR2K},
 +
-+      {"atmega406",   AVR40K,  AVR512, AVR2K},
++      {"atmega406",     AVR40K,  AVR2K, AVR512},
 +
-+      {"at90can32",   AVR32K,  AVR2K,  AVR1K},
-+      {"at94k",       AVR32K,  AVR4K,  0},
-+      {"atmega32",    AVR32K,  AVR2K,  AVR1K},
-+      {"atmega323",   AVR32K,  AVR2K,  AVR1K},
-+      {"atmega324p",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega325",   AVR32K,  AVR2K,  AVR1K},
-+      {"atmega325p",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega3250",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega3250p", AVR32K,  AVR2K,  AVR1K},
-+      {"atmega328p",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega329",   AVR32K,  AVR2K,  AVR1K},
-+      {"atmega329p",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega3290",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega3290p", AVR32K,  AVR2K,  AVR1K},
-+      {"atmega32hvb", AVR32K,  AVR2K,  AVR1K},
-+      {"atmega32c1",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega32m1",  AVR32K,  AVR2K,  AVR1K},
-+      {"atmega32u4",  AVR32K,  2560UL, AVR1K},
++      {"at90can32",     AVR32K,  AVR2K,  AVR1K},
++      {"at94k",         AVR32K,  AVR4K,  0},
++      {"atmega32",      AVR32K,  AVR2K,  AVR1K},
++      {"atmega323",     AVR32K,  AVR2K,  AVR1K},
++      {"atmega324p",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega325",     AVR32K,  AVR2K,  AVR1K},
++      {"atmega325p",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega3250",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega3250p",   AVR32K,  AVR2K,  AVR1K},
++      {"atmega328p",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega329",     AVR32K,  AVR2K,  AVR1K},
++      {"atmega329p",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega3290",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega3290p",   AVR32K,  AVR2K,  AVR1K},
++      {"atmega32hvb",   AVR32K,  AVR2K,  AVR1K},
++      {"atmega32c1",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega32m1",    AVR32K,  AVR2K,  AVR1K},
++      {"atmega32u4",    AVR32K,  2560UL, AVR1K},
++      {"atmega32u6",    AVR32K,  2560UL, AVR1K},
 +
-+      {"at43usb355",  AVR24K,  1120,   0},
++      {"at43usb355",    AVR24K,  1120,   0},
 +
-+      {"at76c711",    AVR16K,  AVR2K,  0},
-+      {"at90pwm216",  AVR16K,  AVR1K,  AVR512},
-+      {"at90pwm316",  AVR16K,  AVR1K,  AVR512},
-+      {"at90usb162",  AVR16K,  AVR512, AVR512},
-+      {"atmega16",    AVR16K,  AVR1K,  AVR512},
-+      {"atmega161",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega162",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega163",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega164",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega164p",  AVR16K,  AVR1K,  AVR512},
-+      {"atmega165",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega165p",  AVR16K,  AVR1K,  AVR512},
-+      {"atmega168",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega168p",  AVR16K,  AVR1K,  AVR512},
-+      {"atmega169",   AVR16K,  AVR1K,  AVR512},
-+      {"atmega169p",  AVR16K,  AVR1K,  AVR512},
-+      {"attiny167",   AVR16K,  AVR512, AVR512},
++      {"at76c711",      AVR16K,  AVR2K,  0},
++      {"at90pwm216",    AVR16K,  AVR1K,  AVR512},
++      {"at90pwm316",    AVR16K,  AVR1K,  AVR512},
++      {"at90usb162",    AVR16K,  AVR512, AVR512},
++      {"atmega16",      AVR16K,  AVR1K,  AVR512},
++      {"atmega161",     AVR16K,  AVR1K,  AVR512},
++      {"atmega162",     AVR16K,  AVR1K,  AVR512},
++      {"atmega163",     AVR16K,  AVR1K,  AVR512},
++      {"atmega164",     AVR16K,  AVR1K,  AVR512},
++      {"atmega164p",    AVR16K,  AVR1K,  AVR512},
++      {"atmega165",     AVR16K,  AVR1K,  AVR512},
++      {"atmega165p",    AVR16K,  AVR1K,  AVR512},
++      {"atmega168",     AVR16K,  AVR1K,  AVR512},
++      {"atmega168p",    AVR16K,  AVR1K,  AVR512},
++      {"atmega169",     AVR16K,  AVR1K,  AVR512},
++      {"atmega169p",    AVR16K,  AVR1K,  AVR512},
++      {"atmega16u4",    AVR16K,  1280UL, AVR512},
++      {"attiny167",     AVR16K,  AVR512, AVR512},
 +
-+      {"at90c8534",   AVR8K,   352,    AVR512},
-+      {"at90pwm1",    AVR8K,   AVR512, AVR512},
-+      {"at90pwm2",    AVR8K,   AVR512, AVR512},
-+      {"at90pwm2b",   AVR8K,   AVR512, AVR512},
-+      {"at90pwm3",    AVR8K,   AVR512, AVR512},
-+      {"at90pwm3b",   AVR8K,   AVR512, AVR512},
-+      {"at90s8515",   AVR8K,   AVR512, AVR512},
-+      {"at90s8535",   AVR8K,   AVR512, AVR512},
-+      {"at90usb82",   AVR8K,   AVR512, AVR512},
-+      {"atmega8",     AVR8K,   AVR1K,  AVR512},
-+      {"atmega8515",  AVR8K,   AVR512, AVR512},
-+      {"atmega8535",  AVR8K,   AVR512, AVR512},
-+      {"atmega88",    AVR8K,   AVR1K,  AVR512},
-+      {"atmega88p",   AVR8K,   AVR1K,  AVR512},
-+      {"attiny84",    AVR8K,   AVR512, AVR512},
-+      {"attiny85",    AVR8K,   AVR512, AVR512},
-+      {"attiny861",   AVR8K,   AVR512, AVR512},
-+      {"attiny88",    AVR8K,   AVR256, AVR64},
++      {"at90c8534",     AVR8K,   352,    AVR512},
++      {"at90pwm1",      AVR8K,   AVR512, AVR512},
++      {"at90pwm2",      AVR8K,   AVR512, AVR512},
++      {"at90pwm2b",     AVR8K,   AVR512, AVR512},
++      {"at90pwm3",      AVR8K,   AVR512, AVR512},
++      {"at90pwm3b",     AVR8K,   AVR512, AVR512},
++      {"at90s8515",     AVR8K,   AVR512, AVR512},
++      {"at90s8535",     AVR8K,   AVR512, AVR512},
++      {"at90usb82",     AVR8K,   AVR512, AVR512},
++      {"atmega8",       AVR8K,   AVR1K,  AVR512},
++      {"atmega8515",    AVR8K,   AVR512, AVR512},
++      {"atmega8535",    AVR8K,   AVR512, AVR512},
++      {"atmega88",      AVR8K,   AVR1K,  AVR512},
++      {"atmega88p",     AVR8K,   AVR1K,  AVR512},
++      {"attiny84",      AVR8K,   AVR512, AVR512},
++      {"attiny85",      AVR8K,   AVR512, AVR512},
++      {"attiny861",     AVR8K,   AVR512, AVR512},
++      {"attiny88",      AVR8K,   AVR256, AVR64},
 +
-+      {"at90s4414",   AVR4K,   352,    AVR256},
-+      {"at90s4433",   AVR4K,   AVR128, AVR256},
-+      {"at90s4434",   AVR4K,   352,    AVR256},
-+      {"atmega48",    AVR4K,   AVR512, AVR256},
-+      {"atmega48p",   AVR4K,   AVR512, AVR256},
-+      {"attiny43u",   AVR4K,   AVR256, AVR64},
-+      {"attiny44",    AVR4K,   AVR256, AVR256},
-+      {"attiny45",    AVR4K,   AVR256, AVR256},
-+      {"attiny461",   AVR4K,   AVR256, AVR256},
-+      {"attiny48",    AVR4K,   AVR256, AVR64},
++      {"at90s4414",     AVR4K,   352,    AVR256},
++      {"at90s4433",     AVR4K,   AVR128, AVR256},
++      {"at90s4434",     AVR4K,   352,    AVR256},
++      {"atmega48",      AVR4K,   AVR512, AVR256},
++      {"atmega48p",     AVR4K,   AVR512, AVR256},
++      {"attiny43u",     AVR4K,   AVR256, AVR64},
++      {"attiny44",      AVR4K,   AVR256, AVR256},
++      {"attiny45",      AVR4K,   AVR256, AVR256},
++      {"attiny461",     AVR4K,   AVR256, AVR256},
++      {"attiny48",      AVR4K,   AVR256, AVR64},
 +
-+      {"at86rf401",   AVR2K,   224,    AVR128},
-+      {"at90s2313",   AVR2K,   AVR128, AVR128},
-+      {"at90s2323",   AVR2K,   AVR128, AVR128},
-+      {"at90s2333",   AVR2K,   224,    AVR128},
-+      {"at90s2343",   AVR2K,   AVR128, AVR128},
-+      {"attiny22",    AVR2K,   224,    AVR128},
-+      {"attiny2313",  AVR2K,   AVR128, AVR128},
-+      {"attiny24",    AVR2K,   AVR128, AVR128},
-+      {"attiny25",    AVR2K,   AVR128, AVR128},
-+      {"attiny26",    AVR2K,   AVR128, AVR128},
-+      {"attiny261",   AVR2K,   AVR128, AVR128},
-+      {"attiny28",    AVR2K,   0,      0},
++      {"at86rf401",     AVR2K,   224,    AVR128},
++      {"at90s2313",     AVR2K,   AVR128, AVR128},
++      {"at90s2323",     AVR2K,   AVR128, AVR128},
++      {"at90s2333",     AVR2K,   224,    AVR128},
++      {"at90s2343",     AVR2K,   AVR128, AVR128},
++      {"attiny22",      AVR2K,   224,    AVR128},
++      {"attiny2313",    AVR2K,   AVR128, AVR128},
++      {"attiny24",      AVR2K,   AVR128, AVR128},
++      {"attiny25",      AVR2K,   AVR128, AVR128},
++      {"attiny26",      AVR2K,   AVR128, AVR128},
++      {"attiny261",     AVR2K,   AVR128, AVR128},
++      {"attiny28",      AVR2K,   0,      0},
 +
-+      {"at90s1200",   AVR1K,   0,      AVR64},
-+      {"attiny11",    AVR1K,   0,      AVR64},
-+      {"attiny12",    AVR1K,   0,      AVR64},
-+      {"attiny13",    AVR1K,   AVR64,  AVR64},
-+      {"attiny15",    AVR1K,   0,      AVR64},
++      {"at90s1200",     AVR1K,   0,      AVR64},
++      {"attiny11",      AVR1K,   0,      AVR64},
++      {"attiny12",      AVR1K,   0,      AVR64},
++      {"attiny13",      AVR1K,   AVR64,  AVR64},
++      {"attiny15",      AVR1K,   0,      AVR64},
 +};
 +
 +static char *avrmcu = NULL;
@@ -204,7 +211,7 @@ AVR specific only
  static char *target = NULL;
  
  /* Forward declarations.  */
-@@ -78,7 +240,8 @@ usage (FILE *stream, int status)
+@@ -78,7 +247,8 @@ usage (FILE *stream, int status)
    fprintf (stream, _(" Displays the sizes of sections inside binary files\n"));
    fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n"));
    fprintf (stream, _(" The options are:\n\
@@ -214,7 +221,7 @@ AVR specific only
    -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n\
    -t        --totals                  Display the total sizes (Berkeley only)\n\
              --common                  Display total size for *COM* syms\n\
-@@ -87,11 +250,7 @@ usage (FILE *stream, int status)
+@@ -87,11 +257,7 @@ usage (FILE *stream, int status)
    -h        --help                    Display this information\n\
    -v        --version                 Display the program's version\n\
  \n"),
@@ -227,7 +234,7 @@ AVR specific only
  );
    list_supported_targets (program_name, stream);
    if (REPORT_BUGS_TO[0] && status == 0)
-@@ -102,6 +261,7 @@ usage (FILE *stream, int status)
+@@ -102,6 +268,7 @@ usage (FILE *stream, int status)
  #define OPTION_FORMAT (200)
  #define OPTION_RADIX (OPTION_FORMAT + 1)
  #define OPTION_TARGET (OPTION_RADIX + 1)
@@ -235,7 +242,7 @@ AVR specific only
  
  static struct option long_options[] =
  {
-@@ -109,6 +269,7 @@ static struct option long_options[] =
+@@ -109,6 +276,7 @@ static struct option long_options[] =
    {"format", required_argument, 0, OPTION_FORMAT},
    {"radix", required_argument, 0, OPTION_RADIX},
    {"target", required_argument, 0, OPTION_TARGET},
@@ -243,7 +250,7 @@ AVR specific only
    {"totals", no_argument, &show_totals, 1},
    {"version", no_argument, &show_version, 1},
    {"help", no_argument, &show_help, 1},
-@@ -140,7 +301,7 @@ main (int argc, char **argv)
+@@ -140,7 +308,7 @@ main (int argc, char **argv)
    bfd_init ();
    set_default_bfd_target ();
  
@@ -252,7 +259,7 @@ AVR specific only
                           (int *) 0)) != EOF)
      switch (c)
        {
-@@ -149,11 +310,15 @@ main (int argc, char **argv)
+@@ -149,11 +317,15 @@ main (int argc, char **argv)
          {
          case 'B':
          case 'b':
@@ -270,7 +277,7 @@ AVR specific only
            break;
          default:
            non_fatal (_("invalid argument to --format: %s"), optarg);
-@@ -161,6 +326,10 @@ main (int argc, char **argv)
+@@ -161,6 +333,10 @@ main (int argc, char **argv)
          }
        break;
  
@@ -281,7 +288,7 @@ AVR specific only
        case OPTION_TARGET:
        target = optarg;
        break;
-@@ -189,11 +358,14 @@ main (int argc, char **argv)
+@@ -189,11 +365,14 @@ main (int argc, char **argv)
        break;
  
        case 'A':
@@ -298,7 +305,7 @@ AVR specific only
        case 'v':
        case 'V':
        show_version = 1;
-@@ -239,7 +411,7 @@ main (int argc, char **argv)
+@@ -239,7 +418,7 @@ main (int argc, char **argv)
      for (; optind < argc;)
        display_file (argv[optind++]);
  
@@ -307,7 +314,7 @@ AVR specific only
      {
        bfd_size_type total = total_textsize + total_datasize + total_bsssize;
  
-@@ -600,13 +772,117 @@ print_sysv_format (bfd *file)
+@@ -600,13 +779,117 @@ print_sysv_format (bfd *file)
    printf ("\n\n");
  }
  
diff --git a/crossavr-binutils-data-origin.patch b/crossavr-binutils-data-origin.patch
new file mode 100644 (file)
index 0000000..8075598
--- /dev/null
@@ -0,0 +1,99 @@
+Not committed.
+Patch by Anatoly Sokolov
+--------------------------------------------------------------------------------
+Index: ld/emulparams/avr1.sh
+===================================================================
+RCS file: /cvs/src/src/ld/emulparams/avr1.sh,v
+retrieving revision 1.2
+diff -u -r1.2 avr1.sh
+--- ld/emulparams/avr1.sh      24 May 2006 07:36:11 -0000      1.2
++++ ld/emulparams/avr1.sh      29 Feb 2008 23:39:37 -0000
+@@ -7,5 +7,6 @@
+ TEMPLATE_NAME=elf32
+ TEXT_LENGTH=8K
++DATA_ORIGIN=0x800060
+ DATA_LENGTH=0
+ EXTRA_EM_FILE=avrelf
+Index: ld/emulparams/avr2.sh
+===================================================================
+RCS file: /cvs/src/src/ld/emulparams/avr2.sh,v
+retrieving revision 1.2
+diff -u -r1.2 avr2.sh
+--- ld/emulparams/avr2.sh      24 May 2006 07:36:11 -0000      1.2
++++ ld/emulparams/avr2.sh      29 Feb 2008 23:39:37 -0000
+@@ -7,5 +7,6 @@
+ TEMPLATE_NAME=elf32
+ TEXT_LENGTH=8K
++DATA_ORIGIN=0x800060
+ DATA_LENGTH=0xffa0
+ EXTRA_EM_FILE=avrelf
+Index: ld/emulparams/avr3.sh
+===================================================================
+RCS file: /cvs/src/src/ld/emulparams/avr3.sh,v
+retrieving revision 1.2
+diff -u -r1.2 avr3.sh
+--- ld/emulparams/avr3.sh      24 May 2006 07:36:11 -0000      1.2
++++ ld/emulparams/avr3.sh      29 Feb 2008 23:39:37 -0000
+@@ -7,5 +7,6 @@
+ TEMPLATE_NAME=elf32
+ TEXT_LENGTH=128K
++DATA_ORIGIN=0x800060
+ DATA_LENGTH=0xffa0
+ EXTRA_EM_FILE=avrelf
+Index: ld/emulparams/avr4.sh
+===================================================================
+RCS file: /cvs/src/src/ld/emulparams/avr4.sh,v
+retrieving revision 1.2
+diff -u -r1.2 avr4.sh
+--- ld/emulparams/avr4.sh      24 May 2006 07:36:11 -0000      1.2
++++ ld/emulparams/avr4.sh      29 Feb 2008 23:39:37 -0000
+@@ -7,5 +7,6 @@
+ TEMPLATE_NAME=elf32
+ TEXT_LENGTH=8K
++DATA_ORIGIN=0x800060
+ DATA_LENGTH=0xffa0
+ EXTRA_EM_FILE=avrelf
+Index: ld/emulparams/avr5.sh
+===================================================================
+RCS file: /cvs/src/src/ld/emulparams/avr5.sh,v
+retrieving revision 1.2
+diff -u -r1.2 avr5.sh
+--- ld/emulparams/avr5.sh      24 May 2006 07:36:11 -0000      1.2
++++ ld/emulparams/avr5.sh      29 Feb 2008 23:39:37 -0000
+@@ -7,5 +7,6 @@
+ TEMPLATE_NAME=elf32
+ TEXT_LENGTH=128K
++DATA_ORIGIN=0x800060
+ DATA_LENGTH=0xffa0
+ EXTRA_EM_FILE=avrelf
+Index: ld/emulparams/avr6.sh
+===================================================================
+RCS file: /cvs/src/src/ld/emulparams/avr6.sh,v
+retrieving revision 1.1
+diff -u -r1.1 avr6.sh
+--- ld/emulparams/avr6.sh      24 May 2006 07:36:11 -0000      1.1
++++ ld/emulparams/avr6.sh      29 Feb 2008 23:39:37 -0000
+@@ -7,5 +7,6 @@
+ TEMPLATE_NAME=elf32
+ TEXT_LENGTH=1024K
+-DATA_LENGTH=0xffa0
++DATA_ORIGIN=0x800200
++DATA_LENGTH=0xfe00
+ EXTRA_EM_FILE=avrelf
+--- ld/scripttempl/avr.sc.orig 2008-02-19 16:36:36.382765500 -0700
++++ ld/scripttempl/avr.sc      2008-02-19 16:41:07.653804500 -0700
+@@ -5,7 +5,7 @@ OUTPUT_ARCH(${ARCH})
+ MEMORY
+ {
+   text      (rx)   : ORIGIN = 0, LENGTH = $TEXT_LENGTH
+-  data      (rw!x) : ORIGIN = 0x800060, LENGTH = $DATA_LENGTH
++  data      (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
+   eeprom    (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
+   fuse      (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
+   lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
diff --git a/crossavr-binutils-new-sections.patch b/crossavr-binutils-new-sections.patch
new file mode 100644 (file)
index 0000000..f91a100
--- /dev/null
@@ -0,0 +1,45 @@
+Not committed.
+--------------------------------------------------------------------------------
+--- ld/scripttempl/avr.sc.old  2007-09-14 06:32:02.437500000 -0600
++++ ld/scripttempl/avr.sc      2007-09-14 06:50:28.854125000 -0600
+@@ -4,9 +4,12 @@ OUTPUT_ARCH(${ARCH})
+ MEMORY
+ {
+-  text   (rx)   : ORIGIN = 0, LENGTH = $TEXT_LENGTH
+-  data   (rw!x) : ORIGIN = 0x800060, LENGTH = $DATA_LENGTH
+-  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
++  text      (rx)   : ORIGIN = 0, LENGTH = $TEXT_LENGTH
++  data      (rw!x) : ORIGIN = 0x800060, LENGTH = $DATA_LENGTH
++  eeprom    (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
++  fuse      (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
++  lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
++  signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
+ }
+ SECTIONS
+@@ -196,6 +199,24 @@ SECTIONS
+     ${RELOCATING+ __eeprom_end = . ; }
+   } ${RELOCATING+ > eeprom}
++  .fuse ${RELOCATING-0}:
++  {
++    KEEP(*(.fuse))
++    KEEP(*(.lfuse))
++    KEEP(*(.hfuse))
++    KEEP(*(.efuse))
++  } ${RELOCATING+ > fuse}
++
++  .lock ${RELOCATING-0}:
++  {
++    KEEP(*(.lock*))
++  } ${RELOCATING+ > lock}
++
++  .signature ${RELOCATING-0}:
++  {
++    KEEP(*(.signature*))
++  } ${RELOCATING+ > signature}
++
+   /* Stabs debugging sections.  */
+   .stab 0 : { *(.stab) }
+   .stabstr 0 : { *(.stabstr) }
diff --git a/crossavr-binutils-xmega.patch b/crossavr-binutils-xmega.patch
new file mode 100644 (file)
index 0000000..7925bb2
--- /dev/null
@@ -0,0 +1,594 @@
+Not committed
+--------------------------------------------------------------------------------
+--- opcodes/avr-dis.c.orig     2007-08-06 13:58:38.000000000 -0600
++++ opcodes/avr-dis.c  2008-04-09 16:37:17.233737600 -0600
+@@ -50,7 +50,7 @@ static const char * comment_start = "0x"
+ static int
+ avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constraint,
+-             char *buf, char *comment, int regs, int *sym, bfd_vma *sym_addr)
++             char *opcode_str, char *buf, char *comment, int regs, int *sym, bfd_vma *sym_addr)
+ {
+   int ok = 1;
+   *sym = 0;
+@@ -118,8 +118,18 @@ avr_operand (unsigned int insn, unsigned
+     case 'z':
+       *buf++ = 'Z';
+-      if (insn & 0x1)
+-      *buf++ = '+';
++
++      /* Check for post-increment. */
++      char *s;
++      for (s = opcode_str; *s; ++s)
++        {
++          if (*s == '+')
++            {
++              *buf++ = '+';
++              break;
++            }
++        }
++
+       *buf = '\0';
+       if (AVR_UNDEF_P (insn))
+       sprintf (comment, _("undefined"));
+@@ -226,6 +236,10 @@ avr_operand (unsigned int insn, unsigned
+       sprintf (comment, "%d", x);
+       }
+       break;
++
++    case 'E':
++      sprintf (buf, "%d", (insn >> 4) & 15);
++      break;
+       
+     case '?':
+       *buf = '\0';
+@@ -331,7 +345,8 @@ print_insn_avr (bfd_vma addr, disassembl
+   if (opcode->name)
+     {
+-      char *op = opcode->constraints;
++      char *constraints = opcode->constraints;
++      char *opcode_str = opcode->opcode;
+       insn2 = 0;
+       ok = 1;
+@@ -342,14 +357,14 @@ print_insn_avr (bfd_vma addr, disassembl
+         cmd_len = 4;
+       }
+-      if (*op && *op != '?')
++      if (*constraints && *constraints != '?')
+       {
+-        int regs = REGISTER_P (*op);
++        int regs = REGISTER_P (*constraints);
+-        ok = avr_operand (insn, insn2, addr, *op, op1, comment1, 0, &sym_op1, &sym_addr1);
++        ok = avr_operand (insn, insn2, addr, *constraints, opcode_str, op1, comment1, 0, &sym_op1, &sym_addr1);
+-        if (ok && *(++op) == ',')
+-          ok = avr_operand (insn, insn2, addr, *(++op), op2,
++        if (ok && *(++constraints) == ',')
++          ok = avr_operand (insn, insn2, addr, *(++constraints), opcode_str, op2,
+                             *comment1 ? comment2 : comment1, regs, &sym_op2, &sym_addr2);
+       }
+     }
+--- gas/config/tc-avr.c.orig   2008-08-29 10:58:02.000000000 -0600
++++ gas/config/tc-avr.c        2008-09-22 14:11:05.345349200 -0600
+@@ -27,20 +27,21 @@
+ struct avr_opcodes_s
+ {
+-  char *        name;
+-  char *        constraints;
+-  int           insn_size;            /* In words.  */
+-  int           isa;
++  char *name;
++  char *constraints;
++  char *opcode;
++  int insn_size;              /* In words.  */
++  int isa;
+   unsigned int  bin_opcode;
+ };
+ #define AVR_INSN(NAME, CONSTR, OPCODE, SIZE, ISA, BIN) \
+-{#NAME, CONSTR, SIZE, ISA, BIN},
++{#NAME, CONSTR, OPCODE, SIZE, ISA, BIN},
+ struct avr_opcodes_s avr_opcodes[] =
+ {
+   #include "opcode/avr.h"
+-  {NULL, NULL, 0, 0, 0}
++  {NULL, NULL, NULL, 0, 0, 0}
+ };
+ const char comment_chars[] = ";";
+@@ -79,6 +80,13 @@ static struct mcu_type_s mcu_types[] =
+   {"avr5",       AVR_ISA_AVR51,   bfd_mach_avr5},
+   {"avr51",      AVR_ISA_AVR51,   bfd_mach_avr51},
+   {"avr6",       AVR_ISA_AVR6,    bfd_mach_avr6},
++  {"avrxmega1",  AVR_ISA_XMEGA,   bfd_mach_avrxmega1},
++  {"avrxmega2",  AVR_ISA_XMEGA,   bfd_mach_avrxmega2},
++  {"avrxmega3",  AVR_ISA_XMEGA,   bfd_mach_avrxmega3},
++  {"avrxmega4",  AVR_ISA_XMEGA,   bfd_mach_avrxmega4},
++  {"avrxmega5",  AVR_ISA_XMEGA,   bfd_mach_avrxmega5},
++  {"avrxmega6",  AVR_ISA_XMEGA,   bfd_mach_avrxmega6},
++  {"avrxmega7",  AVR_ISA_XMEGA,   bfd_mach_avrxmega7},
+   {"at90s1200",  AVR_ISA_1200,    bfd_mach_avr1},
+   {"attiny11",   AVR_ISA_AVR1,    bfd_mach_avr1},
+   {"attiny12",   AVR_ISA_AVR1,    bfd_mach_avr1},
+@@ -185,6 +193,8 @@ static struct mcu_type_s mcu_types[] =
+   {"at90usb1287",AVR_ISA_AVR51,   bfd_mach_avr51},
+   {"atmega2560", AVR_ISA_AVR6,    bfd_mach_avr6},
+   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
++  {"atxmega64a1", AVR_ISA_XMEGA,  bfd_mach_avrxmega5},
++  {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+   {NULL, 0, 0}
+ };
+@@ -789,7 +799,12 @@ avr_operand (struct avr_opcodes_s *opcod
+       if (*str == '+')
+       {
+         ++str;
+-        op_mask |= 1;
++          char *s;
++          for (s = opcode->opcode; *s; ++s)
++            {
++              if (*s == '+')
++                op_mask |= (1 << (15 - (s - opcode->opcode)));
++            }
+       }
+       /* attiny26 can do "lpm" and "lpm r,Z" but not "lpm r,Z+".  */
+@@ -906,6 +921,16 @@ avr_operand (struct avr_opcodes_s *opcod
+       }
+       break;
++    case 'E':
++      {
++      unsigned int x;
++
++      x = avr_get_constant (str, 15);
++      str = input_line_pointer;
++      op_mask |= (x << 4);
++      }
++      break;
++    
+     case '?':
+       break;
+--- include/opcode/avr.h.orig  2008-04-09 14:03:00.411627300 -0600
++++ include/opcode/avr.h       2008-04-09 16:34:28.329060900 -0600
+@@ -30,6 +30,8 @@
+ #define AVR_ISA_BRK   0x0400 /* device has BREAK (on-chip debug) */
+ #define AVR_ISA_EIND  0x0800 /* device has >128K program memory (none yet) */
+ #define AVR_ISA_MOVW  0x1000 /* device has MOVW */
++#define AVR_ISA_SPMX  0x2000 /* device has SPM Z[+] */
++#define AVR_ISA_DES   0x4000 /* device has DES */
+ #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
+ #define AVR_ISA_PWMx  (AVR_ISA_M8   | AVR_ISA_BRK)
+@@ -53,6 +55,8 @@
+ #define AVR_ISA_94K   (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX)
+ #define AVR_ISA_M323  (AVR_ISA_M161 | AVR_ISA_BRK)
+ #define AVR_ISA_M128  (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX)
++#define AVR_ISA_M256  (AVR_ISA_M128 | AVR_ISA_EIND)
++#define AVR_ISA_XMEGA (AVR_ISA_M256 | AVR_ISA_SPMX | AVR_ISA_DES)
+ #define AVR_ISA_ALL   0xFFFF
+@@ -98,6 +102,7 @@
+    L - signed pc relative offset from -2048 to 2047
+    h - absolute code address (call, jmp)
+    S - immediate value from 0 to 7 (S = s << 4)
++   E - immediate value from 0 to 15, shifted left by 4 (des)
+    ? - use this opcode entry if no parameters, else use next opcode entry
+    Order is important - some binary opcodes have more than one name,
+@@ -158,7 +163,8 @@ AVR_INSN (reti, "",    "1001010100011000
+ AVR_INSN (sleep,"",    "1001010110001000", 1, AVR_ISA_1200, 0x9588)
+ AVR_INSN (break,"",    "1001010110011000", 1, AVR_ISA_BRK,  0x9598)
+ AVR_INSN (wdr,  "",    "1001010110101000", 1, AVR_ISA_1200, 0x95a8)
+-AVR_INSN (spm,  "",    "1001010111101000", 1, AVR_ISA_SPM,  0x95e8)
++AVR_INSN (spm,  "?",   "1001010111101000", 1, AVR_ISA_SPM,  0x95e8)
++AVR_INSN (spm,  "z",   "10010101111+1000", 1, AVR_ISA_SPMX, 0x95e8)
+ AVR_INSN (adc,  "r,r", "000111rdddddrrrr", 1, AVR_ISA_1200, 0x1c00)
+ AVR_INSN (add,  "r,r", "000011rdddddrrrr", 1, AVR_ISA_1200, 0x0c00)
+@@ -272,3 +278,6 @@ AVR_INSN (st,   "e,r", "100!001rrrrree-+
+ AVR_INSN (eicall, "",  "1001010100011001", 1, AVR_ISA_EIND, 0x9519)
+ AVR_INSN (eijmp, "",   "1001010000011001", 1, AVR_ISA_EIND, 0x9419)
++/* DES instruction for encryption and decryption */
++AVR_INSN (des,  "E",   "10010100EEEE1011", 1, AVR_ISA_DES,  0x940B)
++
+Index: bfd/archures.c
+===================================================================
+RCS file: /cvs/src/src/bfd/archures.c,v
+retrieving revision 1.130
+diff -a -u -p -r1.130 archures.c
+--- bfd/archures.c     4 Feb 2008 19:15:50 -0000       1.130
++++ bfd/archures.c     14 Feb 2008 18:01:43 -0000
+@@ -352,6 +352,13 @@ DESCRIPTION
+ .#define bfd_mach_avr4                4
+ .#define bfd_mach_avr5                5
+ .#define bfd_mach_avr6                6
++.#define bfd_mach_avrxmega1 101
++.#define bfd_mach_avrxmega2 102
++.#define bfd_mach_avrxmega3 103
++.#define bfd_mach_avrxmega4 104
++.#define bfd_mach_avrxmega5 105
++.#define bfd_mach_avrxmega6 106
++.#define bfd_mach_avrxmega7 107
+ .  bfd_arch_bfin,        {* ADI Blackfin *}
+ .#define bfd_mach_bfin          1
+ .  bfd_arch_cr16,       {* National Semiconductor CompactRISC (ie CR16). *}
+--- bfd/cpu-avr.c.orig 2008-08-08 23:35:12.000000000 -0600
++++ bfd/cpu-avr.c      2008-09-22 14:14:33.969548200 -0600
+@@ -126,7 +126,29 @@ static const bfd_arch_info_type arch_inf
+   N (22, bfd_mach_avr51, "avr:51", FALSE, & arch_info_struct[9]),
+   /* 3-Byte PC.  */
+-  N (22, bfd_mach_avr6, "avr:6", FALSE, NULL)
++  N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]),
++  
++  /* Xmega 1 */
++  N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[11]),
++
++  /* Xmega 2 */
++  N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[12]),
++  
++  /* Xmega 3 */
++  N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[13]),
++  
++  /* Xmega 4 */
++  N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[14]),
++  
++  /* Xmega 5 */
++  N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[15]),
++  
++  /* Xmega 6 */
++  N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[16]),
++  
++  /* Xmega 7 */
++  N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL)
++  
+ };
+ const bfd_arch_info_type bfd_avr_arch =
+--- include/elf/avr.h.orig     2008-08-08 23:35:13.000000000 -0600
++++ include/elf/avr.h  2008-09-22 14:16:17.550944200 -0600
+@@ -40,6 +40,13 @@
+ #define E_AVR_MACH_AVR5 5
+ #define E_AVR_MACH_AVR51 51
+ #define E_AVR_MACH_AVR6 6 
++#define E_AVR_MACH_XMEGA1 101
++#define E_AVR_MACH_XMEGA2 102
++#define E_AVR_MACH_XMEGA3 103
++#define E_AVR_MACH_XMEGA4 104
++#define E_AVR_MACH_XMEGA5 105
++#define E_AVR_MACH_XMEGA6 106
++#define E_AVR_MACH_XMEGA7 107
+ /* Relocations.  */
+ START_RELOC_NUMBERS (elf_avr_reloc_type)
+Index: ld/Makefile.am
+===================================================================
+RCS file: /cvs/src/src/ld/Makefile.am,v
+retrieving revision 1.244
+diff -a -u -p -r1.244 Makefile.am
+--- ld/Makefile.am     24 Oct 2007 04:56:47 -0000      1.244
++++ ld/Makefile.am     14 Feb 2008 18:01:45 -0000
+@@ -138,6 +138,13 @@ ALL_EMULATIONS = \
+       eavr4.o \
+       eavr5.o \
+       eavr6.o \
++      eavrxmega1.o \
++      eavrxmega2.o \
++      eavrxmega3.o \
++      eavrxmega4.o \
++      eavrxmega5.o \
++      eavrxmega6.o \
++      eavrxmega7.o \
+       ecoff_i860.o \
+       ecoff_sparc.o \
+       eelf32_spu.o \
+@@ -622,6 +629,34 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
+   ${GEN_DEPENDS}
+       ${GENSCRIPTS} avr6 "$(tdir_avr2)"
++eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega1 "$(tdir_avr2)"
++eavrxmega2.c: $(srcdir)/emulparams/avrxmega2.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega2 "$(tdir_avr2)"
++eavrxmega3.c: $(srcdir)/emulparams/avrxmega3.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega3 "$(tdir_avr2)"
++eavrxmega4.c: $(srcdir)/emulparams/avrxmega4.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega4 "$(tdir_avr2)"
++eavrxmega5.c: $(srcdir)/emulparams/avrxmega5.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega5 "$(tdir_avr2)"
++eavrxmega6.c: $(srcdir)/emulparams/avrxmega6.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
++eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega7 "$(tdir_avr2)"
+ ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
+   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
+Index: ld/Makefile.in
+===================================================================
+RCS file: /cvs/src/src/ld/Makefile.in,v
+retrieving revision 1.262
+diff -a -u -p -r1.262 Makefile.in
+--- ld/Makefile.in     24 Oct 2007 04:56:47 -0000      1.262
++++ ld/Makefile.in     14 Feb 2008 18:01:45 -0000
+@@ -385,6 +385,13 @@ ALL_EMULATIONS = \
+       eavr4.o \
+       eavr5.o \
+       eavr6.o \
++      eavrxmega1.o \
++      eavrxmega2.o \
++      eavrxmega3.o \
++      eavrxmega4.o \
++      eavrxmega5.o \
++      eavrxmega6.o \
++      eavrxmega7.o \
+       ecoff_i860.o \
+       ecoff_sparc.o \
+       eelf32_spu.o \
+@@ -1448,6 +1455,34 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
+   ${GEN_DEPENDS}
+       ${GENSCRIPTS} avr6 "$(tdir_avr2)"
++eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega1 "$(tdir_avr2)"
++eavrxmega2.c: $(srcdir)/emulparams/avrxmega2.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega2 "$(tdir_avr2)"
++eavrxmega3.c: $(srcdir)/emulparams/avrxmega3.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega3 "$(tdir_avr2)"
++eavrxmega4.c: $(srcdir)/emulparams/avrxmega4.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega4 "$(tdir_avr2)"
++eavrxmega5.c: $(srcdir)/emulparams/avrxmega5.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega5 "$(tdir_avr2)"
++eavrxmega6.c: $(srcdir)/emulparams/avrxmega6.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
++eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
++  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++  ${GEN_DEPENDS}
++      ${GENSCRIPTS} avrxmega7 "$(tdir_avr2)"
+ ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
+   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
+--- ld/configure.tgt.orig      2008-08-08 23:35:13.000000000 -0600
++++ ld/configure.tgt   2008-09-22 14:17:42.272546800 -0600
+@@ -107,7 +107,7 @@ xscale-*-coff)             targ_emul=armcoff ;;
+ xscale-*-elf)         targ_emul=armelf
+                       ;;
+ avr-*-*)              targ_emul=avr2
+-                      targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6"
++                      targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7"
+                       ;;
+ bfin-*-elf)           targ_emul=elf32bfin;
+                       targ_extra_emuls="elf32bfinfd"
+Index: ld/emultempl/avrelf.em
+===================================================================
+RCS file: /cvs/src/src/ld/emultempl/avrelf.em,v
+retrieving revision 1.5
+diff -a -u -p -r1.5 avrelf.em
+--- ld/emultempl/avrelf.em     17 Aug 2007 13:50:48 -0000      1.5
++++ ld/emultempl/avrelf.em     14 Feb 2008 18:01:45 -0000
+@@ -71,8 +71,10 @@ avr_elf_${EMULATION_NAME}_before_allocat
+   gld${EMULATION_NAME}_before_allocation ();
+-  /* We only need stubs for the avr6 family.  */
+-  if (strcmp ("${EMULATION_NAME}","avr6"))
++  /* We only need stubs for avr6, avrxmega6, and avrxmega7. */
++  if (strcmp ("${EMULATION_NAME}","avr6") 
++      && strcmp ("${EMULATION_NAME}","avrxmega6")
++      && strcmp ("${EMULATION_NAME}","avrxmega7") )
+     avr_no_stubs = TRUE;
+   avr_elf_set_global_bfd_parameters ();
+--- /dev/null  2008-02-14 11:03:14.488602600 -0700
++++ ld/emulparams/avrxmega1.sh 2008-02-14 09:08:29.531250000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:101
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- /dev/null  2008-02-14 11:03:18.394502600 -0700
++++ ld/emulparams/avrxmega2.sh 2008-02-14 09:08:29.546875000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:102
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- /dev/null  2008-02-14 11:03:22.050425000 -0700
++++ ld/emulparams/avrxmega3.sh 2008-02-14 09:08:29.546875000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:103
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- /dev/null  2008-02-14 11:03:25.784465400 -0700
++++ ld/emulparams/avrxmega4.sh 2008-02-14 09:08:29.546875000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:104
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- /dev/null  2008-02-14 11:03:25.784465400 -0700
++++ ld/emulparams/avrxmega5.sh 2008-02-14 09:08:29.546875000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:105
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- /dev/null  2008-02-14 11:03:25.784465400 -0700
++++ ld/emulparams/avrxmega6.sh 2008-02-14 09:08:29.546875000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:106
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- /dev/null  2008-02-14 11:03:25.784465400 -0700
++++ ld/emulparams/avrxmega7.sh 2008-02-14 09:08:29.546875000 -0700
+@@ -0,0 +1,12 @@
++ARCH=avr:107
++MACHINE=
++SCRIPT_NAME=avr
++OUTPUT_FORMAT="elf32-avr"
++MAXPAGESIZE=1
++EMBEDDED=yes
++TEMPLATE_NAME=elf32
++
++TEXT_LENGTH=1024K
++DATA_ORIGIN=0x802000
++DATA_LENGTH=0xffa0
++EXTRA_EM_FILE=avrelf
+--- bfd/elf32-avr.c.old        2008-10-14 11:27:16.515625000 -0600
++++ bfd/elf32-avr.c    2008-10-14 11:46:35.453125000 -0600
+@@ -1324,6 +1324,34 @@ bfd_elf_avr_final_write_processing (bfd 
+     case bfd_mach_avr6:
+       val = E_AVR_MACH_AVR6;
+       break;
++
++    case bfd_mach_avrxmega1:
++      val = E_AVR_MACH_XMEGA1;
++      break;
++
++    case bfd_mach_avrxmega2:
++      val = E_AVR_MACH_XMEGA2;
++      break;
++
++    case bfd_mach_avrxmega3:
++      val = E_AVR_MACH_XMEGA3;
++      break;
++
++    case bfd_mach_avrxmega4:
++      val = E_AVR_MACH_XMEGA4;
++      break;
++
++    case bfd_mach_avrxmega5:
++      val = E_AVR_MACH_XMEGA5;
++      break;
++
++    case bfd_mach_avrxmega6:
++      val = E_AVR_MACH_XMEGA6;
++      break;
++
++    case bfd_mach_avrxmega7:
++      val = E_AVR_MACH_XMEGA7;
++      break;
+     }
+   elf_elfheader (abfd)->e_machine = EM_AVR;
+@@ -1386,6 +1414,34 @@ elf32_avr_object_p (bfd *abfd)
+       case E_AVR_MACH_AVR6:
+         e_set = bfd_mach_avr6;
+         break;
++
++      case E_AVR_MACH_XMEGA1:
++        e_set = bfd_mach_avrxmega1;
++        break;
++
++      case E_AVR_MACH_XMEGA2:
++        e_set = bfd_mach_avrxmega2;
++        break;
++
++      case E_AVR_MACH_XMEGA3:
++        e_set = bfd_mach_avrxmega3;
++        break;
++
++      case E_AVR_MACH_XMEGA4:
++        e_set = bfd_mach_avrxmega4;
++        break;
++
++      case E_AVR_MACH_XMEGA5:
++        e_set = bfd_mach_avrxmega5;
++        break;
++
++      case E_AVR_MACH_XMEGA6:
++        e_set = bfd_mach_avrxmega6;
++        break;
++
++      case E_AVR_MACH_XMEGA7:
++        e_set = bfd_mach_avrxmega7;
++        break;
+       }
+     }
+   return bfd_default_set_arch_mach (abfd, bfd_arch_avr,
diff --git a/crossavr-binutils-xmega2.patch b/crossavr-binutils-xmega2.patch
new file mode 100644 (file)
index 0000000..10673b6
--- /dev/null
@@ -0,0 +1,47 @@
+--- gas/config/tc-avr.c.orig   2008-10-29 14:10:04.264816900 -0600
++++ gas/config/tc-avr.c        2008-10-29 15:55:03.798197900 -0600
+@@ -193,7 +193,11 @@ static struct mcu_type_s mcu_types[] =
+   {"at90usb1287",AVR_ISA_AVR51,   bfd_mach_avr51},
+   {"atmega2560", AVR_ISA_AVR6,    bfd_mach_avr6},
+   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
++  {"atxmega64a3", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
+   {"atxmega64a1", AVR_ISA_XMEGA,  bfd_mach_avrxmega5},
++  {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++  {"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++  {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+   {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+   {NULL, 0, 0}
+ };
+@@ -372,6 +376,10 @@ md_show_usage (FILE *stream)
+       "                   avr5  - enhanced AVR core with up to 64K program memory\n"
+       "                   avr51 - enhanced AVR core with up to 128K program memory\n"
+       "                   avr6  - enhanced AVR core with up to 256K program memory\n"
++      "                   avrxmega4 - XMEGA, > 64K, <= 128K FLASH, <= 64K RAM\n"
++      "                   avrxmega5 - XMEGA, > 64K, <= 128K FLASH, > 64K RAM\n"
++      "                   avrxmega6 - XMEGA, > 128K, <= 256K FLASH, <= 64K RAM\n"
++      "                   avrxmega7 - XMEGA, > 128K, <= 256K FLASH, > 64K RAM\n"
+       "                   or immediate microcontroller name.\n"));
+   fprintf (stream,
+       _("  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"
+--- gas/doc/c-avr.texi.orig    2008-08-29 10:58:02.000000000 -0600
++++ gas/doc/c-avr.texi 2008-10-29 15:59:25.299307900 -0600
+@@ -76,6 +76,19 @@ at90can128, at90usb1286, at90usb1287).
+ Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
+ atmega2560, atmega2561).
++Instruction set avrxmega4 is for the XMEGA AVR cor with up to 64K program
++memory space and less than 64K data space (MCU types: atxmega64a3).
++
++Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K program 
++memory space and greater than 64K data space (MCU types: atxmega64a1).
++
++Instruction set avrxmega6 is for the XMEGA AVR core with up to 256K program
++memory space and less than 64K data space (MCU types: atxmega128a3,
++atxmega256a3, atxmega256a3b).
++
++Instruction set avrxmega7 is for the XMEGA AVR core with up to 256K program
++memory space and greater than 64K data space (MCU types: atxmega128a1).
++
+ @cindex @code{-mall-opcodes} command line option, AVR
+ @item -mall-opcodes
+ Accept all AVR opcodes, even if not supported by @code{-mmcu}.
This page took 0.173033 seconds and 4 git commands to generate.