+ int rammax = 0;
+ int eeprommax = 0;
+ asection *section;
-+ bfd_size_type datasize = 0;
-+ bfd_size_type textsize = 0;
-+ bfd_size_type bsssize = 0;
++ bfd_size_type avr_datasize = 0;
++ bfd_size_type avr_textsize = 0;
++ bfd_size_type avr_bsssize = 0;
+ bfd_size_type bootloadersize = 0;
+ bfd_size_type noinitsize = 0;
+ bfd_size_type eepromsize = 0;
+ }
+
+ if ((section = bfd_get_section_by_name (file, ".data")) != NULL)
-+ datasize = bfd_section_size (file, section);
++ avr_datasize = bfd_section_size (file, section);
+ if ((section = bfd_get_section_by_name (file, ".text")) != NULL)
-+ textsize = bfd_section_size (file, section);
++ avr_textsize = bfd_section_size (file, section);
+ if ((section = bfd_get_section_by_name (file, ".bss")) != NULL)
-+ bsssize = bfd_section_size (file, section);
++ avr_bsssize = bfd_section_size (file, section);
+ if ((section = bfd_get_section_by_name (file, ".bootloader")) != NULL)
+ bootloadersize = bfd_section_size (file, section);
+ if ((section = bfd_get_section_by_name (file, ".noinit")) != NULL)
+ if ((section = bfd_get_section_by_name (file, ".eeprom")) != NULL)
+ eepromsize = bfd_section_size (file, section);
+
-+ bfd_size_type text = textsize + datasize + bootloadersize;
-+ bfd_size_type data = datasize + bsssize + noinitsize;
++ bfd_size_type text = avr_textsize + avr_datasize + bootloadersize;
++ bfd_size_type data = avr_datasize + avr_bsssize + noinitsize;
+ bfd_size_type eeprom = eepromsize;
+
+ printf ("AVR Memory Usage\n"
-diff -ruwN bfd/Makefile.am bfd/Makefile.am
---- bfd/Makefile.am 2009-10-16 17:17:44.000000000 +0530
-+++ bfd/Makefile.am 2010-03-11 12:13:23.069283600 +0530
-@@ -228,6 +228,8 @@
- coff-apollo.lo \
- coff-arm.lo \
- coff-aux.lo \
-+ coff-avr.lo \
-+ coff-ext-avr.lo \
- coff-go32.lo \
- coff-h8300.lo \
- coff-h8500.lo \
-@@ -411,6 +413,8 @@
- coff-apollo.c \
- coff-arm.c \
- coff-aux.c \
-+ coff-avr.c \
-+ coff-ext-avr.c \
- coff-go32.c \
- coff-h8300.c \
- coff-h8500.c \
-diff -ruwN bfd/Makefile.in bfd/Makefile.in
---- bfd/Makefile.in 2009-10-16 17:17:48.000000000 +0530
-+++ bfd/Makefile.in 2010-03-11 12:13:23.084906900 +0530
-@@ -524,6 +524,8 @@
- coff-apollo.lo \
- coff-arm.lo \
- coff-aux.lo \
-+ coff-avr.lo \
-+ coff-ext-avr.lo \
- coff-go32.lo \
- coff-h8300.lo \
- coff-h8500.lo \
-@@ -707,6 +709,8 @@
- coff-apollo.c \
- coff-arm.c \
- coff-aux.c \
-+ coff-avr.c \
-+ coff-ext-avr.c \
- coff-go32.c \
- coff-h8300.c \
- coff-h8500.c \
-diff -ruwN bfd/coff-avr.c bfd/coff-avr.c
+diff -Naurp bfd/coff-avr.c bfd/coff-avr.c
--- bfd/coff-avr.c 1970-01-01 05:30:00.000000000 +0530
-+++ bfd/coff-avr.c 2010-03-11 12:13:23.100530200 +0530
++++ bfd/coff-avr.c 2011-11-30 12:59:26.000000000 +0530
@@ -0,0 +1,613 @@
+/* BFD back-end for Atmel AVR COFF files.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2003
+ 0, /* leading char */
+ '/', /* ar_pad_char */
+ 15, /* ar_max_namelen */
-+
++ 0, /* match_priority */
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
+
+ COFF_SWAP_TABLE
+};
-diff -ruwN bfd/coff-ext-avr.c bfd/coff-ext-avr.c
+diff -Naurp bfd/coffcode.h bfd/coffcode.h
+--- bfd/coffcode.h 2011-08-17 06:09:38.000000000 +0530
++++ bfd/coffcode.h 2011-11-30 12:54:36.000000000 +0530
+@@ -1,3 +1,4 @@
++
+ /* Support for the generic parts of most COFF variants, for BFD.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@@ -1968,6 +1969,17 @@ coff_mkobject (bfd * abfd)
+ coff->relocbase = 0;
+ coff->local_toc_sym_map = 0;
+
++ /* These members communicate important constants about the symbol
++ table to GDB's symbol-reading code. These `constants'
++ unfortunately vary among coff implementations... */
++ coff->local_n_btmask = N_BTMASK;
++ coff->local_n_btshft = N_BTSHFT;
++ coff->local_n_tmask = N_TMASK;
++ coff->local_n_tshift = N_TSHIFT;
++ coff->local_symesz = bfd_coff_symesz (abfd);
++ coff->local_auxesz = bfd_coff_auxesz (abfd);
++ coff->local_linesz = bfd_coff_linesz (abfd);
++
+ /* make_abs_section(abfd);*/
+
+ return TRUE;
+@@ -1992,17 +2004,6 @@ coff_mkobject_hook (bfd * abfd,
+
+ coff->sym_filepos = internal_f->f_symptr;
+
+- /* These members communicate important constants about the symbol
+- table to GDB's symbol-reading code. These `constants'
+- unfortunately vary among coff implementations... */
+- coff->local_n_btmask = N_BTMASK;
+- coff->local_n_btshft = N_BTSHFT;
+- coff->local_n_tmask = N_TMASK;
+- coff->local_n_tshift = N_TSHIFT;
+- coff->local_symesz = bfd_coff_symesz (abfd);
+- coff->local_auxesz = bfd_coff_auxesz (abfd);
+- coff->local_linesz = bfd_coff_linesz (abfd);
+-
+ coff->timestamp = internal_f->f_timdat;
+
+ obj_raw_syment_count (abfd) =
+@@ -2134,6 +2135,11 @@ coff_set_arch_mach_hook (bfd *abfd, void
+ }
+ break;
+ #endif
++#ifdef AVRMAGIC
++ case AVRMAGIC:
++ arch = bfd_arch_avr;
++ break;
++#endif
+ #ifdef MC68MAGIC
+ case MC68MAGIC:
+ case M68MAGIC:
+@@ -2913,6 +2919,13 @@ coff_set_flags (bfd * abfd,
+ return TRUE;
+ #endif
+
++#ifdef AVRMAGIC
++ case bfd_arch_avr:
++ *magicp = AVRMAGIC;
++ return TRUE;
++ break;
++#endif
++
+ #ifdef PPCMAGIC
+ case bfd_arch_powerpc:
+ *magicp = PPCMAGIC;
+@@ -3741,6 +3754,11 @@ coff_write_object_contents (bfd * abfd)
+ section.s_page = 0;
+ #endif
+
++#ifdef AVR
++ /* AVR uses s_paddr the way GNU uses s_vaddr, and effectively
++ ignores s_vaddr. */
++ section.s_paddr = current->vma;
++#endif
+ #ifdef COFF_WITH_PE
+ section.s_paddr = 0;
+ #endif
+@@ -4087,6 +4105,17 @@ coff_write_object_contents (bfd * abfd)
+ internal_a.magic = ZMAGIC;
+ #endif
+
++#ifdef AVR
++ /* a.out is a dummy for non-extended COFF */
++ internal_a.magic = AVRAOUTMAGIC;
++ /* Upper nibble of f_flags must be set for historical reasons.
++ The upper byte remains blank on coff-avr, so undo the F_AR32WR
++ setting performed above. */
++ internal_f.f_flags |= F_JUNK;
++ internal_f.f_flags &= ~F_UNUSED;
++#define __A_MAGIC_SET__
++#endif /* AVR */
++
+ #if defined(PPC_PE)
+ #define __A_MAGIC_SET__
+ internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
+@@ -4149,8 +4178,16 @@ coff_write_object_contents (bfd * abfd)
+ #endif
+ }
+
++#ifdef AVR_EXT_COFF
++ /* Note that we do not set F_PTRINFO because the GNU toolchain
++ doesn't provide any information about the target of a pointer,
++ so we cannot derive which section our pointer target would be
++ in. */
++ internal_a.vstamp = F_FULLPATHS | F_STRUCTINFO;
++#else
+ /* FIXME: Does anybody ever set this to another value? */
+ internal_a.vstamp = 0;
++#endif
+
+ /* Now should write relocs, strings, syms. */
+ obj_sym_filepos (abfd) = sym_base;
+@@ -4708,6 +4745,10 @@ coff_slurp_symbol_table (bfd * abfd)
+ /* In PE, 0x69 (105) denotes a weak external symbol. */
+ case C_NT_WEAK:
+ #endif
++#ifdef AVR
++ /* Some AVR COFF compilers handle EXTDEF like EXT. */
++ case C_EXTDEF: /* external definition */
++#endif
+ switch (coff_classify_symbol (abfd, &src->u.syment))
+ {
+ case COFF_SYMBOL_GLOBAL:
+@@ -4940,7 +4981,9 @@ coff_slurp_symbol_table (bfd * abfd)
+ break;
+ #endif
+ /* Fall through. */
++#if !defined(AVR)
+ case C_EXTDEF: /* External definition. */
++#endif
+ case C_ULABEL: /* Undefined label. */
+ case C_USTATIC: /* Undefined static. */
+ #ifndef COFF_WITH_PE
+diff -Naurp bfd/coff-ext-avr.c bfd/coff-ext-avr.c
--- bfd/coff-ext-avr.c 1970-01-01 05:30:00.000000000 +0530
-+++ bfd/coff-ext-avr.c 2010-03-11 12:13:23.131776800 +0530
++++ bfd/coff-ext-avr.c 2011-11-30 15:09:15.000000000 +0530
@@ -0,0 +1,428 @@
+/* BFD back-end for Atmel AVR "extended" COFF files.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2003
+ 0, /* leading char */
+ '/', /* ar_pad_char */
+ 15, /* ar_max_namelen */
-+
++ 0, /* match_priority */
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
+
+ COFF_SWAP_TABLE
+};
-diff -ruwN bfd/coffcode.h bfd/coffcode.h
---- bfd/coffcode.h 2009-09-10 17:17:12.000000000 +0530
-+++ bfd/coffcode.h 2010-03-11 12:13:23.147400100 +0530
-@@ -1,3 +1,4 @@
-+
- /* Support for the generic parts of most COFF variants, for BFD.
- Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-@@ -1910,6 +1911,17 @@
- coff->relocbase = 0;
- coff->local_toc_sym_map = 0;
-
-+ /* These members communicate important constants about the symbol
-+ table to GDB's symbol-reading code. These `constants'
-+ unfortunately vary among coff implementations... */
-+ coff->local_n_btmask = N_BTMASK;
-+ coff->local_n_btshft = N_BTSHFT;
-+ coff->local_n_tmask = N_TMASK;
-+ coff->local_n_tshift = N_TSHIFT;
-+ coff->local_symesz = bfd_coff_symesz (abfd);
-+ coff->local_auxesz = bfd_coff_auxesz (abfd);
-+ coff->local_linesz = bfd_coff_linesz (abfd);
-+
- /* make_abs_section(abfd);*/
-
- return TRUE;
-@@ -1934,17 +1946,6 @@
-
- coff->sym_filepos = internal_f->f_symptr;
-
-- /* These members communicate important constants about the symbol
-- table to GDB's symbol-reading code. These `constants'
-- unfortunately vary among coff implementations... */
-- coff->local_n_btmask = N_BTMASK;
-- coff->local_n_btshft = N_BTSHFT;
-- coff->local_n_tmask = N_TMASK;
-- coff->local_n_tshift = N_TSHIFT;
-- coff->local_symesz = bfd_coff_symesz (abfd);
-- coff->local_auxesz = bfd_coff_auxesz (abfd);
-- coff->local_linesz = bfd_coff_linesz (abfd);
--
- coff->timestamp = internal_f->f_timdat;
-
- obj_raw_syment_count (abfd) =
-@@ -2076,6 +2077,11 @@
- }
- break;
- #endif
-+#ifdef AVRMAGIC
-+ case AVRMAGIC:
-+ arch = bfd_arch_avr;
-+ break;
-+#endif
- #ifdef MC68MAGIC
- case MC68MAGIC:
- case M68MAGIC:
-@@ -2871,6 +2877,13 @@
- return TRUE;
- #endif
-
-+#ifdef AVRMAGIC
-+ case bfd_arch_avr:
-+ *magicp = AVRMAGIC;
-+ return TRUE;
-+ break;
-+#endif
-+
- #ifdef PPCMAGIC
- case bfd_arch_powerpc:
- *magicp = PPCMAGIC;
-@@ -3698,6 +3711,11 @@
- section.s_page = 0;
- #endif
-
-+#ifdef AVR
-+ /* AVR uses s_paddr the way GNU uses s_vaddr, and effectively
-+ ignores s_vaddr. */
-+ section.s_paddr = current->vma;
-+#endif
- #ifdef COFF_WITH_PE
- section.s_paddr = 0;
- #endif
-@@ -4042,6 +4060,17 @@
- internal_a.magic = ZMAGIC;
- #endif
-
-+#ifdef AVR
-+ /* a.out is a dummy for non-extended COFF */
-+ internal_a.magic = AVRAOUTMAGIC;
-+ /* Upper nibble of f_flags must be set for historical reasons.
-+ The upper byte remains blank on coff-avr, so undo the F_AR32WR
-+ setting performed above. */
-+ internal_f.f_flags |= F_JUNK;
-+ internal_f.f_flags &= ~F_UNUSED;
-+#define __A_MAGIC_SET__
-+#endif /* AVR */
-+
- #if defined(PPC_PE)
- #define __A_MAGIC_SET__
- internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
-@@ -4109,8 +4138,16 @@
- #endif
- }
-
-+#ifdef AVR_EXT_COFF
-+ /* Note that we do not set F_PTRINFO because the GNU toolchain
-+ doesn't provide any information about the target of a pointer,
-+ so we cannot derive which section our pointer target would be
-+ in. */
-+ internal_a.vstamp = F_FULLPATHS | F_STRUCTINFO;
-+#else
- /* FIXME: Does anybody ever set this to another value? */
- internal_a.vstamp = 0;
-+#endif
-
- /* Now should write relocs, strings, syms. */
- obj_sym_filepos (abfd) = sym_base;
-@@ -4668,6 +4705,10 @@
- /* In PE, 0x69 (105) denotes a weak external symbol. */
- case C_NT_WEAK:
- #endif
-+#ifdef AVR
-+ /* Some AVR COFF compilers handle EXTDEF like EXT. */
-+ case C_EXTDEF: /* external definition */
-+#endif
- switch (coff_classify_symbol (abfd, &src->u.syment))
- {
- case COFF_SYMBOL_GLOBAL:
-@@ -4891,7 +4932,9 @@
- && src->u.syment.n_scnum == 0)
- break;
- /* Fall through. */
-+#if !defined(AVR)
- case C_EXTDEF: /* External definition. */
-+#endif
- case C_ULABEL: /* Undefined label. */
- case C_USTATIC: /* Undefined static. */
- #ifndef COFF_WITH_PE
-diff -ruwN bfd/coffgen.c bfd/coffgen.c
---- bfd/coffgen.c 2009-09-10 17:17:12.000000000 +0530
-+++ bfd/coffgen.c 2010-03-11 12:13:23.163023400 +0530
-@@ -699,6 +699,20 @@
+diff -Naurp bfd/coffgen.c bfd/coffgen.c
+--- bfd/coffgen.c 2011-08-17 06:09:39.000000000 +0530
++++ bfd/coffgen.c 2011-11-30 12:54:36.000000000 +0530
+@@ -699,6 +699,20 @@ coff_renumber_symbols (bfd *bfd_ptr, int
if (last_file != NULL)
last_file->n_value = native_index;
last_file = &(s->u.syment);
}
else
/* Modify the symbol values according to their section and
-@@ -827,6 +841,20 @@
+@@ -827,6 +841,20 @@ coff_fix_symbol_name (bfd *abfd,
{
if (name_length <= filnmlen)
strncpy (auxent->x_file.x_fname, name, filnmlen);
else
{
auxent->x_file.x_n.x_offset = *string_size_p + STRING_SIZE_SIZE;
-@@ -1272,6 +1300,10 @@
+@@ -1277,6 +1305,10 @@ coff_write_symbols (bfd *abfd)
if (bfd_bwrite (".file", (bfd_size_type) 6, abfd) != 6)
return FALSE;
}
maxlen = bfd_coff_filnmlen (abfd);
}
else
-@@ -1710,14 +1742,27 @@
+@@ -1715,14 +1747,27 @@ coff_get_normalized_symtab (bfd *abfd)
{
/* Ordinary short filename, put into memory anyway. The
Microsoft PE tools sometimes store a filename in
else
internal_ptr->u.syment._n._n_n._n_offset =
((bfd_hostptr_t)
-@@ -1823,9 +1868,9 @@
+@@ -1828,9 +1873,9 @@ coff_bfd_make_debug_symbol (bfd *abfd,
if (new_symbol == NULL)
return NULL;
new_symbol->native = (combined_entry_type *) bfd_zalloc (abfd, amt);
if (!new_symbol->native)
return NULL;
-diff -ruwN bfd/coffswap.h bfd/coffswap.h
---- bfd/coffswap.h 2009-09-07 13:45:15.000000000 +0530
-+++ bfd/coffswap.h 2010-03-11 12:13:23.178646700 +0530
-@@ -383,7 +383,11 @@
+diff -Naurp bfd/coffswap.h bfd/coffswap.h
+--- bfd/coffswap.h 2009-09-05 13:26:22.000000000 +0530
++++ bfd/coffswap.h 2011-11-30 12:54:36.000000000 +0530
+@@ -383,7 +383,11 @@ coff_swap_aux_in (bfd *abfd,
void * ext1,
int type,
int in_class,
int numaux,
void * in1)
{
-@@ -409,9 +413,13 @@
+@@ -409,9 +413,13 @@ coff_swap_aux_in (bfd *abfd,
#else
if (numaux > 1)
{
}
else
memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
-diff -ruwN bfd/config.bfd bfd/config.bfd
---- bfd/config.bfd 2009-08-06 23:08:00.000000000 +0530
-+++ bfd/config.bfd 2010-03-11 12:13:23.178646700 +0530
-@@ -339,6 +339,7 @@
+diff -Naurp bfd/config.bfd bfd/config.bfd
+--- bfd/config.bfd 2011-07-29 04:05:13.000000000 +0530
++++ bfd/config.bfd 2011-11-30 12:54:36.000000000 +0530
+@@ -300,6 +300,7 @@ case "${targ}" in
avr-*-*)
targ_defvec=bfd_elf32_avr_vec
;;
bfin-*-*)
-diff -ruwN bfd/configure bfd/configure
---- bfd/configure 2009-10-16 17:17:47.000000000 +0530
-+++ bfd/configure 2010-03-11 12:13:23.209893300 +0530
-@@ -14782,6 +14782,8 @@
+diff -Naurp bfd/configure bfd/configure
+--- bfd/configure 2011-11-21 17:25:48.000000000 +0530
++++ bfd/configure 2011-11-30 12:54:36.000000000 +0530
+@@ -15175,6 +15175,8 @@ do
armpe_little_vec) tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
armpei_big_vec) tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
armpei_little_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_pei_ia64_vec) tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
-diff -ruwN bfd/configure.in bfd/configure.in
---- bfd/configure.in 2009-10-16 17:17:44.000000000 +0530
-+++ bfd/configure.in 2010-03-11 12:13:23.209893300 +0530
-@@ -670,6 +670,8 @@
+diff -Naurp bfd/configure.in bfd/configure.in
+--- bfd/configure.in 2011-11-21 17:25:46.000000000 +0530
++++ bfd/configure.in 2011-11-30 12:54:36.000000000 +0530
+@@ -674,6 +674,8 @@ do
armpe_little_vec) tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
armpei_big_vec) tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
armpei_little_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_pei_ia64_vec) tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
-diff -ruwN bfd/targets.c bfd/targets.c
---- bfd/targets.c 2009-09-10 17:17:13.000000000 +0530
-+++ bfd/targets.c 2010-03-11 12:13:23.225516600 +0530
-@@ -564,6 +564,8 @@
+diff -Naurp bfd/Makefile.am bfd/Makefile.am
+--- bfd/Makefile.am 2011-11-21 17:25:46.000000000 +0530
++++ bfd/Makefile.am 2011-11-30 12:54:36.000000000 +0530
+@@ -238,6 +238,8 @@ BFD32_BACKENDS = \
+ coff-apollo.lo \
+ coff-arm.lo \
+ coff-aux.lo \
++ coff-avr.lo \
++ coff-ext-avr.lo \
+ coff-go32.lo \
+ coff-h8300.lo \
+ coff-h8500.lo \
+@@ -422,6 +424,8 @@ BFD32_BACKENDS_CFILES = \
+ coff-apollo.c \
+ coff-arm.c \
+ coff-aux.c \
++ coff-avr.c \
++ coff-ext-avr.c \
+ coff-go32.c \
+ coff-h8300.c \
+ coff-h8500.c \
+diff -Naurp bfd/Makefile.in bfd/Makefile.in
+--- bfd/Makefile.in 2011-11-21 17:25:49.000000000 +0530
++++ bfd/Makefile.in 2011-11-30 12:54:36.000000000 +0530
+@@ -538,6 +538,8 @@ BFD32_BACKENDS = \
+ coff-apollo.lo \
+ coff-arm.lo \
+ coff-aux.lo \
++ coff-avr.lo \
++ coff-ext-avr.lo \
+ coff-go32.lo \
+ coff-h8300.lo \
+ coff-h8500.lo \
+@@ -722,6 +724,8 @@ BFD32_BACKENDS_CFILES = \
+ coff-apollo.c \
+ coff-arm.c \
+ coff-aux.c \
++ coff-avr.c \
++ coff-ext-avr.c \
+ coff-go32.c \
+ coff-h8300.c \
+ coff-h8500.c \
+diff -Naurp bfd/targets.c bfd/targets.c
+--- bfd/targets.c 2011-08-17 06:09:38.000000000 +0530
++++ bfd/targets.c 2011-11-30 12:54:36.000000000 +0530
+@@ -587,6 +587,8 @@ extern const bfd_target armpe_big_vec;
extern const bfd_target armpe_little_vec;
extern const bfd_target armpei_big_vec;
extern const bfd_target armpei_little_vec;
extern const bfd_target b_out_vec_big_host;
extern const bfd_target b_out_vec_little_host;
extern const bfd_target bfd_pei_ia64_vec;
-@@ -890,6 +892,8 @@
+@@ -941,6 +943,8 @@ static const bfd_target * const _bfd_tar
&armpe_little_vec,
&armpei_big_vec,
&armpei_little_vec,
&b_out_vec_big_host,
&b_out_vec_little_host,
#ifdef BFD64
-diff -ruwN binutils/Makefile.am binutils/Makefile.am
---- binutils/Makefile.am 2009-09-09 13:43:23.000000000 +0530
-+++ binutils/Makefile.am 2010-03-11 12:13:23.241139900 +0530
-@@ -101,7 +101,7 @@
- resbin.c rescoff.c resrc.c resres.c \
- size.c srconv.c stabs.c strings.c sysdump.c \
- unwind-ia64.c version.c \
-- windres.c winduni.c wrstabs.c \
-+ windres.c winduni.c wrcoff.c wrstabs.c \
- windmc.c mclex.c
-
- GENERATED_CFILES = \
-@@ -109,7 +109,7 @@
- defparse.c deflex.c nlmheader.c rcparse.c mcparse.c
-
- DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
--WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
-+WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c wrcoff.c
-
- # Code shared by all the binutils.
- BULIBS = bucomm.c version.c filemode.c
-diff -ruwN binutils/Makefile.in binutils/Makefile.in
---- binutils/Makefile.in 2009-09-09 13:43:23.000000000 +0530
-+++ binutils/Makefile.in 2010-03-11 12:13:23.241139900 +0530
-@@ -126,7 +126,7 @@
- nm_new_OBJECTS = $(am_nm_new_OBJECTS)
- nm_new_LDADD = $(LDADD)
- am__objects_2 = rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \
-- ieee.$(OBJEXT) rdcoff.$(OBJEXT)
-+ ieee.$(OBJEXT) rdcoff.$(OBJEXT) wrcoff.$(OBJEXT)
- am__objects_3 = $(am__objects_2) wrstabs.$(OBJEXT)
- am_objcopy_OBJECTS = objcopy.$(OBJEXT) not-strip.$(OBJEXT) \
- rename.$(OBJEXT) $(am__objects_3) $(am__objects_1)
-@@ -439,7 +439,7 @@
- resbin.c rescoff.c resrc.c resres.c \
- size.c srconv.c stabs.c strings.c sysdump.c \
- unwind-ia64.c version.c \
-- windres.c winduni.c wrstabs.c \
-+ windres.c winduni.c wrcoff.c wrstabs.c \
- windmc.c mclex.c
-
- GENERATED_CFILES = \
-@@ -447,7 +447,7 @@
- defparse.c deflex.c nlmheader.c rcparse.c mcparse.c
-
- DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
--WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
-+WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c wrcoff.c
-
- # Code shared by all the binutils.
- BULIBS = bucomm.c version.c filemode.c
-diff -ruwN binutils/bucomm.c binutils/bucomm.c
---- binutils/bucomm.c 2009-09-14 17:13:26.000000000 +0530
-+++ binutils/bucomm.c 2010-03-11 12:13:23.256763200 +0530
-@@ -550,6 +550,32 @@
+diff -Naurp binutils/bucomm.c binutils/bucomm.c
+--- binutils/bucomm.c 2011-03-25 23:21:10.000000000 +0530
++++ binutils/bucomm.c 2011-11-30 12:54:36.000000000 +0530
+@@ -561,6 +561,32 @@ parse_vma (const char *s, const char *ar
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. */
-diff -ruwN binutils/bucomm.h binutils/bucomm.h
+ error message is printed and (off_t) -1 is returned. */
+diff -Naurp binutils/bucomm.h binutils/bucomm.h
--- binutils/bucomm.h 2009-09-02 12:52:31.000000000 +0530
-+++ binutils/bucomm.h 2010-03-11 12:13:23.272386500 +0530
-@@ -58,6 +58,8 @@
++++ binutils/bucomm.h 2011-11-30 12:54:36.000000000 +0530
+@@ -58,6 +58,8 @@ bfd_vma parse_vma (const char *, const c
off_t get_file_size (const char *);
extern char *program_name;
/* filemode.c */
-diff -ruwN binutils/budbg.h binutils/budbg.h
+diff -Naurp binutils/budbg.h binutils/budbg.h
--- binutils/budbg.h 2009-09-02 12:52:31.000000000 +0530
-+++ binutils/budbg.h 2010-03-11 12:13:23.272386500 +0530
-@@ -52,8 +52,11 @@
++++ binutils/budbg.h 2011-11-30 12:54:36.000000000 +0530
+@@ -52,8 +52,11 @@ extern bfd_boolean parse_ieee (void *, b
extern bfd_boolean write_ieee_debugging_info (bfd *, void *);
+ (bfd *abfd, void *, long *symcountp, asymbol ***);
+
#endif
-diff -ruwN binutils/debug.c binutils/debug.c
---- binutils/debug.c 2009-09-14 17:13:26.000000000 +0530
-+++ binutils/debug.c 2010-03-11 12:13:23.288009800 +0530
-@@ -31,6 +31,7 @@
- #include <assert.h>
+diff -Naurp binutils/debug.c binutils/debug.c
+--- binutils/debug.c 2011-03-01 00:02:51.000000000 +0530
++++ binutils/debug.c 2011-11-30 12:54:36.000000000 +0530
+@@ -32,6 +32,7 @@
#include "bfd.h"
#include "libiberty.h"
+ #include "filenames.h"
+#include "bucomm.h"
#include "debug.h"
/* Global information we keep for debugging. A pointer to this
-@@ -552,6 +553,19 @@
+@@ -553,6 +554,19 @@ struct debug_type_real_list
struct debug_type_s *t;
};
/* Local functions. */
static void debug_error (const char *);
-@@ -588,6 +602,11 @@
+@@ -589,6 +603,11 @@ static bfd_boolean debug_type_samep
(struct debug_handle *, struct debug_type_s *, struct debug_type_s *);
static bfd_boolean debug_class_type_samep
(struct debug_handle *, struct debug_type_s *, struct debug_type_s *);
\f
/* Issue an error message. */
-@@ -680,6 +699,8 @@
+@@ -681,6 +700,8 @@ debug_set_filename (void *handle, const
if (name == NULL)
name = "";
nfile = (struct debug_file *) xmalloc (sizeof *nfile);
memset (nfile, 0, sizeof *nfile);
-@@ -720,6 +741,8 @@
+@@ -721,6 +742,8 @@ debug_start_source (void *handle, const
if (name == NULL)
name = "";
if (info->current_unit == NULL)
{
-@@ -3370,3 +3393,69 @@
+@@ -3369,3 +3392,70 @@ debug_class_type_samep (struct debug_han
return TRUE;
}
+ size_t olen;
+
+ if (xlat_basename)
-+ return bu_basename (oname);
++ return bu_basename (oname);
+
+ olen = strlen (oname);
+ for (xlp = xlat; xlp; xlp = xlp->next)
+ {
+ if (xlp->olen > olen)
-+ /* This cannot be our turn. */
-+ continue;
++ /* This cannot be our turn. */
++ continue;
+ /* Since we have pre-computed all our length values to avoid
-+ repetitively computing them, just use memcmp() since it's
-+ faster than strcmp(). */
++ repetitively computing them, just use memcmp() since it's
++ faster than strcmp(). */
+ if (memcmp (xlp->old, oname, xlp->olen) == 0)
-+ {
-+ cp = (char *) xmalloc (olen + xlp->nlen - xlp->olen + 1);
-+ memcpy (cp, xlp->newstr, xlp->nlen);
-+ memcpy (cp + xlp->nlen, oname + xlp->olen,
-+ olen - xlp->olen + 1);
-+ return cp;
-+ }
++ {
++ cp = (char *) xmalloc (olen + xlp->nlen - xlp->olen + 1);
++ memcpy (cp, xlp->newstr, xlp->nlen);
++ memcpy (cp + xlp->nlen, oname + xlp->olen,
++ olen - xlp->olen + 1);
++ return cp;
++ }
+ }
+
+ /* Not found, pass the original name on. */
+ return oname;
+}
-diff -ruwN binutils/debug.h binutils/debug.h
---- binutils/debug.h 2009-09-14 17:13:26.000000000 +0530
-+++ binutils/debug.h 2010-03-11 12:13:23.288009800 +0530
-@@ -440,6 +440,12 @@
++
+diff -Naurp binutils/debug.h binutils/debug.h
+--- binutils/debug.h 2009-09-10 19:10:44.000000000 +0530
++++ binutils/debug.h 2011-11-30 12:54:36.000000000 +0530
+@@ -441,6 +441,12 @@ extern bfd_boolean debug_set_filename (v
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.
-diff -ruwN binutils/doc/objcopy.1 binutils/doc/objcopy.1
---- binutils/doc/objcopy.1 2009-10-16 17:22:19.000000000 +0530
-+++ binutils/doc/objcopy.1 2010-03-11 12:13:23.303633100 +0530
-@@ -202,6 +202,8 @@
+diff -Naurp binutils/doc/objcopy.1 binutils/doc/objcopy.1
+--- binutils/doc/objcopy.1 2011-11-21 17:10:06.000000000 +0530
++++ binutils/doc/objcopy.1 2011-11-30 12:54:36.000000000 +0530
+@@ -195,6 +195,8 @@ objcopy [\fB\-F\fR \fIbfdname\fR|\fB\-\-
[\fB\-\-readonly\-text\fR]
[\fB\-\-pure\fR]
[\fB\-\-impure\fR]
[\fB\-\-file\-alignment=\fR\fInum\fR]
[\fB\-\-heap=\fR\fIsize\fR]
[\fB\-\-image\-base=\fR\fIaddress\fR]
-@@ -885,6 +887,23 @@
- It can also be a useful way of reducing the size of a \fB\-\-just\-symbols\fR
- linker input file.
- .RE
+@@ -911,6 +913,23 @@ Compress \s-1DWARF\s0 debug sections usi
+ .IP "\fB\-\-decompress\-debug\-sections\fR" 4
+ .IX Item "--decompress-debug-sections"
+ Decompress \s-1DWARF\s0 debug sections using zlib.
+.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
.IP "\fB\-V\fR" 4
.IX Item "-V"
.PD 0
-diff -ruwN binutils/objcopy.c binutils/objcopy.c
---- binutils/objcopy.c 2009-09-14 17:13:26.000000000 +0530
-+++ binutils/objcopy.c 2010-03-11 12:13:23.319256400 +0530
+diff -Naurp binutils/Makefile.am binutils/Makefile.am
+--- binutils/Makefile.am 2011-08-08 05:57:15.000000000 +0530
++++ binutils/Makefile.am 2011-11-30 12:54:36.000000000 +0530
+@@ -107,7 +107,7 @@ CFILES = \
+ resbin.c rescoff.c resrc.c resres.c \
+ size.c srconv.c stabs.c strings.c sysdump.c \
+ unwind-ia64.c elfedit.c version.c \
+- windres.c winduni.c wrstabs.c \
++ windres.c winduni.c wrcoff.c wrstabs.c \
+ windmc.c mclex.c
+
+ GENERATED_CFILES = \
+@@ -115,7 +115,7 @@ GENERATED_CFILES = \
+ defparse.c deflex.c nlmheader.c rcparse.c mcparse.c
+
+ DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
+-WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
++WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c wrcoff.c
+
+ # Extra object files for objdump
+ OBJDUMP_PRIVATE_OFILES = @OBJDUMP_PRIVATE_OFILES@
+diff -Naurp binutils/Makefile.in binutils/Makefile.in
+--- binutils/Makefile.in 2011-08-08 05:57:15.000000000 +0530
++++ binutils/Makefile.in 2011-11-30 12:54:36.000000000 +0530
+@@ -134,7 +134,7 @@ am_nm_new_OBJECTS = nm.$(OBJEXT) $(am__o
+ nm_new_OBJECTS = $(am_nm_new_OBJECTS)
+ nm_new_LDADD = $(LDADD)
+ am__objects_3 = rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \
+- ieee.$(OBJEXT) rdcoff.$(OBJEXT)
++ ieee.$(OBJEXT) rdcoff.$(OBJEXT) wrcoff.$(OBJEXT)
+ am__objects_4 = $(am__objects_3) wrstabs.$(OBJEXT)
+ am_objcopy_OBJECTS = objcopy.$(OBJEXT) not-strip.$(OBJEXT) \
+ rename.$(OBJEXT) $(am__objects_4) $(am__objects_1)
+@@ -476,7 +476,7 @@ CFILES = \
+ resbin.c rescoff.c resrc.c resres.c \
+ size.c srconv.c stabs.c strings.c sysdump.c \
+ unwind-ia64.c elfedit.c version.c \
+- windres.c winduni.c wrstabs.c \
++ windres.c winduni.c wrcoff.c wrstabs.c \
+ windmc.c mclex.c
+
+ GENERATED_CFILES = \
+@@ -484,7 +484,7 @@ GENERATED_CFILES = \
+ defparse.c deflex.c nlmheader.c rcparse.c mcparse.c
+
+ DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
+-WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
++WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c wrcoff.c
+
+ # Code shared by all the binutils.
+ BULIBS = bucomm.c version.c filemode.c
+diff -Naurp binutils/objcopy.c binutils/objcopy.c
+--- binutils/objcopy.c 2011-09-16 09:53:17.000000000 +0530
++++ binutils/objcopy.c 2011-11-30 12:54:36.000000000 +0530
@@ -32,6 +32,7 @@
#include "elf-bfd.h"
#include <sys/stat.h>
#include "coff/internal.h"
#include "libcoff.h"
-@@ -297,6 +298,8 @@
+@@ -308,6 +309,8 @@ enum command_line_switch
OPTION_IMPURE,
OPTION_EXTRACT_SYMBOL,
OPTION_REVERSE_BYTES,
OPTION_FILE_ALIGNMENT,
OPTION_HEAP,
OPTION_IMAGE_BASE,
-@@ -346,10 +349,12 @@
+@@ -358,10 +361,12 @@ static struct option copy_options[] =
{"adjust-section-vma", required_argument, 0, OPTION_CHANGE_SECTION_ADDRESS},
{"adjust-warnings", no_argument, 0, OPTION_CHANGE_WARNINGS},
{"alt-machine-code", required_argument, 0, OPTION_ALT_MACH_CODE},
{"change-section-address", required_argument, 0, OPTION_CHANGE_SECTION_ADDRESS},
{"change-section-lma", required_argument, 0, OPTION_CHANGE_SECTION_LMA},
{"change-section-vma", required_argument, 0, OPTION_CHANGE_SECTION_VMA},
-@@ -543,6 +548,8 @@
+@@ -554,6 +559,8 @@ copy_usage (FILE *stream, int exit_statu
--prefix-alloc-sections <prefix>\n\
Add <prefix> to start of every allocatable\n\
section name\n\
--file-alignment <num> Set PE file alignment to <num>\n\
--heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n\
<commit>\n\
-@@ -999,6 +1006,8 @@
+@@ -1031,6 +1038,8 @@ filter_symbols (bfd *abfd, bfd *obfd, as
asymbol **from = isyms, **to = osyms;
long src_count = 0, dst_count = 0;
int relocatable = (abfd->flags & (EXEC_P | DYNAMIC)) == 0;
for (; src_count < symcount; src_count++)
{
-@@ -1099,7 +1108,8 @@
+@@ -1131,7 +1140,8 @@ filter_symbols (bfd *abfd, bfd *obfd, as
|| bfd_is_com_section (bfd_get_section (sym)))
keep = strip_symbols != STRIP_UNNEEDED;
else if ((flags & BSF_DEBUGGING) != 0) /* Debugging symbol. */
&& strip_symbols != STRIP_UNNEEDED
&& ! convert_debugging);
else if (bfd_coff_get_comdat_section (abfd, bfd_get_section (sym)))
-@@ -2817,6 +2827,10 @@
+@@ -2883,6 +2893,10 @@ write_debugging_info (bfd *obfd, void *d
return write_ieee_debugging_info (obfd, dhandle);
if (bfd_get_flavour (obfd) == bfd_target_coff_flavour
|| bfd_get_flavour (obfd) == bfd_target_elf_flavour)
{
bfd_byte *syms, *strings;
-@@ -3641,6 +3655,30 @@
+@@ -3735,6 +3749,30 @@ copy_main (int argc, char *argv[])
prefix_alloc_sections_string = optarg;
break;
case OPTION_READONLY_TEXT:
bfd_flags_to_set |= WP_TEXT;
bfd_flags_to_clear &= ~WP_TEXT;
-diff -ruwN binutils/rdcoff.c binutils/rdcoff.c
+diff -Naurp binutils/rdcoff.c binutils/rdcoff.c
--- binutils/rdcoff.c 2009-09-02 12:52:32.000000000 +0530
-+++ binutils/rdcoff.c 2010-03-11 12:13:23.334879700 +0530
-@@ -82,6 +82,9 @@
++++ binutils/rdcoff.c 2011-11-30 12:54:36.000000000 +0530
+@@ -82,6 +82,9 @@ struct coff_types
struct coff_slots *slots;
/* Basic types. */
debug_type basic[T_MAX + 1];
};
static debug_type *coff_get_slot (struct coff_types *, int);
-@@ -101,6 +104,7 @@
+@@ -101,6 +104,7 @@ static bfd_boolean parse_coff_symbol
(bfd *, struct coff_types *, asymbol *, long, struct internal_syment *,
void *, debug_type, bfd_boolean);
static bfd_boolean external_coff_symbol_p (int sym_class);
\f
/* Return the slot for a type. */
-@@ -271,8 +275,7 @@
+@@ -271,8 +275,7 @@ parse_coff_base_type (bfd *abfd, struct
break;
case T_INT:
name = "int";
break;
-@@ -287,7 +290,7 @@
+@@ -287,7 +290,7 @@ parse_coff_base_type (bfd *abfd, struct
break;
case T_DOUBLE:
name = "double";
break;
-@@ -307,7 +310,7 @@
+@@ -307,7 +310,7 @@ parse_coff_base_type (bfd *abfd, struct
break;
case T_UINT:
name = "unsigned int";
break;
-@@ -565,6 +568,8 @@
+@@ -565,6 +568,8 @@ parse_coff_symbol (bfd *abfd ATTRIBUTE_U
case C_WEAKEXT:
case C_EXT:
if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
DEBUG_GLOBAL, bfd_asymbol_value (sym)))
return FALSE;
-@@ -580,9 +585,9 @@
+@@ -580,9 +585,9 @@ parse_coff_symbol (bfd *abfd ATTRIBUTE_U
break;
case C_REG:
return FALSE;
break;
-@@ -596,9 +601,9 @@
+@@ -596,9 +601,9 @@ parse_coff_symbol (bfd *abfd ATTRIBUTE_U
break;
case C_REGPARM:
return FALSE;
break;
-@@ -648,6 +653,28 @@
+@@ -648,6 +653,28 @@ external_coff_symbol_p (int sym_class)
return FALSE;
}
/* This is the main routine. It looks through all the symbols and
handles them. */
-@@ -674,6 +701,17 @@
+@@ -674,6 +701,17 @@ parse_coff (bfd *abfd, asymbol **syms, l
types.slots = NULL;
for (i = 0; i <= T_MAX; i++)
types.basic[i] = DEBUG_TYPE_NULL;
next_c_file = -1;
fnname = NULL;
-@@ -734,7 +772,6 @@
+@@ -734,7 +772,6 @@ parse_coff (bfd *abfd, asymbol **syms, l
switch (syment.n_sclass)
{
case C_EFCN:
case C_ULABEL:
case C_USTATIC:
case C_LINE:
-@@ -757,6 +794,8 @@
+@@ -757,6 +794,8 @@ parse_coff (bfd *abfd, asymbol **syms, l
/* Fall through. */
case C_WEAKEXT:
case C_EXT:
if (ISFCN (syment.n_type))
{
fnname = name;
-diff -ruwN binutils/wrcoff.c binutils/wrcoff.c
+diff -Naurp binutils/wrcoff.c binutils/wrcoff.c
--- binutils/wrcoff.c 1970-01-01 05:30:00.000000000 +0530
-+++ binutils/wrcoff.c 2010-03-11 12:13:23.366126300 +0530
++++ binutils/wrcoff.c 2011-11-30 12:54:36.000000000 +0530
@@ -0,0 +1,3410 @@
+/* wrcoff.c -- Generate (AVR) COFF debugging information
+ Copyright 2003 Free Software Foundation, Inc.
+ if (ehash->nfixidxs != 0)
+ {
+ coff_symbol_type *symp;
-+ unsigned i;
++ unsigned tmp_i1;
+
-+ for (i = 0; i < ehash->nfixidxs; i++)
++ for (tmp_i1 = 0; tmp_i1 < ehash->nfixidxs; tmp_i1++)
+ {
+ combined_entry_type *np;
+
-+ symp = (coff_symbol_type *) info->syms[ehash->fixidxs[i]];
++ symp = (coff_symbol_type *) info->syms[ehash->fixidxs[tmp_i1]];
+ symp->native->u.syment.n_type &= ~N_BTMASK;
+ symp->native->u.syment.n_type |= T_ENUM;
+
+ if (shash->nfixidxs != 0)
+ {
+ coff_symbol_type *symp;
-+ unsigned i;
++ unsigned tmp_i2;
+
-+ for (i = 0; i < shash->nfixidxs; i++)
++ for (tmp_i2 = 0; tmp_i2 < shash->nfixidxs; tmp_i2++)
+ {
+ combined_entry_type *np;
+
-+ symp = (coff_symbol_type *) info->syms[shash->fixidxs[i]];
++ symp = (coff_symbol_type *) info->syms[shash->fixidxs[tmp_i2]];
+ symp->native->u.syment.n_type &= ~N_BTMASK;
+ if (tst->u.ts_struct.isstruct)
+ symp->native->u.syment.n_type |= T_STRUCT;
+
+ return TRUE;
+}
-diff -ruwN include/coff/avr.h include/coff/avr.h
+diff -Naurp include/coff/avr.h include/coff/avr.h
--- include/coff/avr.h 1970-01-01 05:30:00.000000000 +0530
-+++ include/coff/avr.h 2010-03-11 12:13:23.381749600 +0530
++++ include/coff/avr.h 2011-11-30 12:54:36.000000000 +0530
@@ -0,0 +1,110 @@
+/* coff information for Atmel AVR.
+
+
+#define RELOC struct external_reloc
+#define RELSZ 10
-diff -ruwN include/coff/internal.h include/coff/internal.h
---- include/coff/internal.h 2009-09-02 12:51:39.000000000 +0530
-+++ include/coff/internal.h 2010-03-11 12:13:23.381749600 +0530
-@@ -646,6 +646,8 @@
+diff -Naurp include/coff/internal.h include/coff/internal.h
+--- include/coff/internal.h 2011-03-31 13:43:48.000000000 +0530
++++ include/coff/internal.h 2011-11-30 12:54:36.000000000 +0530
+@@ -649,6 +649,8 @@ union internal_auxent
};
+++ /dev/null
-diff -ruwN ld/scripttempl/avr.sc ld/scripttempl/avr.sc
---- ld/scripttempl/avr.sc 2009-10-09 18:42:35.000000000 +0530
-+++ ld/scripttempl/avr.sc 2010-03-11 12:26:00.563046000 +0530
-@@ -7,6 +7,9 @@
- text (rx) : ORIGIN = 0, LENGTH = $TEXT_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
-+ signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
- }
-
- SECTIONS
-@@ -196,6 +199,24 @@
- ${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) }
--- /dev/null
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2011-03-29 23:46:15.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 12:28:16.000000000 +0530
+@@ -24,6 +24,7 @@
+ #include "as.h"
+ #include "safe-ctype.h"
+ #include "subsegs.h"
++#include "dwarf2dbg.h"
+ #include "dw2gencfi.h"
+
+
+@@ -1453,6 +1454,7 @@ md_assemble (char *str)
+
+ dwarf2_emit_insn (0);
+
++ dwarf2_emit_insn (0);
+ /* We used to set input_line_pointer to the result of get_operands,
+ but that is wrong. Our caller assumes we don't change it. */
+ {
+++ /dev/null
-diff -ruwN gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2010-03-11 14:56:16.484109300 +0530
-+++ gas/config/tc-avr.c 2010-03-11 14:58:59.248690500 +0530
-@@ -24,6 +24,7 @@
- #include "as.h"
- #include "safe-ctype.h"
- #include "subsegs.h"
-+#include "dwarf2dbg.h"
-
- struct avr_opcodes_s
- {
-@@ -1368,6 +1369,7 @@
-
- dwarf2_emit_insn (0);
-
-+ dwarf2_emit_insn (0);
- /* We used to set input_line_pointer to the result of get_operands,
- but that is wrong. Our caller assumes we don't change it. */
- {
-diff -ruwN gas/config/tc-avr.h gas/config/tc-avr.h
---- gas/config/tc-avr.h 2010-03-11 14:56:16.484109300 +0530
-+++ gas/config/tc-avr.h 2010-03-11 14:58:59.264313900 +0530
-@@ -147,3 +147,6 @@
-
- /* This target is buggy, and sets fix size too large. */
- #define TC_FX_SIZE_SLACK(FIX) 2
-+
-+/* keep DWARF2_ADDR_SIZE in consistency with C compiler produced information */
-+#define DWARF2_ADDR_SIZE(bfd) 4
-diff -ruwN gas/dwarf2dbg.c gas/dwarf2dbg.c
---- gas/dwarf2dbg.c 2010-03-11 15:06:25.773290700 +0530
-+++ gas/dwarf2dbg.c 2010-03-11 15:08:20.410311300 +0530
-@@ -112,8 +112,11 @@
+diff -Naurp gas/dwarf2dbg.c gas/dwarf2dbg.c
+--- gas/dwarf2dbg.c 2011-11-28 13:04:11.000000000 +0530
++++ gas/dwarf2dbg.c 2011-11-28 16:33:02.000000000 +0530
+@@ -116,8 +116,11 @@
Note: If you want to change this, you'll have to update the
"standard_opcode_lengths" table that is emitted below in
out_debug_line(). */
#ifndef DWARF2_LINE_BASE
/* Minimum line offset in a special line info. opcode. This value
was chosen to give a reasonable range of values. */
-@@ -1439,9 +1442,11 @@
+@@ -1482,9 +1485,11 @@ out_debug_line (segT line_seg)
out_byte (0); /* DW_LNS_set_basic_block */
out_byte (0); /* DW_LNS_const_add_pc */
out_byte (1); /* DW_LNS_fixed_advance_pc */
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2012-01-24 12:19:53.000000000 +0530
-+++ binutils/size.c 2012-01-24 12:17:26.000000000 +0530
-@@ -402,6 +402,7 @@ usage (FILE *stream, int status)
+--- binutils/size.c 2011-12-16 12:25:31.000000000 +0530
++++ binutils/size.c 2011-12-16 12:36:09.000000000 +0530
+@@ -341,6 +341,7 @@ usage (FILE *stream, int status)
fprintf (stream, _(" The options are:\n\
-A|-B|-C --format={sysv|berkeley|avr} Select output style (default is %s)\n\
--mcu=<avrmcu> MCU name for AVR format only\n\
-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\
-@@ -422,6 +423,7 @@ FORMAT_NAME
+@@ -361,6 +362,7 @@ FORMAT_NAME
#define OPTION_RADIX (OPTION_FORMAT + 1)
#define OPTION_TARGET (OPTION_RADIX + 1)
#define OPTION_MCU (OPTION_TARGET + 1)
static struct option long_options[] =
{
-@@ -430,12 +432,37 @@ static struct option long_options[] =
+@@ -369,12 +371,37 @@ static struct option long_options[] =
{"radix", required_argument, 0, OPTION_RADIX},
{"target", required_argument, 0, OPTION_TARGET},
{"mcu", required_argument, 0, 203},
int main (int, char **);
int
-@@ -490,6 +517,10 @@ main (int argc, char **argv)
+@@ -429,6 +456,10 @@ main (int argc, char **argv)
avrmcu = optarg;
break;
target = optarg;
break;
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2012-01-24 12:19:53.000000000 +0530
-+++ gas/config/tc-avr.c 2012-01-24 12:17:26.000000000 +0530
-@@ -392,7 +392,8 @@ static struct hash_control *avr_mod_hash
+--- gas/config/tc-avr.c 2011-12-16 12:30:52.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 12:36:09.000000000 +0530
+@@ -348,7 +348,8 @@ static struct hash_control *avr_mod_hash
#define OPTION_MMCU 'm'
enum options
{
OPTION_NO_SKIP_BUG,
OPTION_NO_WRAP
};
-@@ -400,6 +401,7 @@ enum options
+@@ -356,6 +357,7 @@ enum options
struct option md_longopts[] =
{
{ "mmcu", required_argument, NULL, OPTION_MMCU },
{ "mall-opcodes", no_argument, NULL, OPTION_ALL_OPCODES },
{ "mno-skip-bug", no_argument, NULL, OPTION_NO_SKIP_BUG },
{ "mno-wrap", no_argument, NULL, OPTION_NO_WRAP },
-@@ -504,12 +506,12 @@ md_show_usage (FILE *stream)
- " avrtiny10 - tiny devices with 16 gp registers\n"
+@@ -458,12 +460,12 @@ md_show_usage (FILE *stream)
+ " 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"
}
static void
-@@ -561,6 +563,9 @@ md_parse_option (int c, char *arg)
+@@ -515,6 +517,9 @@ md_parse_option (int c, char *arg)
avr_mcu->name, mcu_types[i].name);
return 1;
}
+++ /dev/null
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-02-08 10:59:27.000000000 -0600
-+++ gas/config/tc-avr.c 2011-02-08 11:01:47.000000000 -0600
-@@ -378,7 +378,7 @@ void
- md_show_usage (FILE *stream)
- {
- fprintf (stream,
-- _("AVR options:\n"
-+ _("AVR Assembler options:\n"
- " -mmcu=[avr-name] select microcontroller variant\n"
- " [avr-name] can be:\n"
- " avr1 - classic AVR core without data RAM\n"
--- /dev/null
+diff -Naurp include/opcode/avr.h include/opcode/avr.h
+--- include/opcode/avr.h 2011-07-01 22:44:03.000000000 +0530
++++ include/opcode/avr.h 2011-12-22 11:56:43.000000000 +0530
+@@ -33,6 +33,7 @@
+ #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_USB 0x8000 /* device has USB */
+
+ #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
+ #define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM)
+@@ -53,6 +54,7 @@
+ #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_XMEGAU (AVR_ISA_XMEGA | AVR_ISA_USB)
+
+ #define AVR_ISA_AVR1 AVR_ISA_TINY1
+ #define AVR_ISA_AVR2 AVR_ISA_2xxx
+@@ -276,6 +278,11 @@ AVR_INSN (fmulsu,"a,a","000000111ddd1rrr
+ AVR_INSN (sts, "i,r", "1001001ddddd0000", 2, AVR_ISA_2xxx, 0x9200)
+ AVR_INSN (lds, "r,i", "1001000ddddd0000", 2, AVR_ISA_2xxx, 0x9000)
+
++AVR_INSN (xch, "z,r", "1001001rrrrr0100", 1, AVR_ISA_XMEGAU, 0x9204)
++AVR_INSN (las, "z,r", "1001001rrrrr0101", 1, AVR_ISA_XMEGAU, 0x9205)
++AVR_INSN (lac, "z,r", "1001001rrrrr0110", 1, AVR_ISA_XMEGAU, 0x9206)
++AVR_INSN (lat, "z,r", "1001001rrrrr0111", 1, AVR_ISA_XMEGAU, 0x9207)
++
+ /* Special case for b+0, `e' must be next entry after `b',
+ b={Y=1,Z=0}, ee={X=11,Y=10,Z=00}, !=1 if -e or e+ or X. */
+ AVR_INSN (ldd, "r,b", "10o0oo0dddddbooo", 1, AVR_ISA_2xxx, 0x8000)
--- /dev/null
+--- bfd/elf32-avr.c 2011-06-02 19:13:14.000000000 +0530
++++ bfd/elf32-avr.c 2012-02-01 19:09:51.000000000 +0530
+@@ -1506,8 +1506,12 @@
+ shrinked_insn_address = (sec->output_section->vma
+ + sec->output_offset + addr - count);
+
+- irelend = elf_section_data (isec)->relocs + isec->reloc_count;
+- for (irel = elf_section_data (isec)->relocs;
++ irel = elf_section_data (isec)->relocs;
++
++ if (NULL == irel)
++ irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, FALSE);
++
++ for (irelend = irel + isec->reloc_count;
+ irel < irelend;
+ irel++)
+ {
+@@ -1564,6 +1568,8 @@
+ /* else...Reference symbol is extern. No need for adjusting
+ the addend. */
+ }
++ if (NULL == elf_section_data (isec)->relocs)
++ free (irelend - isec->reloc_count);
+ }
+ }
+
--- /dev/null
+--- bfd/elf32-avr.c 2012-02-02 15:47:48.000000000 +0530
++++ bfd/elf32-avr.c 2012-02-02 15:50:59.000000000 +0530
+@@ -1655,6 +1655,16 @@ elf32_avr_relax_section (bfd *abfd,
+ Elf_Internal_Sym *isymbuf = NULL;
+ struct elf32_avr_link_hash_table *htab;
+
++ /* If 'shrinkable' is FALSE, do not shrink by deleting bytes while
++ relaxing. Such shrinking can cause issues for the sections such
++ as .vectors and .jumptables. Instead the unused bytes should be
++ filled with nop instructions */
++ bfd_boolean shrinkable = TRUE;
++
++ if (!strcmp (sec->name,".vectors")
++ || !strcmp (sec->name,".jumptables"))
++ shrinkable = FALSE;
++
+ if (link_info->relocatable)
+ (*link_info->callbacks->einfo)
+ (_("%P%F: --relax and -r may not be used together\n"));
+@@ -1811,10 +1821,16 @@ elf32_avr_relax_section (bfd *abfd,
+ /* Compute the distance from this insn to the branch target. */
+ gap = value - dot;
+
+- /* If the distance is within -4094..+4098 inclusive, then we can
+- relax this jump/call. +4098 because the call/jump target
+- will be closer after the relaxation. */
+- if ((int) gap >= -4094 && (int) gap <= 4098)
++ /* Check if the gap falls in the range that can be accommodated
++ in 13bits signed (It is 12bits when encoded, as we deal with
++ word addressing). */
++ if (!shrinkable && ((int) gap >= -4096 && (int) gap <= 4095))
++ distance_short_enough = 1;
++ /* If shrinkable, then we can check for a range of distance which
++ is two bytes farther on both the directions because the call
++ or jump target will be closer by two bytes after the
++ relaxation. */
++ else if (shrinkable && ((int) gap >= -4094 && (int) gap <= 4097))
+ distance_short_enough = 1;
+
+ /* Here we handle the wrap-around case. E.g. for a 16k device
+@@ -1888,11 +1904,9 @@ elf32_avr_relax_section (bfd *abfd,
+ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
+ R_AVR_13_PCREL);
+
+- /* Check for the vector section. There we don't want to
+- modify the ordering! */
+-
+- if (!strcmp (sec->name,".vectors")
+- || !strcmp (sec->name,".jumptables"))
++ /* We should not modify the ordering if 'shrinkable' is
++ FALSE */
++ if (!shrinkable)
+ {
+ /* Let's insert a nop. */
+ bfd_put_8 (abfd, 0x00, contents + irel->r_offset + 2);
+++ /dev/null
-avrxmega1
-avrxmega2
-avrxmega3
-avrxmega4
-avrxmega5
-avrxmega6
-avrxmega7
-atxmega16a4
-atxmega16d4
-atxmega32d4
-atxmega32a4
-atxmega64a3
-atxmega64d3
-atxmega64a1
-atxmega128a3
-atxmega128d3
-atxmega192a3
-atxmega192d3
-atxmega256a3
-atxmega256a3b
-atxmega256d3
-atxmega128a1
-=======================================================
-diff -Naurp bfd/archures.c bfd/archures.c
---- bfd/archures.c 2009-09-10 06:47:11.000000000 -0500
-+++ bfd/archures.c 2011-06-07 11:44:52.000000000 -0500
-@@ -368,6 +368,13 @@ DESCRIPTION
- .#define bfd_mach_avr5 5
- .#define bfd_mach_avr51 51
- .#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). *}
-diff -Naurp bfd/bfd-in2.h bfd/bfd-in2.h
---- bfd/bfd-in2.h 2010-02-03 07:28:24.000000000 -0600
-+++ bfd/bfd-in2.h 2011-06-07 11:44:52.000000000 -0500
-@@ -2042,6 +2042,13 @@ enum bfd_architecture
- #define bfd_mach_avr5 5
- #define bfd_mach_avr51 51
- #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). */
-diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c
---- bfd/cpu-avr.c 2009-09-02 02:18:36.000000000 -0500
-+++ bfd/cpu-avr.c 2011-06-07 11:44:52.000000000 -0500
-@@ -133,7 +133,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 =
-diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c
---- bfd/elf32-avr.c 2009-09-02 02:18:36.000000000 -0500
-+++ bfd/elf32-avr.c 2011-06-07 11:44:52.000000000 -0500
-@@ -1328,6 +1328,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;
-@@ -1390,6 +1418,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 -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-06-07 11:47:11.000000000 -0500
-+++ gas/config/tc-avr.c 2011-06-07 11:44:52.000000000 -0500
-@@ -30,18 +30,19 @@ struct avr_opcodes_s
- {
- 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[] = ";";
-@@ -80,6 +81,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},
-@@ -216,6 +224,21 @@ static struct mcu_type_s mcu_types[] =
- {"m3001b", AVR_ISA_AVR51, bfd_mach_avr51},
- {"atmega2560", AVR_ISA_AVR6, bfd_mach_avr6},
- {"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
-+ {"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega32a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega32d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
-+ {"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
-+ {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
-+ {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {NULL, 0, 0}
- };
-
-@@ -393,6 +416,11 @@ 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"
-+ " avrxmega3 - XMEGA, > 8K, <= 64K FLASH, > 64K RAM\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"
-@@ -820,7 +848,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+". */
-@@ -937,6 +970,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;
-
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2009-09-02 02:24:21.000000000 -0500
-+++ gas/doc/c-avr.texi 2011-06-07 11:44:52.000000000 -0500
-@@ -80,6 +80,27 @@ atmega128rfa1, at90can128, at90usb1286,
- Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
- atmega2560, atmega2561).
-
-+Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
-+memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16d4,
-+atxmega32d4).
-+
-+Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
-+memory space and greater than 64K data space (MCU types: atxmega32a4).
-+
-+Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
-+memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64d3).
-+
-+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,
-+atxmega128d3, atxmega192a3, atxmega192d3, atxmega256a3, atxmega256a3b,
-+atxmega192d3).
-+
-+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}.
-diff -Naurp include/elf/avr.h include/elf/avr.h
---- include/elf/avr.h 2008-08-09 00:35:13.000000000 -0500
-+++ include/elf/avr.h 2011-06-07 11:44:52.000000000 -0500
-@@ -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)
-diff -Naurp include/opcode/avr.h include/opcode/avr.h
---- include/opcode/avr.h 2008-08-09 00:35:13.000000000 -0500
-+++ include/opcode/avr.h 2011-06-07 11:44:52.000000000 -0500
-@@ -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_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM)
-@@ -48,6 +50,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_AVR1 AVR_ISA_TINY1
- #define AVR_ISA_AVR2 AVR_ISA_2xxx
-@@ -108,6 +112,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,
-@@ -168,7 +173,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)
-@@ -282,3 +288,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)
-+
-diff -Naurp ld/configure.tgt ld/configure.tgt
---- ld/configure.tgt 2009-08-06 12:38:03.000000000 -0500
-+++ ld/configure.tgt 2011-06-07 11:44:52.000000000 -0500
-@@ -110,7 +110,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"
-diff -Naurp ld/emulparams/avrxmega1.sh ld/emulparams/avrxmega1.sh
---- ld/emulparams/avrxmega1.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega1.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emulparams/avrxmega2.sh ld/emulparams/avrxmega2.sh
---- ld/emulparams/avrxmega2.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega2.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emulparams/avrxmega3.sh ld/emulparams/avrxmega3.sh
---- ld/emulparams/avrxmega3.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega3.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emulparams/avrxmega4.sh ld/emulparams/avrxmega4.sh
---- ld/emulparams/avrxmega4.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega4.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emulparams/avrxmega5.sh ld/emulparams/avrxmega5.sh
---- ld/emulparams/avrxmega5.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega5.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emulparams/avrxmega6.sh ld/emulparams/avrxmega6.sh
---- ld/emulparams/avrxmega6.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega6.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emulparams/avrxmega7.sh ld/emulparams/avrxmega7.sh
---- ld/emulparams/avrxmega7.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrxmega7.sh 2011-06-07 11:44:52.000000000 -0500
-@@ -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
-diff -Naurp ld/emultempl/avrelf.em ld/emultempl/avrelf.em
---- ld/emultempl/avrelf.em 2009-09-02 02:25:35.000000000 -0500
-+++ ld/emultempl/avrelf.em 2011-06-07 11:44:52.000000000 -0500
-@@ -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 ();
-diff -Naurp ld/Makefile.am ld/Makefile.am
---- ld/Makefile.am 2010-02-22 02:07:01.000000000 -0600
-+++ ld/Makefile.am 2011-06-07 11:44:52.000000000 -0500
-@@ -148,6 +148,13 @@ ALL_EMULATIONS = \
- eavr5.o \
- eavr51.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 \
-@@ -727,6 +734,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)"
-diff -Naurp ld/Makefile.in ld/Makefile.in
---- ld/Makefile.in 2010-03-03 08:06:21.000000000 -0600
-+++ ld/Makefile.in 2011-06-07 11:44:52.000000000 -0500
-@@ -434,6 +434,13 @@ ALL_EMULATIONS = \
- eavr5.o \
- eavr51.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 \
-@@ -2069,6 +2076,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)"
-diff -Naurp opcodes/avr-dis.c opcodes/avr-dis.c
---- opcodes/avr-dis.c 2008-11-06 06:03:24.000000000 -0600
-+++ opcodes/avr-dis.c 2011-06-07 11:44:52.000000000 -0500
-@@ -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)
-+
-+ /* 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"));
-@@ -227,6 +237,10 @@ avr_operand (unsigned int insn, unsigned
- }
- break;
-
-+ case 'E':
-+ sprintf (buf, "%d", (insn >> 4) & 15);
-+ break;
-+
- case '?':
- *buf = '\0';
- break;
-@@ -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);
- }
- }
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2011-12-16 12:43:06.000000000 +0530
++++ binutils/size.c 2011-12-16 12:43:50.000000000 +0530
+@@ -121,6 +121,7 @@ avr_device_t avr[] =
+ {
+ {"atxmega256a3", AVR264K, AVR16K, AVR4K},
+ {"atxmega256a3b", AVR264K, AVR16K, AVR4K},
++ {"atxmega256a3bu",AVR264K, AVR16K, AVR4K},
+ {"atxmega256d3", AVR264K, AVR16K, AVR4K},
+
+ {"atmega2560", AVR256K, AVR8K, AVR4K},
+@@ -132,6 +133,7 @@ avr_device_t avr[] =
+ {"atxmega128a1", AVR136K, AVR8K, AVR2K},
+ {"atxmega128a1u", AVR136K, AVR8K, AVR2K},
+ {"atxmega128a3", AVR136K, AVR8K, AVR2K},
++ {"atxmega128b1", AVR136K, AVR8K, AVR2K},
+ {"atxmega128d3", AVR136K, AVR8K, AVR2K},
+
+ {"at43usb320", AVR128K, 608UL, 0UL},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2011-12-16 12:43:06.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 12:43:50.000000000 +0530
+@@ -453,6 +453,7 @@ 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"
++ " avrxmega2 - XMEGA, > 8K, < 64K FLASH, < 64K RAM\n"
+ " avrxmega3 - XMEGA, > 8K, <= 64K FLASH, > 64K RAM\n"
+ " avrxmega4 - XMEGA, > 64K, <= 128K FLASH, <= 64K RAM\n"
+ " avrxmega5 - XMEGA, > 64K, <= 128K FLASH, > 64K RAM\n"
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2011-03-24 22:33:03.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 12:43:50.000000000 +0530
+@@ -103,7 +103,7 @@ atxmega64a1u).
+ 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,
+ atxmega128d3, atxmega192a3, atxmega128b1, atxmega192d3, atxmega256a3,
+-atxmega256a3b, atxmega256a3bu, atxmega192d3).
++atxmega256a3b, atxmega256a3bu).
+
+ 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,
+diff -Naurp ld/Makefile.am ld/Makefile.am
+--- ld/Makefile.am 2011-07-23 01:52:37.000000000 +0530
++++ ld/Makefile.am 2011-12-16 12:43:50.000000000 +0530
+@@ -163,13 +163,13 @@ ALL_EMULATION_SOURCES = \
+ eavr5.c \
+ eavr51.c \
+ eavr6.c \
+- eavrxmega1.o \
+- eavrxmega2.o \
+- eavrxmega3.o \
+- eavrxmega4.o \
+- eavrxmega5.o \
+- eavrxmega6.o \
+- eavrxmega7.o \
++ eavrxmega1.c \
++ eavrxmega2.c \
++ eavrxmega3.c \
++ eavrxmega4.c \
++ eavrxmega5.c \
++ eavrxmega6.c \
++ eavrxmega7.c \
+ ecoff_i860.c \
+ ecoff_sparc.c \
+ ecrisaout.c \
+diff -Naurp ld/Makefile.in ld/Makefile.in
+--- ld/Makefile.in 2011-07-23 01:52:37.000000000 +0530
++++ ld/Makefile.in 2011-12-16 12:43:50.000000000 +0530
+@@ -469,13 +469,13 @@ ALL_EMULATION_SOURCES = \
+ eavr5.c \
+ eavr51.c \
+ eavr6.c \
+- eavrxmega1.o \
+- eavrxmega2.o \
+- eavrxmega3.o \
+- eavrxmega4.o \
+- eavrxmega5.o \
+- eavrxmega6.o \
+- eavrxmega7.o \
++ eavrxmega1.c \
++ eavrxmega2.c \
++ eavrxmega3.c \
++ eavrxmega4.c \
++ eavrxmega5.c \
++ eavrxmega6.c \
++ eavrxmega7.c \
+ ecoff_i860.c \
+ ecoff_sparc.c \
+ ecrisaout.c \
+++ /dev/null
-attiny461a
-atmega48a
-atmega88a
-atmega88pa
-atmega16a
-atmega164a
-atmega165a
-atmega168a
-atmega169a
-atmega169pa
-atmega324a
-atmega324pa
-atmega328
-atmega329pa
-atmega644a
-atmega645a
-atmega645p
-atmega649p
-atmega649a
-atmega6450a
-atmega6450p
-atmega6490a
-atmega6490p
-atmega64hve
-atmega16hva2
-attiny84a
-atmega325a
-atmega3250a
-atmega329a
-atmega3290a
-m3000
-Remove: m3000f, m3000s, m3001b, atmega16c1, atmega4hvd, atmega8hvd, atmega8m1,
-atmega8c1, attiny327
-===========================================================
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-01-12 14:20:58.000000000 -0600
-+++ gas/config/tc-avr.c 2011-01-12 14:24:17.000000000 -0600
-@@ -115,12 +115,14 @@ static struct mcu_type_s mcu_types[] =
- {"attiny44", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny44a", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny84", AVR_ISA_AVR25, bfd_mach_avr25},
-+ {"attiny84a", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny25", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny45", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny85", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny261", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny261a", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny461", AVR_ISA_AVR25, bfd_mach_avr25},
-+ {"attiny461a", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny861", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny861a", AVR_ISA_AVR25, bfd_mach_avr25},
- {"attiny87", AVR_ISA_AVR25, bfd_mach_avr25},
-@@ -134,7 +136,6 @@ static struct mcu_type_s mcu_types[] =
- {"atmega103", AVR_ISA_AVR31, bfd_mach_avr31},
- {"at43usb320", AVR_ISA_AVR31, bfd_mach_avr31},
- {"attiny167", AVR_ISA_AVR35, bfd_mach_avr35},
-- {"attiny327", AVR_ISA_AVR35, bfd_mach_avr35},
- {"at90usb82", AVR_ISA_AVR35, bfd_mach_avr35},
- {"at90usb162", AVR_ISA_AVR35, bfd_mach_avr35},
- {"atmega8u2", AVR_ISA_AVR35, bfd_mach_avr35},
-@@ -142,16 +143,15 @@ static struct mcu_type_s mcu_types[] =
- {"atmega32u2", AVR_ISA_AVR35, bfd_mach_avr35},
- {"atmega8", AVR_ISA_M8, bfd_mach_avr4},
- {"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
-+ {"atmega48a", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega48p", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega88", AVR_ISA_AVR4, bfd_mach_avr4},
-+ {"atmega88a", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega88p", AVR_ISA_AVR4, bfd_mach_avr4},
-+ {"atmega88pa", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega8515", AVR_ISA_M8, bfd_mach_avr4},
- {"atmega8535", AVR_ISA_M8, bfd_mach_avr4},
- {"atmega8hva", AVR_ISA_AVR4, bfd_mach_avr4},
-- {"atmega4hvd", AVR_ISA_AVR4, bfd_mach_avr4},
-- {"atmega8hvd", AVR_ISA_AVR4, bfd_mach_avr4},
-- {"atmega8c1", AVR_ISA_AVR4, bfd_mach_avr4},
-- {"atmega8m1", AVR_ISA_AVR4, bfd_mach_avr4},
- {"at90pwm1", AVR_ISA_AVR4, bfd_mach_avr4},
- {"at90pwm2", AVR_ISA_AVR4, bfd_mach_avr4},
- {"at90pwm2b", AVR_ISA_AVR4, bfd_mach_avr4},
-@@ -159,40 +159,64 @@ static struct mcu_type_s mcu_types[] =
- {"at90pwm3b", AVR_ISA_AVR4, bfd_mach_avr4},
- {"at90pwm81", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega16", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega161", AVR_ISA_M161, bfd_mach_avr5},
- {"atmega162", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega163", AVR_ISA_M161, bfd_mach_avr5},
-+ {"atmega164a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega164p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega165", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega165a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega165p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega168", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega168a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega168p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega169", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega169a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega169p", AVR_ISA_AVR5, bfd_mach_avr5},
-- {"atmega16c1", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega169pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega32", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega323", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega324a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega324p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega324pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega325", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega325a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega325p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega3250a",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega328", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega328p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega329", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega329a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega329p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega329pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3290", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega3290a",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3290p",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega406", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega64", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega640", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega644", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega644a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega644p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega644pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega645", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega645a", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega645p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega649", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega649p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega649a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega6450", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6450a",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6450p",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega6490", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6490a",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6490p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega64hve",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16hva",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16hva2",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega32hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90can32" , AVR_ISA_AVR5, bfd_mach_avr5},
-@@ -211,6 +235,7 @@ static struct mcu_type_s mcu_types[] =
- {"at90usb647", AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90scr100", AVR_ISA_AVR5, bfd_mach_avr5},
- {"at94k", AVR_ISA_94K, bfd_mach_avr5},
-+ {"m3000", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega128", AVR_ISA_AVR51, bfd_mach_avr51},
- {"atmega1280", AVR_ISA_AVR51, bfd_mach_avr51},
- {"atmega1281", AVR_ISA_AVR51, bfd_mach_avr51},
-@@ -219,9 +244,6 @@ static struct mcu_type_s mcu_types[] =
- {"at90can128", AVR_ISA_AVR51, bfd_mach_avr51},
- {"at90usb1286",AVR_ISA_AVR51, bfd_mach_avr51},
- {"at90usb1287",AVR_ISA_AVR51, bfd_mach_avr51},
-- {"m3000f", AVR_ISA_AVR51, bfd_mach_avr51},
-- {"m3000s", AVR_ISA_AVR51, bfd_mach_avr51},
-- {"m3001b", AVR_ISA_AVR51, bfd_mach_avr51},
- {"atmega2560", AVR_ISA_AVR6, bfd_mach_avr6},
- {"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
- {"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-01-12 14:20:58.000000000 -0600
-+++ gas/doc/c-avr.texi 2011-01-12 14:22:42.000000000 -0600
-@@ -43,9 +43,10 @@ at90s8535).
-
- Instruction set avr25 is for the classic AVR core with up to 8K program memory
- space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
--attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
--attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461, attiny861,
--attiny861a, attiny87, attiny43u, attiny48, attiny88, at86rf401, ata6289).
-+attiny2313a, attiny24, attiny24a, attiny4313, attiny43u, attiny44, attiny44a,
-+attiny84, attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a,
-+attiny461, attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48,
-+attiny88, at86rf401, ata6289).
-
- Instruction set avr3 is for the classic AVR core with up to 128K program
- memory space (MCU types: at43usb355, at76c711).
-@@ -54,28 +55,33 @@ Instruction set avr31 is for the classic
- memory space (MCU types: atmega103, at43usb320).
-
- Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
--instructions (MCU types: attiny167, attiny327, at90usb82, at90usb162, atmega8u2,
-+instructions (MCU types: attiny167, at90usb82, at90usb162, atmega8u2,
- atmega16u2, atmega32u2).
-
- Instruction set avr4 is for the enhanced AVR core with up to 8K program
--memory space (MCU types: atmega48, atmega48p,atmega8, atmega88, atmega88p,
--atmega8515, atmega8535, atmega8hva, atmega4hvd, atmega8hvd, at90pwm1,
--at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, atmega8m1, atmega8c1).
-+memory space (MCU types: atmega48, atmega48a, atmega48p,atmega8, atmega88,
-+atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva,
-+at90pwm1,at90pwm2, at90pwm2b, at90pwm3, at90pwm3b,
-+at90pwm81).
-
- Instruction set avr5 is for the enhanced AVR core with up to 128K program
--memory space (MCU types: atmega16, atmega161, atmega162, atmega163, atmega164p,
--atmega165, atmega165p, atmega168, atmega168p, atmega169, atmega169p, atmega16c1,
--atmega32, atmega323, atmega324p, atmega325, atmega325p, atmega3250, atmega3250p,
--atmega328p, atmega329, atmega329p, atmega3290, atmega3290p, atmega406, atmega64,
--atmega640, atmega644, atmega644p, atmega644pa, atmega645, atmega6450, atmega649,
--atmega6490, atmega16hva, atmega16hvb, atmega32hvb, at90can32, at90can64,
--at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
--atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
--at90scr100).
-+memory space (MCU types: atmega16, atmega16a, atmega161, atmega162, atmega163,
-+atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
-+atmega168a, atmega168p, atmega169, atmega169p, atmega169pa,
-+atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
-+atmega325p, atmega3250, atmega3250a, atmega3250p, atmega328, atmega328p,
-+atmega329, atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a,
-+atmega3290p, atmega406, atmega64, atmega640, atmega644, atmega644a, atmega644p,
-+atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
-+atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
-+atmega6490p, atmega64hve, atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb,
-+at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4, atmega32c1,
-+atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1, atmega16u4,
-+atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
-
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
--atmega128rfa1, at90can128, at90usb1286, at90usb1287, m3000f, m3000s, m3001b).
-+atmega128rfa1, at90can128, at90usb1286, at90usb1287, m3000).
-
- Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
- atmega2560, atmega2561).
diff -Naurp bfd/archures.c bfd/archures.c
---- bfd/archures.c 2011-06-07 11:55:03.000000000 -0500
-+++ bfd/archures.c 2011-06-07 11:56:48.000000000 -0500
-@@ -375,6 +375,7 @@ DESCRIPTION
+--- bfd/archures.c 2011-08-02 04:34:19.000000000 +0530
++++ bfd/archures.c 2011-12-22 12:00:37.000000000 +0530
+@@ -388,6 +388,7 @@ DESCRIPTION
.#define bfd_mach_avrxmega5 105
.#define bfd_mach_avrxmega6 106
.#define bfd_mach_avrxmega7 107
.#define bfd_mach_bfin 1
. bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
diff -Naurp bfd/bfd-in2.h bfd/bfd-in2.h
---- bfd/bfd-in2.h 2011-06-07 11:55:03.000000000 -0500
-+++ bfd/bfd-in2.h 2011-06-07 11:56:48.000000000 -0500
-@@ -2049,6 +2049,7 @@ enum bfd_architecture
+--- bfd/bfd-in2.h 2011-09-16 06:45:18.000000000 +0530
++++ bfd/bfd-in2.h 2011-12-22 12:00:37.000000000 +0530
+@@ -2095,6 +2095,7 @@ enum bfd_architecture
#define bfd_mach_avrxmega5 105
#define bfd_mach_avrxmega6 106
#define bfd_mach_avrxmega7 107
#define bfd_mach_bfin 1
bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c
---- bfd/cpu-avr.c 2011-06-07 11:55:03.000000000 -0500
-+++ bfd/cpu-avr.c 2011-06-07 11:56:48.000000000 -0500
+--- bfd/cpu-avr.c 2011-03-22 23:40:42.000000000 +0530
++++ bfd/cpu-avr.c 2011-12-22 12:00:37.000000000 +0530
@@ -154,7 +154,10 @@ static const bfd_arch_info_type arch_inf
N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[16]),
};
diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c
---- bfd/elf32-avr.c 2011-06-07 11:55:03.000000000 -0500
-+++ bfd/elf32-avr.c 2011-06-07 11:56:48.000000000 -0500
-@@ -1356,6 +1356,10 @@ bfd_elf_avr_final_write_processing (bfd
+--- bfd/elf32-avr.c 2011-06-02 19:13:14.000000000 +0530
++++ bfd/elf32-avr.c 2011-12-22 12:00:37.000000000 +0530
+@@ -1326,6 +1326,10 @@ bfd_elf_avr_final_write_processing (bfd
case bfd_mach_avrxmega7:
val = E_AVR_MACH_XMEGA7;
break;
}
elf_elfheader (abfd)->e_machine = EM_AVR;
-@@ -1446,6 +1450,10 @@ elf32_avr_object_p (bfd *abfd)
+@@ -1416,6 +1420,10 @@ elf32_avr_object_p (bfd *abfd)
case E_AVR_MACH_XMEGA7:
e_set = bfd_mach_avrxmega7;
break;
}
return bfd_default_set_arch_mach (abfd, bfd_arch_avr,
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-06-07 11:56:25.000000000 -0500
-+++ gas/config/tc-avr.c 2011-06-07 11:56:48.000000000 -0500
-@@ -88,6 +88,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:02:01.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:00:37.000000000 +0530
+@@ -90,6 +90,7 @@ static struct mcu_type_s mcu_types[] =
{"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},
-@@ -261,6 +262,12 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+@@ -275,6 +276,12 @@ static struct mcu_type_s mcu_types[] =
{"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+ {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+ {"attiny4", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
+ {"attiny5", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
+ {"attiny9", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
{NULL, 0, 0}
};
-@@ -443,6 +450,7 @@ md_show_usage (FILE *stream)
+@@ -459,6 +466,7 @@ md_show_usage (FILE *stream)
" avrxmega5 - XMEGA, > 64K, <= 128K FLASH, > 64K RAM\n"
" avrxmega6 - XMEGA, > 128K, <= 256K FLASH, <= 64K RAM\n"
" avrxmega7 - XMEGA, > 128K, <= 256K FLASH, > 64K RAM\n"
+ " avrtiny10 - tiny devices with 16 gp registers\n"
" or immediate microcontroller name.\n"));
fprintf (stream,
- _(" -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n"
-@@ -790,6 +798,17 @@ avr_operand (struct avr_opcodes_s *opcod
+ _(" -mlist-devices list all supported devices\n"
+@@ -809,6 +817,17 @@ avr_operand (struct avr_opcodes_s *opcod
op_mask = avr_get_constant (str, 31);
str = input_line_pointer;
}
if (op_mask <= 31)
{
diff -Naurp include/elf/avr.h include/elf/avr.h
---- include/elf/avr.h 2011-06-07 11:55:03.000000000 -0500
-+++ include/elf/avr.h 2011-06-07 11:56:48.000000000 -0500
+--- include/elf/avr.h 2011-03-22 23:40:44.000000000 +0530
++++ include/elf/avr.h 2011-12-22 12:00:37.000000000 +0530
@@ -47,6 +47,7 @@
#define E_AVR_MACH_XMEGA5 105
#define E_AVR_MACH_XMEGA6 106
/* Relocations. */
START_RELOC_NUMBERS (elf_avr_reloc_type)
diff -Naurp include/opcode/avr.h include/opcode/avr.h
---- include/opcode/avr.h 2011-06-07 11:55:03.000000000 -0500
-+++ include/opcode/avr.h 2011-06-07 11:56:48.000000000 -0500
-@@ -69,7 +69,7 @@
+--- include/opcode/avr.h 2011-12-22 11:59:33.000000000 +0530
++++ include/opcode/avr.h 2011-12-22 12:00:37.000000000 +0530
+@@ -72,6 +72,8 @@
AVR_ISA_ELPM | AVR_ISA_ELPMX | AVR_ISA_SPM | \
- AVR_ISA_SPM | AVR_ISA_BRK | AVR_ISA_EIND | \
- AVR_ISA_MOVW)
--
+ AVR_ISA_BRK | AVR_ISA_EIND | AVR_ISA_MOVW)
+
+#define AVR_ISA_AVRTINY10 (AVR_ISA_1200 | AVR_ISA_BRK | AVR_ISA_SRAM)
++
#define REGISTER_P(x) ((x) == 'r' \
|| (x) == 'd' \
|| (x) == 'w' \
-@@ -159,8 +159,8 @@ AVR_INSN (sez, "", "1001010000011000
+@@ -161,8 +163,8 @@ AVR_INSN (sez, "", "1001010000011000
AVR_INSN (bclr, "S", "100101001SSS1000", 1, AVR_ISA_1200, 0x9488)
AVR_INSN (bset, "S", "100101000SSS1000", 1, AVR_ISA_1200, 0x9408)
AVR_INSN (lpm, "?", "1001010111001000", 1, AVR_ISA_TINY1,0x95c8)
AVR_INSN (lpm, "r,z", "1001000ddddd010+", 1, AVR_ISA_LPMX, 0x9004)
-@@ -260,8 +260,8 @@ AVR_INSN (dec, "r", "1001010rrrrr1010
+@@ -262,8 +264,8 @@ AVR_INSN (dec, "r", "1001010rrrrr1010
AVR_INSN (inc, "r", "1001010rrrrr0011", 1, AVR_ISA_1200, 0x9403)
AVR_INSN (lsr, "r", "1001010rrrrr0110", 1, AVR_ISA_1200, 0x9406)
AVR_INSN (neg, "r", "1001010rrrrr0001", 1, AVR_ISA_1200, 0x9401)
AVR_INSN (ror, "r", "1001010rrrrr0111", 1, AVR_ISA_1200, 0x9407)
AVR_INSN (swap, "r", "1001010rrrrr0010", 1, AVR_ISA_1200, 0x9402)
-@@ -273,8 +273,8 @@ AVR_INSN (fmul, "a,a", "000000110ddd1rrr
+@@ -275,8 +277,8 @@ AVR_INSN (fmul, "a,a", "000000110ddd1rrr
AVR_INSN (fmuls,"a,a", "000000111ddd0rrr", 1, AVR_ISA_MUL, 0x0380)
AVR_INSN (fmulsu,"a,a","000000111ddd1rrr", 1, AVR_ISA_MUL, 0x0388)
+AVR_INSN (sts, "i,r", "1001001ddddd0000", 2, AVR_ISA_SRAM, 0x9200)
+AVR_INSN (lds, "r,i", "1001000ddddd0000", 2, AVR_ISA_SRAM, 0x9000)
- /* Special case for b+0, `e' must be next entry after `b',
- b={Y=1,Z=0}, ee={X=11,Y=10,Z=00}, !=1 if -e or e+ or X. */
+ AVR_INSN (xch, "z,r", "1001001rrrrr0100", 1, AVR_ISA_XMEGAU, 0x9204)
+ AVR_INSN (las, "z,r", "1001001rrrrr0101", 1, AVR_ISA_XMEGAU, 0x9205)
diff -Naurp ld/configure.tgt ld/configure.tgt
---- ld/configure.tgt 2011-06-07 11:55:03.000000000 -0500
-+++ ld/configure.tgt 2011-06-07 11:56:48.000000000 -0500
-@@ -110,7 +110,7 @@ xscale-*-coff) targ_emul=armcoff ;;
- xscale-*-elf) targ_emul=armelf
- ;;
+--- ld/configure.tgt 2011-11-21 14:59:37.000000000 +0530
++++ ld/configure.tgt 2011-12-22 12:00:37.000000000 +0530
+@@ -98,7 +98,7 @@ arm*-*-uclinux*) targ_emul=armelf_linux
+ arm-*-vxworks) targ_emul=armelf_vxworks ;;
+ arm*-*-conix*) targ_emul=armelf ;;
avr-*-*) targ_emul=avr2
- targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7"
+ targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny10"
bfin-*-elf) targ_emul=elf32bfin;
targ_extra_emuls="elf32bfinfd"
diff -Naurp ld/emulparams/avrtiny10.sh ld/emulparams/avrtiny10.sh
---- ld/emulparams/avrtiny10.sh 1969-12-31 18:00:00.000000000 -0600
-+++ ld/emulparams/avrtiny10.sh 2011-06-07 11:56:48.000000000 -0500
+--- ld/emulparams/avrtiny10.sh 1970-01-01 05:30:00.000000000 +0530
++++ ld/emulparams/avrtiny10.sh 2011-12-22 12:00:37.000000000 +0530
@@ -0,0 +1,12 @@
+ARCH=avr:201
+MACHINE=
+DATA_LENGTH=0x140
+EXTRA_EM_FILE=avrelf
diff -Naurp ld/Makefile.am ld/Makefile.am
---- ld/Makefile.am 2011-06-07 11:55:03.000000000 -0500
-+++ ld/Makefile.am 2011-06-07 11:56:48.000000000 -0500
-@@ -155,6 +155,7 @@ ALL_EMULATIONS = \
- eavrxmega5.o \
- eavrxmega6.o \
- eavrxmega7.o \
-+ eavrtiny10.o \
- ecoff_i860.o \
- ecoff_sparc.o \
- eelf32_spu.o \
-@@ -762,6 +763,10 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxm
+--- ld/Makefile.am 2011-12-22 12:02:01.000000000 +0530
++++ ld/Makefile.am 2011-12-22 12:00:37.000000000 +0530
+@@ -170,6 +170,7 @@ ALL_EMULATION_SOURCES = \
+ eavrxmega5.c \
+ eavrxmega6.c \
+ eavrxmega7.c \
++ eavrtiny10.c \
+ ecoff_i860.c \
+ ecoff_sparc.c \
+ ecrisaout.c \
+@@ -818,6 +819,10 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxm
$(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avrxmega7 "$(tdir_avr2)"
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:47:17.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:47:30.000000000 +0300
-@@ -221,6 +221,7 @@ avr_device_t avr[] =
+--- binutils/size.c 2011-12-16 12:46:47.000000000 +0530
++++ binutils/size.c 2011-12-16 15:05:18.000000000 +0530
+@@ -220,6 +220,7 @@ avr_device_t avr[] =
{"atxmega16d4", AVR20K, AVR2K, AVR1K},
{"at76c711", AVR16K, AVR2K, 0UL},
{"at90pwm316", AVR16K, AVR1K, AVR512},
{"at90usb162", AVR16K, AVR512, AVR512},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:47:17.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:47:30.000000000 +0300
-@@ -159,6 +159,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 12:46:54.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:05:18.000000000 +0530
+@@ -161,6 +161,7 @@ static struct mcu_type_s mcu_types[] =
{"at90pwm3", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm3b", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm81", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega16a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega161", AVR_ISA_M161, bfd_mach_avr5},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:47:17.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:47:30.000000000 +0300
-@@ -65,8 +65,8 @@ at90pwm1,at90pwm2, at90pwm2b, at90pwm3,
- at90pwm81).
+--- gas/doc/c-avr.texi 2011-12-16 12:46:47.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:05:18.000000000 +0530
+@@ -64,8 +64,8 @@ atmega88a, atmega88p, atmega88pa, atmega
+ at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
Instruction set avr5 is for the enhanced AVR core with up to 128K program
-memory space (MCU types: atmega16, atmega16a, atmega161, atmega162, atmega163,
--atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
+-atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
+memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
+atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
- atmega168a, atmega168p, atmega169, atmega169p, atmega169pa,
- atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
- atmega325p, atmega3250, atmega3250a, atmega3250p, atmega328, atmega328p,
+ atmega168a, atmega168p, atmega169, atmega169a, atmega169p, atmega169pa,
+ atmega32, atmega323, atmega324a, atmega324p, atmega325, atmega325a, atmega325p,
+ atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328,
diff -Naurp ld/Makefile.in ld/Makefile.in
---- ld/Makefile.in 2011-09-05 15:33:12.000000000 +0300
-+++ ld/Makefile.in 2011-09-05 15:47:30.000000000 +0300
-@@ -441,6 +441,7 @@ ALL_EMULATIONS = \
- eavrxmega5.o \
- eavrxmega6.o \
- eavrxmega7.o \
-+ eavrtiny10.o \
- ecoff_i860.o \
- ecoff_sparc.o \
- eelf32_spu.o \
-@@ -952,6 +953,14 @@ distclean-compile:
+--- ld/Makefile.in 2011-12-16 12:46:47.000000000 +0530
++++ ld/Makefile.in 2011-12-16 15:05:18.000000000 +0530
+@@ -476,6 +476,7 @@ ALL_EMULATION_SOURCES = \
+ eavrxmega5.c \
+ eavrxmega6.c \
+ eavrxmega7.c \
++ eavrtiny10.c \
+ ecoff_i860.c \
+ ecoff_sparc.c \
+ ecrisaout.c \
+@@ -1075,6 +1076,14 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr51.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr6.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecoff_i860.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecoff_sparc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecrisaout.Po@am__quote@
-@@ -2104,6 +2113,10 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxm
+@@ -2271,6 +2280,10 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxm
$(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avrxmega7 "$(tdir_avr2)"
+++ /dev/null
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-06-07 12:00:46.000000000 -0500
-+++ gas/config/tc-avr.c 2011-06-07 12:01:05.000000000 -0500
-@@ -254,6 +254,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
-+ {"atxmega64a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega5},
- {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-@@ -262,6 +263,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
-+ {"atxmega128a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {"attiny4", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
- {"attiny5", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
- {"attiny9", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-06-07 11:56:25.000000000 -0500
-+++ gas/doc/c-avr.texi 2011-06-07 12:01:05.000000000 -0500
-@@ -97,7 +97,8 @@ Instruction set avrxmega4 is for the XME
- memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64d3).
-
- 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).
-+memory space and greater than 64K data space (MCU types: atxmega64a1,
-+atxmega64a1u).
-
- 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,
-@@ -105,7 +106,8 @@ atxmega128d3, atxmega192a3, atxmega192d3
- atxmega192d3).
-
- 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).
-+memory space and greater than 64K data space (MCU types: atxmega128a1,
-+atxmega128a1u).
-
- @cindex @code{-mall-opcodes} command line option, AVR
- @item -mall-opcodes
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2011-11-29 19:16:45.000000000 +0530
++++ binutils/size.c 2011-11-29 19:20:58.000000000 +0530
+@@ -194,9 +194,11 @@ avr_device_t avr[] =
+ {"atmega325", AVR32K, AVR2K, AVR1K},
+ {"atmega325a", AVR32K, AVR2K, AVR1K},
+ {"atmega325p", AVR32K, AVR2K, AVR1K},
++ {"atmega325pa", AVR32K, AVR2K, AVR1K},
+ {"atmega3250", AVR32K, AVR2K, AVR1K},
+ {"atmega3250a", AVR32K, AVR2K, AVR1K},
+ {"atmega3250p", AVR32K, AVR2K, AVR1K},
++ {"atmega3250pa", AVR32K, AVR2K, AVR1K},
+ {"atmega328", AVR32K, AVR2K, AVR1K},
+ {"atmega328p", AVR32K, AVR2K, AVR1K},
+ {"atmega329", AVR32K, AVR2K, AVR1K},
+@@ -206,9 +208,10 @@ avr_device_t avr[] =
+ {"atmega3290", AVR32K, AVR2K, AVR1K},
+ {"atmega3290a", AVR32K, AVR2K, AVR1K},
+ {"atmega3290p", AVR32K, AVR2K, AVR1K},
++ {"atmega3290pa", AVR32K, AVR2K, AVR1K},
+ {"atmega32hvb", AVR32K, AVR2K, AVR1K},
++ {"atmega32hvbrevb",AVR32K, AVR2K, AVR1K},
+ {"atmega32c1", AVR32K, AVR2K, AVR1K},
+- {"atmega32hvb", AVR32K, AVR2K, AVR1K},
+ {"atmega32m1", AVR32K, AVR2K, AVR1K},
+ {"atmega32u2", AVR32K, AVR1K, AVR1K},
+ {"atmega32u4", AVR32K, 2560UL, AVR1K},
+@@ -244,7 +247,8 @@ avr_device_t avr[] =
+ {"atmega169pa", AVR16K, AVR1K, AVR512},
+ {"atmega16hva", AVR16K, 768UL, AVR256},
+ {"atmega16hva2", AVR16K, AVR1K, AVR256},
+- {"atmega16hvb", AVR16K, AVR1K, AVR512},
++ {"atmega16hvb", AVR16K, AVR1K, AVR512},
++ {"atmega16hvbrevb",AVR16K, AVR1K, AVR512},
+ {"atmega16m1", AVR16K, AVR1K, AVR512},
+ {"atmega16u2", AVR16K, AVR512, AVR512},
+ {"atmega16u4", AVR16K, 1280UL, AVR512},
+diff -Naurp gas/doc/as.info gas/doc/as.info
+--- gas/doc/as.info 2011-11-29 19:16:25.000000000 +0530
++++ gas/doc/as.info 2011-11-29 19:20:58.000000000 +0530
+@@ -7248,7 +7248,7 @@ File: as.info, Node: AVR Options, Next
+ program memory space (MCU types: atmega16, atmega16a, atmega161,
+ atmega162, atmega163, atmega164a, atmega164p, atmega165,
+ atmega165a, atmega165p, atmega168, atmega168a, atmega168p,
+- atmega169, atmega169a, atmega169p, atmega169pa, atmega32,
++ atmega169, atmega169a, atmega169p, atmega169pa, atmega16c1, atmega32,
+ atmega323, atmega324a, atmega324p, atmega325, atmega325a,
+ atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p,
+ atmega3250pa, atmega328, atmega328p, atmega329, atmega329a,
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2011-11-29 19:16:45.000000000 +0530
++++ gas/doc/c-avr.texi 2011-11-29 19:20:43.000000000 +0530
+@@ -67,7 +67,7 @@ Instruction set avr5 is for the enhanced
+ memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
+ atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
+ atmega168a, atmega168p, atmega169, atmega169a, atmega169p, atmega169pa,
+-atmega32, atmega323, atmega324a, atmega324p, atmega325, atmega325a, atmega325p,
++atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
+ atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328,
+ atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290,
+ atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega640,
+++ /dev/null
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:32:07.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:38:25.000000000 +0300
-@@ -181,6 +181,7 @@ avr_device_t avr[] =
-
- {"atxmega32a4", AVR36K, AVR4K, AVR1K},
- {"atxmega32d4", AVR36K, AVR4K, AVR1K},
-+ {"atxmega32x1", AVR36K, AVR2K, AVR1K},
-
- {"at90can32", AVR32K, AVR2K, AVR1K},
- {"at94k", AVR32K, AVR4K, 0UL},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:33:12.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:35:21.000000000 +0300
-@@ -251,6 +251,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega32a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega32d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:33:12.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:37:04.000000000 +0300
-@@ -88,10 +88,10 @@ atmega2560, atmega2561).
-
- Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16d4,
--atxmega32d4).
-+atxmega32a4, atxmega32d4, atxmega32x1).
-
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
--memory space and greater than 64K data space (MCU types: atxmega32a4).
-+memory space and greater than 64K data space (MCU types: none).
-
- Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
- memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64d3).
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:49:15.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:50:47.000000000 +0300
-@@ -251,6 +251,7 @@ avr_device_t avr[] =
+--- binutils/size.c 2011-12-16 15:12:22.000000000 +0530
++++ binutils/size.c 2011-12-16 15:11:54.000000000 +0530
+@@ -250,6 +250,7 @@ avr_device_t avr[] =
{"atmega16hvb", AVR16K, AVR1K, AVR512},
{"atmega16hvbrevb",AVR16K, AVR1K, AVR512},
{"atmega16m1", AVR16K, AVR1K, AVR512},
{"atmega16u4", AVR16K, 1280UL, AVR512},
{"attiny167", AVR16K, AVR512, AVR512},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:49:15.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:50:47.000000000 +0300
-@@ -142,6 +142,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 15:05:18.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:11:54.000000000 +0530
+@@ -144,6 +144,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega8u2", AVR_ISA_AVR35, bfd_mach_avr35},
{"atmega16u2", AVR_ISA_AVR35, bfd_mach_avr35},
{"atmega32u2", AVR_ISA_AVR35, bfd_mach_avr35},
{"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega48a", AVR_ISA_AVR4, bfd_mach_avr4},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:49:15.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:50:47.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-16 15:12:22.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:11:54.000000000 +0530
@@ -55,8 +55,8 @@ Instruction set avr31 is for the classic
memory space (MCU types: atmega103, at43usb320).
+atmega8u2, atmega16u2, atmega32u2).
Instruction set avr4 is for the enhanced AVR core with up to 8K program
- memory space (MCU types: atmega48, atmega48a, atmega48p,atmega8, atmega88,
+ memory space (MCU types: atmega48, atmega48a, atmega48p, atmega8, atmega88,
+++ /dev/null
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:40:59.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:40:03.000000000 +0300
-@@ -132,6 +132,7 @@ avr_device_t avr[] =
- {"atxmega128a1", AVR136K, AVR8K, AVR2K},
- {"atxmega128a1u", AVR136K, AVR8K, AVR2K},
- {"atxmega128a3", AVR136K, AVR8K, AVR2K},
-+ {"atxmega128b1", AVR136K, AVR8K, AVR2K},
- {"atxmega128d3", AVR136K, AVR8K, AVR2K},
-
- {"at43usb320", AVR128K, 608UL, 0UL},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:40:59.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:40:03.000000000 +0300
-@@ -257,6 +257,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
- {"atxmega64a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega5},
- {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:40:59.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:40:03.000000000 +0300
-@@ -102,8 +102,8 @@ atxmega64a1u).
-
- 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,
--atxmega128d3, atxmega192a3, atxmega192d3, atxmega256a3, atxmega256a3b,
--atxmega192d3).
-+atxmega128d3, atxmega192a3, atxmega128b1, atxmega192d3, atxmega256a3,
-+atxmega256a3b, atxmega192d3).
-
- 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,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:50:47.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:53:27.000000000 +0300
-@@ -289,6 +289,7 @@ avr_device_t avr[] =
+--- binutils/size.c 2011-12-16 15:11:54.000000000 +0530
++++ binutils/size.c 2011-12-16 15:16:27.000000000 +0530
+@@ -288,6 +288,7 @@ avr_device_t avr[] =
{"at90s4434", AVR4K, 352UL, AVR256},
{"atmega48", AVR4K, AVR512, AVR256},
{"atmega48a", AVR4K, AVR512, AVR256},
{"attiny4313", AVR4K, AVR256, AVR256},
{"attiny43u", AVR4K, AVR256, AVR64},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:50:47.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:53:27.000000000 +0300
-@@ -146,6 +146,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 15:11:54.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:16:27.000000000 +0530
+@@ -148,6 +148,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega8", AVR_ISA_M8, bfd_mach_avr4},
{"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega48a", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega88", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega88a", AVR_ISA_AVR4, bfd_mach_avr4},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:50:47.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:53:27.000000000 +0300
-@@ -59,10 +59,9 @@ instructions (MCU types: attiny167, atti
+--- gas/doc/c-avr.texi 2011-12-16 15:11:54.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:16:27.000000000 +0530
+@@ -59,9 +59,9 @@ instructions (MCU types: attiny167, atti
atmega8u2, atmega16u2, atmega32u2).
Instruction set avr4 is for the enhanced AVR core with up to 8K program
--memory space (MCU types: atmega48, atmega48a, atmega48p,atmega8, atmega88,
--atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva,
--at90pwm1,at90pwm2, at90pwm2b, at90pwm3, at90pwm3b,
--at90pwm81).
-+memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p,atmega8,
+-memory space (MCU types: atmega48, atmega48a, atmega48p, atmega8, atmega88,
+-atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva, at90pwm1,
+-at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
++memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8,
+atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva,
-+at90pwm1,at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
++at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
Instruction set avr5 is for the enhanced AVR core with up to 128K program
memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
+++ /dev/null
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:43:49.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:44:57.000000000 +0300
-@@ -121,6 +121,7 @@ avr_device_t avr[] =
- {
- {"atxmega256a3", AVR264K, AVR16K, AVR4K},
- {"atxmega256a3b", AVR264K, AVR16K, AVR4K},
-+ {"atxmega256a3bu",AVR264K, AVR16K, AVR4K},
- {"atxmega256d3", AVR264K, AVR16K, AVR4K},
-
- {"atmega2560", AVR256K, AVR8K, AVR4K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:43:49.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:44:57.000000000 +0300
-@@ -263,6 +263,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega256a3bu",AVR_ISA_XMEGA,bfd_mach_avrxmega6},
- {"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {"atxmega128a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:43:49.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:44:57.000000000 +0300
-@@ -103,7 +103,7 @@ atxmega64a1u).
- 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,
- atxmega128d3, atxmega192a3, atxmega128b1, atxmega192d3, atxmega256a3,
--atxmega256a3b, atxmega192d3).
-+atxmega256a3b, atxmega256a3bu, atxmega192d3).
-
- 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,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:54:26.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:54:34.000000000 +0300
+--- binutils/size.c 2011-12-22 12:06:57.000000000 +0530
++++ binutils/size.c 2011-12-22 12:07:20.000000000 +0530
@@ -177,11 +177,12 @@ avr_device_t avr[] =
{"atmega64c1", AVR64K, AVR4K, AVR2K},
{"atmega64hve", AVR64K, AVR4K, AVR1K},
{"atxmega32a4", AVR36K, AVR4K, AVR1K},
+ {"atxmega32a4u", AVR36K, AVR4K, AVR1K},
{"atxmega32d4", AVR36K, AVR4K, AVR1K},
- {"atxmega32x1", AVR36K, AVR2K, AVR1K},
-@@ -221,6 +222,7 @@ avr_device_t avr[] =
+ {"at90can32", AVR32K, AVR2K, AVR1K},
+@@ -220,6 +221,7 @@ avr_device_t avr[] =
{"at43usb355", AVR24K, 1120UL, 0UL},
{"atxmega16a4", AVR20K, AVR2K, AVR1K},
{"atxmega16d4", AVR20K, AVR2K, AVR1K},
{"at76c711", AVR16K, AVR2K, 0UL},
-@@ -305,7 +307,7 @@ avr_device_t avr[] =
+@@ -304,7 +306,7 @@ avr_device_t avr[] =
{"at90s2323", AVR2K, AVR128, AVR128},
{"at90s2333", AVR2K, 224UL, AVR128},
{"at90s2343", AVR2K, AVR128, AVR128},
{"attiny22", AVR2K, 224UL, AVR128},
{"attiny2313", AVR2K, AVR128, AVR128},
{"attiny2313a", AVR2K, AVR128, AVR128},
-@@ -316,19 +318,19 @@ avr_device_t avr[] =
+@@ -315,19 +317,19 @@ avr_device_t avr[] =
{"attiny261", AVR2K, AVR128, AVR128},
{"attiny261a", AVR2K, AVR128, AVR128},
{"attiny28", AVR2K, 0UL, 0UL},
static char *avrmcu = NULL;
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:54:26.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:56:53.000000000 +0300
-@@ -256,8 +256,10 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:06:57.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:09:01.000000000 +0530
+@@ -259,9 +259,11 @@ static struct mcu_type_s mcu_types[] =
{"atmega2560", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
{"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega16a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
++ {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
{"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega32a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega32a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
++ {"atxmega32a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
{"atxmega32d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:54:26.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:58:33.000000000 +0300
-@@ -86,8 +86,8 @@ Instruction set avr6 is for the enhanced
+--- gas/doc/c-avr.texi 2011-12-22 12:06:57.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:07:20.000000000 +0530
+@@ -87,8 +87,8 @@ Instruction set avr6 is for the enhanced
atmega2560, atmega2561).
Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
-memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16d4,
--atxmega32a4, atxmega32d4, atxmega32x1).
+-atxmega16x1, atxmega32a4, atxmega32d4, atxmega32x1).
+memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
-+atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1).
++atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1).
Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
memory space and greater than 64K data space (MCU types: none).
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:59:51.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:03:16.000000000 +0300
+--- binutils/size.c 2011-12-22 12:10:12.000000000 +0530
++++ binutils/size.c 2011-12-22 12:10:24.000000000 +0530
@@ -120,6 +120,7 @@ typedef struct
avr_device_t avr[] =
{
{"at90can64", AVR64K, AVR4K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:59:51.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:03:16.000000000 +0300
-@@ -263,15 +263,19 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:10:12.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:11:34.000000000 +0530
+@@ -267,15 +267,19 @@ static struct mcu_type_s mcu_types[] =
{"atxmega32d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
-+ {"atxmega64a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega4},
++ {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
{"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
{"atxmega64a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega5},
{"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega128a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++ {"atxmega128a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega192a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++ {"atxmega192a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega256a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++ {"atxmega256a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega256a3bu",AVR_ISA_XMEGA,bfd_mach_avrxmega6},
{"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:59:51.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:03:16.000000000 +0300
-@@ -93,16 +93,17 @@ Instruction set avrxmega3 is for the XME
+--- gas/doc/c-avr.texi 2011-12-22 12:10:12.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:10:24.000000000 +0530
+@@ -94,16 +94,16 @@ Instruction set avrxmega3 is for the XME
memory space and greater than 64K data space (MCU types: none).
Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
-memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64d3).
-+memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u,
-+atxmega64d3).
++memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u, atxmega64d3).
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,
-atxmega128d3, atxmega192a3, atxmega128b1, atxmega192d3, atxmega256a3,
--atxmega256a3b, atxmega256a3bu, atxmega192d3).
+-atxmega256a3b, atxmega256a3bu).
+memory space and less than 64K data space (MCU types: atxmega128a3, atxmega128a3u,
+atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega192d3, atxmega256a3,
-+atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3).
++atxmega256a3u, atxmega256a3b, atxmega256a3bu).
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,
+++ /dev/null
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:48:20.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:48:28.000000000 +0300
-@@ -208,8 +208,8 @@ avr_device_t avr[] =
- {"atmega3290a", AVR32K, AVR2K, AVR1K},
- {"atmega3290p", AVR32K, AVR2K, AVR1K},
- {"atmega32hvb", AVR32K, AVR2K, AVR1K},
-+ {"atmega32hvbrevb",AVR32K, AVR2K, AVR1K},
- {"atmega32c1", AVR32K, AVR2K, AVR1K},
-- {"atmega32hvb", AVR32K, AVR2K, AVR1K},
- {"atmega32m1", AVR32K, AVR2K, AVR1K},
- {"atmega32u2", AVR32K, AVR1K, AVR1K},
- {"atmega32u4", AVR32K, 2560UL, AVR1K},
-@@ -245,7 +245,8 @@ avr_device_t avr[] =
- {"atmega169pa", AVR16K, AVR1K, AVR512},
- {"atmega16hva", AVR16K, 768UL, AVR256},
- {"atmega16hva2", AVR16K, AVR1K, AVR256},
-- {"atmega16hvb", AVR16K, AVR1K, AVR512},
-+ {"atmega16hvb", AVR16K, AVR1K, AVR512},
-+ {"atmega16hvbrevb",AVR16K, AVR1K, AVR512},
- {"atmega16m1", AVR16K, AVR1K, AVR512},
- {"atmega16u2", AVR16K, AVR512, AVR512},
- {"atmega16u4", AVR16K, 1280UL, AVR512},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:48:20.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:48:28.000000000 +0300
-@@ -220,7 +220,9 @@ static struct mcu_type_s mcu_types[] =
- {"atmega16hva",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16hva2",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16hvb",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
- {"atmega32hvb",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
- {"at90can32" , AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90can64" , AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90pwm216", AVR_ISA_AVR5, bfd_mach_avr5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:48:20.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:48:28.000000000 +0300
-@@ -75,9 +75,9 @@ atmega3290p, atmega406, atmega64, atmega
- atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
- atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
- atmega6490p, atmega64hve, atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb,
--at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4, atmega32c1,
--atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1, atmega16u4,
--atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
-+atmega16hvbrevb, atmega32hvbrevb, at90can32, at90can64, at90pwm216, at90pwm316,
-+atmega16u4, atmega32c1, atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1,
-+atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
-
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-06-24 16:23:14.000000000 +0530
-+++ binutils/size.c 2011-06-24 10:48:45.000000000 +0530
+--- binutils/size.c 2011-12-22 12:14:48.000000000 +0530
++++ binutils/size.c 2011-12-22 12:12:39.000000000 +0530
@@ -119,6 +119,9 @@ typedef struct
avr_device_t avr[] =
{"at90can64", AVR64K, AVR4K, AVR2K},
{"at90scr100", AVR64K, AVR4K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-06-24 16:23:14.000000000 +0530
-+++ gas/config/tc-avr.c 2011-06-24 16:08:14.000000000 +0530
-@@ -203,6 +203,8 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:14:48.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:12:39.000000000 +0530
+@@ -205,6 +205,8 @@ static struct mcu_type_s mcu_types[] =
{"atmega3290p",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega3290pa",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega406", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega64", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega640", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega644", AVR_ISA_AVR5, bfd_mach_avr5},
-@@ -250,11 +252,15 @@ static struct mcu_type_s mcu_types[] =
+@@ -253,11 +255,15 @@ static struct mcu_type_s mcu_types[] =
{"atmega1281", AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega1284p",AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega128rfa1",AVR_ISA_AVR51, bfd_mach_avr51},
+ {"atmega256rfa2", AVR_ISA_AVR6, bfd_mach_avr6},
+ {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
{"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega16a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
{"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-06-24 16:23:14.000000000 +0530
-+++ gas/doc/c-avr.texi 2011-06-24 16:19:20.000000000 +0530
-@@ -68,22 +68,23 @@ memory space (MCU types: at90pwm161, atm
- atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
- atmega168a, atmega168p, atmega169, atmega169p, atmega169pa,
- atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
--atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328, atmega328p,
--atmega329, atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a,
--atmega3290p, atmega3290pa, atmega406, atmega64, atmega640, atmega644, atmega644a, atmega644p,
--atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
--atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
--atmega6490p, atmega64hve, atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb,
--atmega16hvbrevb, atmega32hvbrevb, at90can32, at90can64, at90pwm216, at90pwm316,
--atmega16u4, atmega32c1, atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1,
-+atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
-+atmega328, atmega328p,atmega329, atmega329a, atmega329p, atmega329pa, atmega3290,
-+atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64rfa2, atmega64rfr2,
-+atmega64, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
-+atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
-+atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega64hve,
-+atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb, atmega16hvbrevb,
-+atmega32hvbrevb, at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4,
-+atmega32c1, atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1,
- atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
+--- gas/doc/c-avr.texi 2011-12-22 12:14:48.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:12:39.000000000 +0530
+@@ -70,10 +70,10 @@ atmega168a, atmega168p, atmega169, atmeg
+ atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
+ atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328,
+ atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290,
+-atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega640,
+-atmega644, atmega644a, atmega644p, atmega644pa, atmega645, atmega645a,
+-atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649, atmega649a,
+-atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, atmega16hva2,
++atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64rfa2,
++atmegarfr2, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
++atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
++atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, atmega16hva2,
+ atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve,
+ at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1,
+ atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4,
+@@ -81,10 +81,10 @@ atmega32u6, at90usb646, at90usb647, at94
Instruction set avr51 is for the enhanced AVR core with exactly 128K program
memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
+++ /dev/null
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 15:49:06.000000000 +0300
-+++ binutils/size.c 2011-09-05 15:49:15.000000000 +0300
-@@ -195,9 +195,11 @@ avr_device_t avr[] =
- {"atmega325", AVR32K, AVR2K, AVR1K},
- {"atmega325a", AVR32K, AVR2K, AVR1K},
- {"atmega325p", AVR32K, AVR2K, AVR1K},
-+ {"atmega325pa", AVR32K, AVR2K, AVR1K},
- {"atmega3250", AVR32K, AVR2K, AVR1K},
- {"atmega3250a", AVR32K, AVR2K, AVR1K},
- {"atmega3250p", AVR32K, AVR2K, AVR1K},
-+ {"atmega3250pa", AVR32K, AVR2K, AVR1K},
- {"atmega328", AVR32K, AVR2K, AVR1K},
- {"atmega328p", AVR32K, AVR2K, AVR1K},
- {"atmega329", AVR32K, AVR2K, AVR1K},
-@@ -207,6 +209,7 @@ avr_device_t avr[] =
- {"atmega3290", AVR32K, AVR2K, AVR1K},
- {"atmega3290a", AVR32K, AVR2K, AVR1K},
- {"atmega3290p", AVR32K, AVR2K, AVR1K},
-+ {"atmega3290pa", AVR32K, AVR2K, AVR1K},
- {"atmega32hvb", AVR32K, AVR2K, AVR1K},
- {"atmega32hvbrevb",AVR32K, AVR2K, AVR1K},
- {"atmega32c1", AVR32K, AVR2K, AVR1K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 15:49:06.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 15:49:15.000000000 +0300
-@@ -185,9 +185,11 @@ static struct mcu_type_s mcu_types[] =
- {"atmega325", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega325a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega325p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega325pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250a",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega3250pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega328", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega328p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega329", AVR_ISA_AVR5, bfd_mach_avr5},
-@@ -197,6 +199,7 @@ static struct mcu_type_s mcu_types[] =
- {"atmega3290", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3290a",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3290p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega3290pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega406", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega64", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega640", AVR_ISA_AVR5, bfd_mach_avr5},
-diff -Naurp gas/doc/as.info gas/doc/as.info
---- gas/doc/as.info 2010-03-01 16:49:55.000000000 +0300
-+++ gas/doc/as.info 2011-09-05 15:49:15.000000000 +0300
-@@ -7097,14 +7097,15 @@ File: as.info, Node: AVR Options, Next
- program memory space (MCU types: atmega16, atmega161, atmega162,
- atmega163, atmega164p, atmega165, atmega165p, atmega168,
- atmega168p, atmega169, atmega169p, atmega16c1, atmega32,
-- atmega323, atmega324p, atmega325, atmega325p, atmega3250,
-- atmega3250p, atmega328p, atmega329, atmega329p, atmega3290,
-- atmega3290p, atmega406, atmega64, atmega640, atmega644,
-- atmega644p, atmega644pa, atmega645, atmega6450, atmega649,
-- atmega6490, atmega16hva, atmega16hvb, atmega32hvb, at90can32,
-- at90can64, at90pwm216, at90pwm316, atmega32c1, atmega64c1,
-- atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4,
-- atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
-+ atmega323, atmega324p, atmega325, atmega325p, atmega325pa,
-+ atmega3250, atmega3250p, atmega3250pa, atmega328p, atmega329,
-+ atmega329p, atmega3290, atmega3290p, atmega3290pa, atmega406,
-+ atmega64, atmega640, atmega644, atmega644p, atmega644pa, atmega645,
-+ atmega6450, atmega649, atmega6490, atmega16hva, atmega16hvb,
-+ atmega32hvb, at90can32, at90can64, at90pwm216, at90pwm316,
-+ atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1,
-+ atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647,
-+ at94k, at90scr100).
-
- Instruction set avr51 is for the enhanced AVR core with exactly
- 128K program memory space (MCU types: atmega128, atmega1280,
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 15:49:06.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 15:49:15.000000000 +0300
-@@ -69,9 +69,9 @@ memory space (MCU types: at90pwm161, atm
- atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
- atmega168a, atmega168p, atmega169, atmega169p, atmega169pa,
- atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
--atmega325p, atmega3250, atmega3250a, atmega3250p, atmega328, atmega328p,
-+atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328, atmega328p,
- atmega329, atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a,
--atmega3290p, atmega406, atmega64, atmega640, atmega644, atmega644a, atmega644p,
-+atmega3290p, atmega3290pa, atmega406, atmega64, atmega640, atmega644, atmega644a, atmega644p,
- atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
- atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
- atmega6490p, atmega64hve, atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 16:07:24.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:07:29.000000000 +0300
-@@ -254,6 +254,7 @@ avr_device_t avr[] =
+--- binutils/size.c 2011-12-16 15:25:58.000000000 +0530
++++ binutils/size.c 2011-12-16 15:28:02.000000000 +0530
+@@ -253,6 +253,7 @@ avr_device_t avr[] =
{"atmega165a", AVR16K, AVR1K, AVR512},
{"atmega165", AVR16K, AVR1K, AVR512},
{"atmega165p", AVR16K, AVR1K, AVR512},
{"atmega168a", AVR16K, AVR1K, AVR512},
{"atmega168p", AVR16K, AVR1K, AVR512},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 16:07:24.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:07:29.000000000 +0300
-@@ -172,6 +172,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 15:25:58.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:28:02.000000000 +0530
+@@ -174,6 +174,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega165", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega168a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega168p", AVR_ISA_AVR5, bfd_mach_avr5},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 16:07:24.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:07:29.000000000 +0300
-@@ -65,7 +65,7 @@ at90pwm1,at90pwm2, at90pwm2b, at90pwm3,
+--- gas/doc/c-avr.texi 2011-12-16 15:25:58.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:28:02.000000000 +0530
+@@ -65,7 +65,7 @@ at90pwm1, at90pwm2, at90pwm2b, at90pwm3,
Instruction set avr5 is for the enhanced AVR core with up to 128K program
memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
-atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
+atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega165pa, atmega168,
- atmega168a, atmega168p, atmega169, atmega169p, atmega169pa,
- atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
- atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
+ atmega168a, atmega168p, atmega169, atmega169a, atmega169p, atmega169pa,
+ atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
+ atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 16:08:16.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:08:24.000000000 +0300
+--- binutils/size.c 2011-12-22 12:16:07.000000000 +0530
++++ binutils/size.c 2011-12-22 12:16:21.000000000 +0530
@@ -108,6 +108,7 @@ static int return_code = 0;
#define AVR200K 204800UL
#define AVR256K 262144UL
{"atmega256rfr2", AVR256K, AVR32K, AVR8K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 16:08:16.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:08:24.000000000 +0300
-@@ -286,6 +286,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:16:07.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:21:02.000000000 +0530
+@@ -290,6 +290,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega256a3bu",AVR_ISA_XMEGA,bfd_mach_avrxmega6},
{"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega384c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++ {"atxmega384c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {"atxmega128a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+ {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
{"attiny4", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 16:08:16.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:08:24.000000000 +0300
-@@ -104,9 +104,9 @@ atxmega64a1u).
+--- gas/doc/c-avr.texi 2011-12-22 12:16:07.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:16:21.000000000 +0530
+@@ -103,9 +103,9 @@ atxmega64a1u).
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, atxmega128a3u,
atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega192d3, atxmega256a3,
--atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3).
-+atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3, atxmega384c3).
+-atxmega256a3u, atxmega256a3b, atxmega256a3bu).
++atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega384c3).
-Instruction set avrxmega7 is for the XMEGA AVR core with up to 256K program
+Instruction set avrxmega7 is for the XMEGA AVR core with greater than 64K program
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 16:10:37.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:10:56.000000000 +0300
-@@ -318,6 +318,7 @@ avr_device_t avr[] =
+--- binutils/size.c 2011-12-16 15:29:27.000000000 +0530
++++ binutils/size.c 2011-12-16 15:32:13.000000000 +0530
+@@ -317,6 +317,7 @@ avr_device_t avr[] =
{"attiny461", AVR4K, AVR256, AVR256},
{"attiny461a", AVR4K, AVR256, AVR256},
{"attiny48", AVR4K, AVR256, AVR64},
{"at86rf401", AVR2K, 224UL, AVR128},
{"at90s2313", AVR2K, AVR128, AVR128},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 16:10:37.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:10:56.000000000 +0300
-@@ -130,6 +130,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 15:29:27.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:32:13.000000000 +0530
+@@ -132,6 +132,7 @@ static struct mcu_type_s mcu_types[] =
{"attiny43u", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny48", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny88", AVR_ISA_AVR25, bfd_mach_avr25},
{"ata6289", AVR_ISA_AVR25, bfd_mach_avr25},
{"at43usb355", AVR_ISA_AVR3, bfd_mach_avr3},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 16:10:37.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:10:56.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-16 15:29:27.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:32:13.000000000 +0530
@@ -46,7 +46,7 @@ space plus the MOVW instruction (MCU typ
- attiny2313a, attiny24, attiny24a, attiny4313, attiny43u, attiny44, attiny44a,
- attiny84, attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a,
- attiny461, attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48,
--attiny88, at86rf401, ata6289).
-+attiny88, attiny80, at86rf401, ata6289).
+ attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
+ attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
+ attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
+-at86rf401, ata6289).
++attiny80, at86rf401, ata6289).
Instruction set avr3 is for the classic AVR core with up to 128K program
memory space (MCU types: at43usb355, at76c711).
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 16:11:30.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:11:38.000000000 +0300
+--- binutils/size.c 2011-12-22 12:22:14.000000000 +0530
++++ binutils/size.c 2011-12-22 12:22:22.000000000 +0530
@@ -143,6 +143,7 @@ avr_device_t avr[] =
{"atxmega128a1", AVR136K, AVR8K, AVR2K},
{"atxmega128a3u", AVR136K, AVR8K, AVR2K},
{"atxmega128b1", AVR136K, AVR8K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 16:11:30.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:11:38.000000000 +0300
-@@ -290,6 +290,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega384c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+--- gas/config/tc-avr.c 2011-12-22 12:22:14.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:23:13.000000000 +0530
+@@ -294,6 +294,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega384c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {"atxmega128a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
-+ {"atxmega128a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+ {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
++ {"atxmega128a4u", AVR_ISA_XMEGAU, bfd_mach_avrxmega7},
{"attiny4", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
{"attiny5", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
{"attiny9", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 16:11:30.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:11:38.000000000 +0300
-@@ -108,7 +108,7 @@ atxmega256a3u, atxmega256a3b, atxmega256
+--- gas/doc/c-avr.texi 2011-12-22 12:22:14.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:22:22.000000000 +0530
+@@ -107,7 +107,7 @@ atxmega256a3u, atxmega256a3b, atxmega256
Instruction set avrxmega7 is for the XMEGA AVR core with greater than 64K program
memory space and greater than 64K data space (MCU types: atxmega128a1,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 16:12:22.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:12:30.000000000 +0300
+--- binutils/size.c 2011-12-22 12:27:41.000000000 +0530
++++ binutils/size.c 2011-12-22 12:28:09.000000000 +0530
@@ -165,7 +165,8 @@ avr_device_t avr[] =
{"atxmega64a3", AVR68K, AVR4K, AVR2K},
{"atxmega64a3u", AVR68K, AVR4K, AVR2K},
{"atmega64rfr2", AVR64K, AVR8K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 16:12:22.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:12:30.000000000 +0300
-@@ -273,6 +273,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:27:41.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:28:09.000000000 +0530
+@@ -277,6 +277,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
{"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64d4", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
{"atxmega64a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega5},
{"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 16:12:22.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:12:30.000000000 +0300
-@@ -95,7 +95,7 @@ memory space and greater than 64K data s
+--- gas/doc/c-avr.texi 2011-12-22 12:27:41.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:28:09.000000000 +0530
+@@ -94,7 +94,8 @@ Instruction set avrxmega3 is for the XME
+ memory space and greater than 64K data space (MCU types: none).
Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
- memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u,
--atxmega64d3).
+-memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u, atxmega64d3).
++memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u,
+atxmega64d3, atxmega64d4).
Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K program
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-05 16:13:00.000000000 +0300
-+++ binutils/size.c 2011-09-05 16:13:06.000000000 +0300
+--- binutils/size.c 2011-12-16 15:36:12.000000000 +0530
++++ binutils/size.c 2011-12-16 15:38:01.000000000 +0530
@@ -175,6 +175,7 @@ avr_device_t avr[] =
{"at90usb646", AVR64K, AVR4K, AVR2K},
{"at90usb647", AVR64K, AVR4K, AVR2K},
{"atmega640", AVR64K, AVR8K, AVR4K},
{"atmega644", AVR64K, AVR4K, AVR2K},
{"atmega644a", AVR64K, AVR4K, AVR2K},
-@@ -207,6 +208,7 @@ avr_device_t avr[] =
+@@ -206,6 +207,7 @@ avr_device_t avr[] =
{"at90can32", AVR32K, AVR2K, AVR1K},
{"at94k", AVR32K, AVR4K, 0UL},
{"atmega32", AVR32K, AVR2K, AVR1K},
{"atmega323", AVR32K, AVR2K, AVR1K},
{"atmega324a", AVR32K, AVR2K, AVR1K},
{"atmega324p", AVR32K, AVR2K, AVR1K},
-@@ -256,6 +258,7 @@ avr_device_t avr[] =
+@@ -255,6 +257,7 @@ avr_device_t avr[] =
{"atmega164", AVR16K, AVR1K, AVR512},
{"atmega164a", AVR16K, AVR1K, AVR512},
{"atmega164p", AVR16K, AVR1K, AVR512},
{"atmega165a", AVR16K, AVR1K, AVR512},
{"atmega165", AVR16K, AVR1K, AVR512},
{"atmega165p", AVR16K, AVR1K, AVR512},
-@@ -263,6 +266,7 @@ avr_device_t avr[] =
+@@ -262,6 +265,7 @@ avr_device_t avr[] =
{"atmega168", AVR16K, AVR1K, AVR512},
{"atmega168a", AVR16K, AVR1K, AVR512},
{"atmega168p", AVR16K, AVR1K, AVR512},
{"atmega169a", AVR16K, AVR1K, AVR512},
{"atmega169p", AVR16K, AVR1K, AVR512},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-05 16:13:00.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-05 16:13:06.000000000 +0300
-@@ -170,6 +170,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 15:36:12.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:38:01.000000000 +0530
+@@ -172,6 +172,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega163", AVR_ISA_M161, bfd_mach_avr5},
{"atmega164a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega164p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165p", AVR_ISA_AVR5, bfd_mach_avr5},
-@@ -177,11 +178,13 @@ static struct mcu_type_s mcu_types[] =
+@@ -179,11 +180,13 @@ static struct mcu_type_s mcu_types[] =
{"atmega168", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega168a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega168p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega323", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega324a", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega324p", AVR_ISA_AVR5, bfd_mach_avr5},
-@@ -208,6 +211,7 @@ static struct mcu_type_s mcu_types[] =
+@@ -210,6 +213,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega64rfa2", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega64rfr2", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega64", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega644", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega644a", AVR_ISA_AVR5, bfd_mach_avr5},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-05 16:13:00.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-05 16:13:06.000000000 +0300
-@@ -65,13 +65,13 @@ at90pwm1,at90pwm2, at90pwm2b, at90pwm3,
+--- gas/doc/c-avr.texi 2011-12-16 15:36:12.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:38:01.000000000 +0530
+@@ -65,12 +65,12 @@ at90pwm1, at90pwm2, at90pwm2b, at90pwm3,
Instruction set avr5 is for the enhanced AVR core with up to 128K program
memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
-atmega163, atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega165pa, atmega168,
--atmega168a, atmega168p, atmega169, atmega169p, atmega169pa,
--atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
-+atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa,
-+atmega168, atmega168a, atmega168p, atmega168pa, atmega169, atmega169p, atmega169pa,
-+atmega32, atmega32a, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
- atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
- atmega328, atmega328p,atmega329, atmega329a, atmega329p, atmega329pa, atmega3290,
- atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64rfa2, atmega64rfr2,
--atmega64, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
-+atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
- atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
- atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega64hve,
- atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb, atmega16hvbrevb,
+-atmega168a, atmega168p, atmega169, atmega169a, atmega169p, atmega169pa,
+-atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
++atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa, atmega168,
++atmega168a, atmega168p, atmega168pa, atmega169, atmega169a, atmega169p, atmega169pa,
++atmega32, atmega32a, atmega323, atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
+ atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328,
+ atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290,
+-atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64rfa2,
++atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, atmega64rfa2,
+ atmegarfr2, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
+ atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
+ atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, atmega16hva2,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-07 14:41:26.000000000 +0300
-+++ binutils/size.c 2011-09-07 14:55:58.000000000 +0300
+--- binutils/size.c 2011-12-22 12:30:35.000000000 +0530
++++ binutils/size.c 2011-12-22 12:30:49.000000000 +0530
@@ -147,6 +147,7 @@ avr_device_t avr[] =
{"atxmega128a3", AVR136K, AVR8K, AVR2K},
{"atxmega128a3u", AVR136K, AVR8K, AVR2K},
{"atxmega64d4", AVR68K, AVR4K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-07 14:41:26.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-07 14:55:58.000000000 +0300
-@@ -276,6 +276,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:30:35.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:31:58.000000000 +0530
+@@ -280,6 +280,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
+ {"atxmega64b3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64d4", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
-@@ -283,6 +284,7 @@ static struct mcu_type_s mcu_types[] =
+@@ -287,6 +288,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega128a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega128a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega128b3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega192a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega192a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-07 14:41:26.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-07 14:55:58.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-22 12:30:35.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:30:49.000000000 +0530
@@ -95,7 +95,7 @@ memory space and greater than 64K data s
Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
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,
-@@ -103,8 +103,8 @@ atxmega64a1u).
+@@ -103,7 +103,7 @@ atxmega64a1u).
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, atxmega128a3u,
-atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega192d3, atxmega256a3,
--atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3, atxmega384c3).
-+atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192d3,
-+atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3, atxmega384c3).
++atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192d3, atxmega256a3,
+ atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega384c3).
Instruction set avrxmega7 is for the XMEGA AVR core with greater than 64K program
- memory space and greater than 64K data space (MCU types: atxmega128a1,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-07 18:04:50.000000000 +0300
-+++ binutils/size.c 2011-09-07 18:11:50.000000000 +0300
+--- binutils/size.c 2011-12-22 12:33:22.000000000 +0530
++++ binutils/size.c 2011-12-22 12:33:37.000000000 +0530
@@ -165,6 +165,7 @@ avr_device_t avr[] =
{"atxmega64a1u", AVR68K, AVR4K, AVR2K},
{"atxmega64a3", AVR68K, AVR4K, AVR2K},
{"atxmega64d3", AVR68K, AVR4K, AVR2K},
{"atxmega64d4", AVR68K, AVR4K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-07 18:04:50.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-07 18:10:28.000000000 +0300
-@@ -276,6 +276,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:33:22.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:34:22.000000000 +0530
+@@ -280,6 +280,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
+ {"atxmega64b1", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64b3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64d4", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-07 18:04:50.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-07 18:12:34.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-22 12:33:22.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:33:37.000000000 +0530
@@ -95,7 +95,7 @@ memory space and greater than 64K data s
Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-08 17:12:34.000000000 +0300
-+++ binutils/size.c 2011-09-08 17:19:37.000000000 +0300
+--- binutils/size.c 2011-12-16 15:50:12.000000000 +0530
++++ binutils/size.c 2011-12-16 15:51:32.000000000 +0530
@@ -155,8 +155,10 @@ avr_device_t avr[] =
{"at90usb1286", AVR128K, AVR8K, AVR4K},
{"at90usb1287", AVR128K, AVR8K, AVR4K},
{"atmega1284p", AVR128K, AVR16K, AVR4K},
{"atmega128rfa1", AVR128K, AVR16K, AVR4K},
{"atmega103", AVR128K, 4000UL, AVR4K},
-@@ -296,6 +298,7 @@ avr_device_t avr[] =
+@@ -295,6 +297,7 @@ avr_device_t avr[] =
{"at90usb82", AVR8K, AVR512, AVR512},
{"ata6289", AVR8K, AVR512, 320UL},
{"atmega8", AVR8K, AVR1K, AVR512},
{"atmega8535", AVR8K, AVR512, AVR512},
{"atmega88", AVR8K, AVR1K, AVR512},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-08 17:12:34.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-08 17:17:16.000000000 +0300
-@@ -145,6 +145,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-16 15:50:12.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 15:51:32.000000000 +0530
+@@ -147,6 +147,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega32u2", AVR_ISA_AVR35, bfd_mach_avr35},
{"attiny1634", AVR_ISA_AVR35, bfd_mach_avr35},
{"atmega8", AVR_ISA_M8, bfd_mach_avr4},
{"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega48a", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega48pa", AVR_ISA_AVR4, bfd_mach_avr4},
-@@ -254,8 +255,10 @@ static struct mcu_type_s mcu_types[] =
+@@ -257,8 +258,10 @@ static struct mcu_type_s mcu_types[] =
{"at94k", AVR_ISA_94K, bfd_mach_avr5},
{"m3000", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega128", AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega128rfa1",AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega128rfa2",AVR_ISA_AVR51, bfd_mach_avr51},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-08 17:12:34.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-08 17:23:11.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-16 15:50:12.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 15:51:32.000000000 +0530
@@ -59,7 +59,7 @@ instructions (MCU types: attiny167, atti
atmega8u2, atmega16u2, atmega32u2).
Instruction set avr4 is for the enhanced AVR core with up to 8K program
--memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p,atmega8,
-+memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p,atmega8, atmega8a,
+-memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8,
++memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8, atmega8a
atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva,
- at90pwm1,at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
+ at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
-@@ -80,7 +80,7 @@ atmega32c1, atmega64c1, atmega64m1, atme
- atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
+@@ -80,7 +80,7 @@ atmega64c1, atmega16m1, atmega32m1, atme
+ atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
Instruction set avr51 is for the enhanced AVR core with exactly 128K program
-memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-12 14:15:53.000000000 +0300
-+++ binutils/size.c 2011-09-12 14:24:31.000000000 +0300
+--- binutils/size.c 2011-12-22 12:36:03.000000000 +0530
++++ binutils/size.c 2011-12-22 12:36:08.000000000 +0530
@@ -167,6 +167,7 @@ avr_device_t avr[] =
{"atxmega64a1u", AVR68K, AVR4K, AVR2K},
{"atxmega64a3", AVR68K, AVR4K, AVR2K},
{"atxmega64b3", AVR68K, AVR4K, AVR2K},
{"atxmega64d3", AVR68K, AVR4K, AVR2K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-12 14:15:53.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-12 14:24:31.000000000 +0300
-@@ -279,6 +279,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:36:03.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:36:51.000000000 +0530
+@@ -283,6 +283,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
- {"atxmega64a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega4},
-+ {"atxmega64a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
++ {"atxmega64a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
{"atxmega64b1", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64b3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
{"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-12 14:15:53.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-12 14:24:31.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-22 12:36:03.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:36:08.000000000 +0530
@@ -95,7 +95,7 @@ memory space and greater than 64K data s
Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-15 11:59:56.000000000 +0300
-+++ binutils/size.c 2011-09-15 12:04:20.000000000 +0300
+--- binutils/size.c 2011-12-22 12:38:05.000000000 +0530
++++ binutils/size.c 2011-12-22 12:38:14.000000000 +0530
@@ -149,6 +149,7 @@ avr_device_t avr[] =
{"atxmega128b1", AVR136K, AVR8K, AVR2K},
{"atxmega128b3", AVR136K, AVR8K, AVR2K},
{"at43usb320", AVR128K, 608UL, 0UL},
{"at90can128", AVR128K, AVR4K, AVR4K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-15 11:59:56.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-15 12:04:20.000000000 +0300
-@@ -291,6 +291,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:38:05.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:38:14.000000000 +0530
+@@ -295,6 +295,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128b3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega128d4", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega192a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega192a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-15 11:59:56.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-15 12:04:20.000000000 +0300
-@@ -103,8 +103,9 @@ atxmega64a1u).
+--- gas/doc/c-avr.texi 2011-12-22 12:38:05.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:38:14.000000000 +0530
+@@ -103,7 +103,7 @@ atxmega64a1u).
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, atxmega128a3u,
--atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192d3,
--atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3, atxmega384c3).
-+atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3,
-+atxmega192d3, atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3,
-+atxmega384c3).
+-atxmega128d3, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192d3, atxmega256a3,
++atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192d3, atxmega256a3,
+ atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega384c3).
Instruction set avrxmega7 is for the XMEGA AVR core with greater than 64K program
- memory space and greater than 64K data space (MCU types: atxmega128a1,
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-09-15 16:09:26.000000000 +0300
-+++ binutils/size.c 2011-09-15 16:08:10.000000000 +0300
+--- binutils/size.c 2011-12-22 12:39:06.000000000 +0530
++++ binutils/size.c 2011-12-22 12:39:15.000000000 +0530
@@ -95,12 +95,14 @@ static int return_code = 0;
#define AVR2K 2048UL
#define AVR4K 4096UL
{"atmega406", AVR40K, AVR2K, AVR512},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-09-15 16:09:26.000000000 +0300
-+++ gas/config/tc-avr.c 2011-09-15 16:08:10.000000000 +0300
-@@ -270,6 +270,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:39:06.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:39:15.000000000 +0530
+@@ -273,6 +273,7 @@ static struct mcu_type_s mcu_types[] =
{"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega256rfa2", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
+ {"atmxt336s", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega16a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
{"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-09-15 16:09:26.000000000 +0300
-+++ gas/doc/c-avr.texi 2011-09-15 16:08:10.000000000 +0300
+--- gas/doc/c-avr.texi 2011-12-22 12:39:06.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:39:15.000000000 +0530
@@ -88,7 +88,7 @@ atmega2560, atmega2561, atmega256rfa2, a
Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
--atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1).
-+atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1, atmxt336s).
+-atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1).
++atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1, atmxt336s).
Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
memory space and greater than 64K data space (MCU types: none).
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-11-02 17:21:35.000000000 +0530
-+++ binutils/size.c 2011-11-02 17:32:40.000000000 +0530
+--- binutils/size.c 2011-12-22 12:40:00.000000000 +0530
++++ binutils/size.c 2011-12-22 12:40:10.000000000 +0530
@@ -131,6 +131,7 @@ avr_device_t avr[] =
{"atxmega256a3u", AVR264K, AVR16K, AVR4K},
{"atxmega256a3b", AVR264K, AVR16K, AVR4K},
{"atxmega128d4", AVR136K, AVR8K, AVR2K},
@@ -213,6 +215,7 @@ avr_device_t avr[] =
-
+
{"atxmega32a4", AVR36K, AVR4K, AVR1K},
{"atxmega32a4u", AVR36K, AVR4K, AVR1K},
+ {"atxmega32c4", AVR36K, AVR4K, AVR1K},
{"atxmega32d4", AVR36K, AVR4K, AVR1K},
- {"atxmega32x1", AVR36K, AVR2K, AVR1K},
-@@ -254,6 +257,7 @@ avr_device_t avr[] =
+ {"at90can32", AVR32K, AVR2K, AVR1K},
+@@ -253,6 +256,7 @@ avr_device_t avr[] =
{"atxmega16a4", AVR20K, AVR2K, AVR1K},
{"atxmega16a4u", AVR20K, AVR2K, AVR1K},
{"at76c711", AVR16K, AVR2K, 0UL},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-11-02 17:21:35.000000000 +0530
-+++ gas/config/tc-avr.c 2011-11-02 17:25:47.000000000 +0530
-@@ -273,9 +273,11 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2011-12-22 12:40:00.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:44:21.000000000 +0530
+@@ -276,10 +276,12 @@ static struct mcu_type_s mcu_types[] =
{"atmxt336s", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega16a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega16c4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
++ {"atxmega16c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
{"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega32a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega32a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega32c4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega32a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
++ {"atxmega32c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
{"atxmega32d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega32x1", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
-@@ -291,6 +293,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega128a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+@@ -295,6 +297,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega128a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128b3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+ {"atxmega128c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++ {"atxmega128c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128d4", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-@@ -300,6 +303,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega256a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+@@ -304,6 +307,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega256a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega256a3bu",AVR_ISA_XMEGA,bfd_mach_avrxmega6},
-+ {"atxmega256c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
++ {"atxmega256c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega384c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega384c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-11-02 17:21:35.000000000 +0530
-+++ gas/doc/c-avr.texi 2011-11-02 17:38:30.000000000 +0530
-@@ -88,7 +88,8 @@ atmega2560, atmega2561, atmega256rfa2, a
+--- gas/doc/c-avr.texi 2011-12-22 12:40:00.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:40:10.000000000 +0530
+@@ -87,8 +87,9 @@ Instruction set avr6 is for the enhanced
+ atmega2560, atmega2561, atmega256rfa2, atmega256rfr2).
Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
--atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1, atmxt336s).
-+atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4,
-+atxmega32x1, atmxt336s).
+-memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
+-atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32d4, atxmega32x1, atmxt336s).
++memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u, atxmega16c4,
++atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, ,atxmega32c4, atxmega32d4, atxmega32x1,
++atmxt336s).
Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
memory space and greater than 64K data space (MCU types: none).
-@@ -103,9 +104,9 @@ atxmega64a1u).
+@@ -103,8 +104,9 @@ atxmega64a1u).
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, atxmega128a3u,
--atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3,
--atxmega192d3, atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega192d3,
--atxmega384c3).
-+atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
-+atxmega128b3, atxmega192d3, atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu,
+-atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192d3, atxmega256a3,
+-atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega384c3).
++atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
++atxmega128b3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu,
+atxmega256c3, atxmega256d3, atxmega384c3).
Instruction set avrxmega7 is for the XMEGA AVR core with greater than 64K program
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-11-08 14:48:07.000000000 +0530
-+++ binutils/size.c 2011-11-08 14:50:07.000000000 +0530
+--- binutils/size.c 2011-12-22 12:45:34.000000000 +0530
++++ binutils/size.c 2011-12-22 12:45:45.000000000 +0530
@@ -110,6 +110,7 @@ static int return_code = 0;
#define AVR200K 204800UL
#define AVR256K 262144UL
{"atmega256rfa2", AVR256K, AVR32K, AVR8K},
{"atmega256rfr2", AVR256K, AVR32K, AVR8K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-11-08 14:48:07.000000000 +0530
-+++ gas/config/tc-avr.c 2011-11-08 14:50:07.000000000 +0530
-@@ -306,6 +306,7 @@ static struct mcu_type_s mcu_types[] =
- {"atxmega256c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+--- gas/config/tc-avr.c 2011-12-22 12:45:34.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:46:09.000000000 +0530
+@@ -310,6 +310,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega256c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
{"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega384c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega384c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
+ {"atxmega384d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {"atxmega128a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
- {"atxmega128a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+ {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+ {"atxmega128a4u", AVR_ISA_XMEGAU, bfd_mach_avrxmega7},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-11-08 14:48:07.000000000 +0530
-+++ gas/doc/c-avr.texi 2011-11-08 14:55:04.000000000 +0530
+--- gas/doc/c-avr.texi 2011-12-22 12:45:34.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:45:45.000000000 +0530
@@ -106,7 +106,7 @@ Instruction set avrxmega6 is for the XME
memory space and less than 64K data space (MCU types: atxmega128a3, atxmega128a3u,
- atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
- atxmega128b3, atxmega192d3, atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu,
+ atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
+ atxmega128b3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu,
-atxmega256c3, atxmega256d3, atxmega384c3).
+atxmega256c3, atxmega256d3, atxmega384c3, atxmega384d3).
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2011-12-16 16:16:32.000000000 +0530
++++ binutils/size.c 2011-12-16 16:22:02.000000000 +0530
+@@ -102,6 +102,7 @@ static int return_code = 0;
+ #define AVR32K 32768UL
+ #define AVR36K 36864UL
+ #define AVR40K 40960UL
++#define AVR48K 49152UL
+ #define AVR52K 53248UL
+ #define AVR64K 65536UL
+ #define AVR68K 69632UL
+@@ -331,6 +332,7 @@ avr_device_t avr[] =
+ {"at90s4433", AVR4K, AVR128, AVR256},
+ {"at90s4434", AVR4K, 352UL, AVR256},
+ {"atmega48", AVR4K, AVR512, AVR256},
++ {"atmega48hvf", AVR48K, AVR2K, AVR1K},
+ {"atmega48a", AVR4K, AVR512, AVR256},
+ {"atmega48pa", AVR4K, AVR512, AVR256},
+ {"atmega48p", AVR4K, AVR512, AVR256},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2011-12-16 16:16:32.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-16 16:22:02.000000000 +0530
+@@ -238,6 +238,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
+ {"atmega32hvb",AVR_ISA_AVR5, bfd_mach_avr5},
+ {"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
++ {"atmega48hvf",AVR_ISA_AVR5, bfd_mach_avr5},
+ {"atmega64hve",AVR_ISA_AVR5, bfd_mach_avr5},
+ {"at90can32" , AVR_ISA_AVR5, bfd_mach_avr5},
+ {"at90can64" , AVR_ISA_AVR5, bfd_mach_avr5},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2011-12-16 16:19:33.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-16 16:22:02.000000000 +0530
+@@ -74,8 +74,8 @@ atmega3290a, atmega3290p, atmega3290pa,
+ atmegarfr2, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
+ atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
+ atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, atmega16hva2,
+-atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve,
+-at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1,
++atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega48hvf, atmega64hve,
++at90can32, at90can64, at90pwm216, at90pwm316, atmega32c1,
+ atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4,
+ atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
+
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-12-08 14:07:10.000000000 +0530
-+++ binutils/size.c 2011-12-14 18:26:08.000000000 +0530
+--- binutils/size.c 2011-12-22 12:53:39.000000000 +0530
++++ binutils/size.c 2011-12-22 12:53:45.000000000 +0530
@@ -99,6 +99,7 @@ static int return_code = 0;
#define AVR16K 16384UL
#define AVR20K 20480UL
#define AVR32K 32768UL
#define AVR36K 36864UL
#define AVR40K 40960UL
-@@ -257,6 +258,8 @@ avr_device_t avr[] =
+@@ -256,6 +257,8 @@ avr_device_t avr[] =
{"atmega32u4", AVR32K, 2560UL, AVR1K},
{"atmega32u6", AVR32K, 2560UL, AVR1K},
{"atxmega16a4", AVR20K, AVR2K, AVR1K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-12-08 14:07:10.000000000 +0530
-+++ gas/config/tc-avr.c 2011-12-08 14:08:31.000000000 +0530
-@@ -235,6 +235,7 @@ static struct mcu_type_s mcu_types[] =
- {"atmega16hva2",AVR_ISA_AVR5, bfd_mach_avr5},
+--- gas/config/tc-avr.c 2011-12-22 12:53:39.000000000 +0530
++++ gas/config/tc-avr.c 2011-12-22 12:53:45.000000000 +0530
+@@ -236,6 +236,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atmega16hva2",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega16hvb",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
+ {"atmega26hvg",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
{"atmega48hvf",AVR_ISA_AVR5, bfd_mach_avr5},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-12-08 14:07:10.000000000 +0530
-+++ gas/doc/c-avr.texi 2011-12-08 14:13:40.000000000 +0530
+--- gas/doc/c-avr.texi 2011-12-22 12:53:39.000000000 +0530
++++ gas/doc/c-avr.texi 2011-12-22 12:53:45.000000000 +0530
@@ -74,7 +74,7 @@ atmega3290a, atmega3290p, atmega3290pa,
- atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
- atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
- atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega64hve,
--atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb, atmega16hvbrevb,
-+atmega16hva, atmega16hva2, atmega16hvb, atmega26hvg, atmega32hvb, atmega16hvbrevb,
- atmega32hvbrevb, atmega48hvf, at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4,
- atmega32c1, atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1,
- atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
+ atmegarfr2, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
+ atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
+ atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, atmega16hva2,
+-atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega48hvf, atmega64hve,
++atmega16hvb, atmega16hvbrevb, atmega26hvg, atmega32hvb, atmega32hvbrevb, atmega48hvf, atmega64hve,
+ at90can32, at90can64, at90pwm216, at90pwm316, atmega32c1,
+ atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4,
+ atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2012-01-18 12:59:34.000000000 +0530
-+++ binutils/size.c 2012-01-18 12:58:46.000000000 +0530
+--- binutils/size.c 2012-02-10 20:48:10.000000000 +0530
++++ binutils/size.c 2012-02-10 20:49:19.000000000 +0530
@@ -95,6 +95,7 @@ static int return_code = 0;
#define AVR2K 2048UL
#define AVR4K 4096UL
{"atxmega32a4u", AVR36K, AVR4K, AVR1K},
{"atxmega32c4", AVR36K, AVR4K, AVR1K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2012-01-18 12:59:34.000000000 +0530
-+++ gas/config/tc-avr.c 2012-01-18 12:58:46.000000000 +0530
-@@ -272,6 +272,8 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2012-02-10 20:48:10.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-10 20:49:19.000000000 +0530
+@@ -275,6 +275,8 @@ static struct mcu_type_s mcu_types[] =
{"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega256rfa2", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
+ {"atmxt224e", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atmxt336s", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
{"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
- {"atxmega16a4u",AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2012-01-18 12:59:34.000000000 +0530
-+++ gas/doc/c-avr.texi 2012-01-18 13:02:14.000000000 +0530
+--- gas/doc/c-avr.texi 2012-02-10 20:48:10.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-10 20:52:41.000000000 +0530
@@ -89,7 +89,7 @@ atmega2560, atmega2561, atmega256rfa2, a
Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4,
--atxmega32x1, atmxt336s).
-+atxmega32x1, atmxt224, atmxt224e, atmxt336s).
+ memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u, atxmega16c4,
+ atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, ,atxmega32c4, atxmega32d4, atxmega32x1,
+-atmxt336s).
++atmxt224, atmxt224e, atmxt336s).
Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
memory space and greater than 64K data space (MCU types: none).
diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2012-01-18 19:44:42.000000000 +0530
-+++ binutils/size.c 2012-01-23 13:58:59.000000000 +0530
-@@ -144,6 +144,7 @@ avr_device_t avr[] =
+--- binutils/size.c 2012-02-10 20:56:48.000000000 +0530
++++ binutils/size.c 2012-02-10 20:57:23.000000000 +0530
+@@ -145,6 +145,7 @@ avr_device_t avr[] =
{"atxmega192a3", AVR200K, AVR16K, AVR2K},
{"atxmega192a3u", AVR200K, AVR16K, AVR2K},
{"atmega128rfa2", AVR128K, AVR16K, AVR4K},
diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2012-01-18 19:44:41.000000000 +0530
-+++ gas/config/tc-avr.c 2012-01-18 18:53:03.000000000 +0530
-@@ -300,6 +300,7 @@ static struct mcu_type_s mcu_types[] =
+--- gas/config/tc-avr.c 2012-02-10 20:56:48.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-10 21:01:00.000000000 +0530
+@@ -306,6 +306,7 @@ static struct mcu_type_s mcu_types[] =
{"atxmega128d4", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega192a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega192a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
+ {"atxmega192c3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
{"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
- {"atxmega256a3u",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega256a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2012-01-18 19:44:41.000000000 +0530
-+++ gas/doc/c-avr.texi 2012-01-18 18:59:24.000000000 +0530
+--- gas/doc/c-avr.texi 2012-02-10 20:56:48.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-10 20:59:05.000000000 +0530
@@ -105,7 +105,7 @@ atxmega64a1u).
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, atxmega128a3u,
- atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
--atxmega128b3, atxmega192d3, atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu,
-+atxmega128b3, ,atxmega192c3, atxmega192d3, atxmega256a3,atxmega256a3u, atxmega256a3b, atxmega256a3bu,
+ atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
+-atxmega128b3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu,
++atxmega128b3, atxmega192c3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu,
atxmega256c3, atxmega256d3, atxmega384c3, atxmega384d3).
Instruction set avrxmega7 is for the XMEGA AVR core with greater than 64K program
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2012-02-10 21:04:14.000000000 +0530
++++ binutils/size.c 2012-02-10 21:04:48.000000000 +0530
+@@ -218,6 +218,8 @@ avr_device_t avr[] =
+
+ {"atmxt336s", AVR52K, AVR14K, 0UL},
+
++ {"atmxt112sl", AVR48K, AVR8K, 0UL},
++
+ {"atmega406", AVR40K, AVR2K, AVR512},
+
+ {"atmxt224", AVR36K, AVR9K, 0UL},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-02-10 21:04:14.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-10 21:04:48.000000000 +0530
+@@ -275,6 +275,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
+ {"atmega256rfa2", AVR_ISA_AVR6, bfd_mach_avr6},
+ {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
++ {"atmxt112sl", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atmxt224", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atmxt224e", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atmxt336s", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2012-02-10 21:04:14.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-10 21:06:26.000000000 +0530
+@@ -88,8 +88,8 @@ atmega2560, atmega2561, atmega256rfa2, a
+
+ Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
+ memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u, atxmega16c4,
+-atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, ,atxmega32c4, atxmega32d4, atxmega32x1,
+-atmxt224, atmxt224e, atmxt336s).
++atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, ,atxmega32c4, atxmega32d4,
++atxmega32x1, atmxt224, atmxt224e, atmxt336s, atmxt112sl).
+
+ Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
+ memory space and greater than 64K data space (MCU types: none).
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2012-02-10 21:10:36.000000000 +0530
++++ binutils/size.c 2012-02-10 21:11:04.000000000 +0530
+@@ -182,6 +182,7 @@ avr_device_t avr[] =
+ {"atxmega64a4u", AVR68K, AVR4K, AVR2K},
+ {"atxmega64b1", AVR68K, AVR4K, AVR2K},
+ {"atxmega64b3", AVR68K, AVR4K, AVR2K},
++ {"atxmega64c3", AVR68K, AVR4K, AVR2K},
+ {"atxmega64d3", AVR68K, AVR4K, AVR2K},
+ {"atxmega64d4", AVR68K, AVR4K, AVR2K},
+
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-02-10 21:10:36.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-10 21:11:04.000000000 +0530
+@@ -294,6 +294,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega64a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
+ {"atxmega64b1", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64b3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
++ {"atxmega64c3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64d4", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2012-02-10 21:10:36.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-10 21:11:04.000000000 +0530
+@@ -96,7 +96,7 @@ memory space and greater than 64K data s
+
+ Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
+ memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u,
+-atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64d3, atxmega64d4).
++atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3, atxmega64d4).
+
+ 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,
+++ /dev/null
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c 2011-11-16 13:02:43.000000000 +0530
-+++ binutils/size.c 2011-11-16 15:28:08.000000000 +0530
-@@ -102,6 +102,7 @@ static int return_code = 0;
- #define AVR32K 32768UL
- #define AVR36K 36864UL
- #define AVR40K 40960UL
-+#define AVR48K 49152UL
- #define AVR52K 53248UL
- #define AVR64K 65536UL
- #define AVR68K 69632UL
-@@ -332,6 +333,7 @@ avr_device_t avr[] =
- {"at90s4433", AVR4K, AVR128, AVR256},
- {"at90s4434", AVR4K, 352UL, AVR256},
- {"atmega48", AVR4K, AVR512, AVR256},
-+ {"atmega48hvf", AVR48K, AVR2K, AVR1K},
- {"atmega48a", AVR4K, AVR512, AVR256},
- {"atmega48pa", AVR4K, AVR512, AVR256},
- {"atmega48p", AVR4K, AVR512, AVR256},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c 2011-11-16 13:02:43.000000000 +0530
-+++ gas/config/tc-avr.c 2011-11-16 14:39:15.000000000 +0530
-@@ -237,6 +237,7 @@ static struct mcu_type_s mcu_types[] =
- {"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
- {"atmega32hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-+ {"atmega48hvf",AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90can32" , AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90can64" , AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90pwm216", AVR_ISA_AVR5, bfd_mach_avr5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi 2011-11-16 13:02:43.000000000 +0530
-+++ gas/doc/c-avr.texi 2011-11-16 15:31:23.000000000 +0530
-@@ -75,7 +75,7 @@ atmega64, atmega64a, atmega640, atmega64
- atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
- atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega64hve,
- atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb, atmega16hvbrevb,
--atmega32hvbrevb, at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4,
-+atmega32hvbrevb, atmega48hvf, at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4,
- atmega32c1, atmega64c1, atmega64m1, atmega16m1, atmega32m1, atmega64m1,
- atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
-
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2012-02-15 13:57:10.000000000 +0530
++++ binutils/size.c 2012-02-16 16:51:58.000000000 +0530
+@@ -319,6 +319,8 @@ avr_device_t avr[] =
+ {"at90s8515", AVR8K, AVR512, AVR512},
+ {"at90s8535", AVR8K, AVR512, AVR512},
+ {"at90usb82", AVR8K, AVR512, AVR512},
++ {"ata6285", AVR8K, AVR512, 320UL},
++ {"ata6286", AVR8K, AVR512, 320UL},
+ {"ata6289", AVR8K, AVR512, 320UL},
+ {"atmega8", AVR8K, AVR1K, AVR512},
+ {"atmega8a", AVR8K, AVR1K, AVR512},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-02-15 13:57:09.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-17 11:06:57.000000000 +0530
+@@ -148,6 +148,8 @@ static struct mcu_type_s mcu_types[] =
+ {"attiny1634", AVR_ISA_AVR35, bfd_mach_avr35},
+ {"atmega8", AVR_ISA_M8, bfd_mach_avr4},
+ {"atmega8a", AVR_ISA_M8, bfd_mach_avr4},
++ {"ata6285", AVR_ISA_AVR4, bfd_mach_avr4},
++ {"ata6286", AVR_ISA_AVR4, bfd_mach_avr4},
+ {"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
+ {"atmega48a", AVR_ISA_AVR4, bfd_mach_avr4},
+ {"atmega48pa", AVR_ISA_AVR4, bfd_mach_avr4},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2012-02-15 13:57:09.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-16 16:51:58.000000000 +0530
+@@ -61,7 +61,7 @@ atmega8u2, atmega16u2, atmega32u2).
+ Instruction set avr4 is for the enhanced AVR core with up to 8K program
+ memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8, atmega8a
+ atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva,
+-at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
++at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, ata6285, ata6286).
+
+ Instruction set avr5 is for the enhanced AVR core with up to 128K program
+ memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2012-02-23 15:24:08.000000000 +0530
++++ binutils/size.c 2012-02-23 15:27:09.000000000 +0530
+@@ -357,6 +357,7 @@ avr_device_t avr[] =
+ {"attiny461a", AVR4K, AVR256, AVR256},
+ {"attiny48", AVR4K, AVR256, AVR64},
+ {"attiny80", AVR8K, AVR512, AVR256},
++ {"attiny828", AVR8K, AVR512, AVR256},
+
+ {"at86rf401", AVR2K, 224UL, AVR128},
+ {"at90s2313", AVR2K, AVR128, AVR128},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-02-23 15:24:08.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-23 15:26:16.000000000 +0530
+@@ -133,6 +133,7 @@ static struct mcu_type_s mcu_types[] =
+ {"attiny48", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"attiny88", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"attiny80", AVR_ISA_AVR25, bfd_mach_avr25},
++ {"attiny828", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"at86rf401", AVR_ISA_RF401, bfd_mach_avr25},
+ {"ata6289", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"at43usb355", AVR_ISA_AVR3, bfd_mach_avr3},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2012-02-23 15:24:08.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-23 15:27:30.000000000 +0530
+@@ -46,7 +46,7 @@ space plus the MOVW instruction (MCU typ
+ attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
+ attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
+ attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
+-attiny80, at86rf401, ata6289).
++attiny80, attiny828, at86rf401, ata6289).
+
+ Instruction set avr3 is for the classic AVR core with up to 128K program
+ memory space (MCU types: at43usb355, at76c711).
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2012-02-27 11:45:17.000000000 +0530
++++ binutils/size.c 2012-02-27 11:49:07.000000000 +0530
+@@ -91,6 +91,7 @@ static int return_code = 0;
+ #define AVR128 128UL
+ #define AVR256 256UL
+ #define AVR512 512UL
++#define AVR2112 2112UL
+ #define AVR1K 1024UL
+ #define AVR2K 2048UL
+ #define AVR4K 4096UL
+@@ -193,6 +194,9 @@ avr_device_t avr[] =
+ {"at90scr100", AVR64K, AVR4K, AVR2K},
+ {"at90usb646", AVR64K, AVR4K, AVR2K},
+ {"at90usb647", AVR64K, AVR4K, AVR2K},
++ {"ata5790", AVR16K, AVR512, AVR2112},
++ {"ata5790n", AVR16K, AVR512, AVR2112},
++ {"ata5795", AVR8K, AVR512, AVR2112},
+ {"atmega64", AVR64K, AVR4K, AVR2K},
+ {"atmega64a", AVR64K, AVR4K, AVR2K},
+ {"atmega640", AVR64K, AVR8K, AVR4K},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-02-27 11:45:17.000000000 +0530
++++ gas/config/tc-avr.c 2012-02-27 11:46:30.000000000 +0530
+@@ -169,6 +169,9 @@ static struct mcu_type_s mcu_types[] =
+ {"at90pwm3b", AVR_ISA_AVR4, bfd_mach_avr4},
+ {"at90pwm81", AVR_ISA_AVR4, bfd_mach_avr4},
+ {"at90pwm161", AVR_ISA_AVR5, bfd_mach_avr5},
++ {"ata5790", AVR_ISA_AVR5, bfd_mach_avr5},
++ {"ata5790n", AVR_ISA_AVR5, bfd_mach_avr5},
++ {"ata5795", AVR_ISA_AVR5, bfd_mach_avr5},
+ {"atmega16", AVR_ISA_AVR5, bfd_mach_avr5},
+ {"atmega16a", AVR_ISA_AVR5, bfd_mach_avr5},
+ {"atmega161", AVR_ISA_M161, bfd_mach_avr5},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2012-02-27 11:45:17.000000000 +0530
++++ gas/doc/c-avr.texi 2012-02-27 11:46:30.000000000 +0530
+@@ -77,7 +77,8 @@ atmega649a, atmega649p, atmega6490, atme
+ atmega16hvb, atmega16hvbrevb, atmega26hvg, atmega32hvb, atmega32hvbrevb, atmega48hvf, atmega64hve,
+ at90can32, at90can64, at90pwm216, at90pwm316, atmega32c1,
+ atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4,
+-atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
++atmega32u6, at90usb646, at90usb647, at94k, at90scr100,
++ata5790, ata5790n, ata5795).
+
+ Instruction set avr51 is for the enhanced AVR core with exactly 128K program
+ memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, atmega1284, atmega1284p,
--- /dev/null
+diff -Naurp binutils/size.c binutils/size.c
+--- binutils/size.c 2012-03-27 20:30:42.000000000 +0530
++++ binutils/size.c 2012-03-29 10:32:25.000000000 +0530
+@@ -194,9 +194,11 @@ avr_device_t avr[] =
+ {"at90scr100", AVR64K, AVR4K, AVR2K},
+ {"at90usb646", AVR64K, AVR4K, AVR2K},
+ {"at90usb647", AVR64K, AVR4K, AVR2K},
++ {"ata5505", AVR16K, AVR512, AVR512},
+ {"ata5790", AVR16K, AVR512, AVR2112},
+ {"ata5790n", AVR16K, AVR512, AVR2112},
+ {"ata5795", AVR8K, AVR512, AVR2112},
++ {"ata5272", AVR8K, AVR512, AVR512},
+ {"atmega64", AVR64K, AVR4K, AVR2K},
+ {"atmega64a", AVR64K, AVR4K, AVR2K},
+ {"atmega640", AVR64K, AVR8K, AVR4K},
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-03-27 20:30:42.000000000 +0530
++++ gas/config/tc-avr.c 2012-03-30 13:57:40.000000000 +0530
+@@ -108,6 +108,7 @@ static struct mcu_type_s mcu_types[] =
+ {"at90s8515", AVR_ISA_AVR2, bfd_mach_avr2},
+ {"at90c8534", AVR_ISA_AVR2, bfd_mach_avr2},
+ {"at90s8535", AVR_ISA_AVR2, bfd_mach_avr2},
++ {"ata5272", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"attiny13", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"attiny13a", AVR_ISA_AVR25, bfd_mach_avr25},
+ {"attiny2313", AVR_ISA_AVR25, bfd_mach_avr25},
+@@ -143,6 +144,7 @@ static struct mcu_type_s mcu_types[] =
+ {"attiny167", AVR_ISA_AVR35, bfd_mach_avr35},
+ {"at90usb82", AVR_ISA_AVR35, bfd_mach_avr35},
+ {"at90usb162", AVR_ISA_AVR35, bfd_mach_avr35},
++ {"ata5505", AVR_ISA_AVR35, bfd_mach_avr35},
+ {"atmega8u2", AVR_ISA_AVR35, bfd_mach_avr35},
+ {"atmega16u2", AVR_ISA_AVR35, bfd_mach_avr35},
+ {"atmega32u2", AVR_ISA_AVR35, bfd_mach_avr35},
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2012-03-27 20:30:42.000000000 +0530
++++ gas/doc/c-avr.texi 2012-03-30 13:59:41.000000000 +0530
+@@ -46,7 +46,7 @@ space plus the MOVW instruction (MCU typ
+ attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
+ attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
+ attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
+-attiny80, attiny828, at86rf401, ata6289).
++attiny80, attiny828, at86rf401, ata6289, ata5272).
+
+ Instruction set avr3 is for the classic AVR core with up to 128K program
+ memory space (MCU types: at43usb355, at76c711).
+@@ -56,7 +56,7 @@ memory space (MCU types: atmega103, at43
+
+ Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
+ instructions (MCU types: attiny167, attiny1634, at90usb82, at90usb162,
+-atmega8u2, atmega16u2, atmega32u2).
++atmega8u2, atmega16u2, atmega32u2, ata5505).
+
+ Instruction set avr4 is for the enhanced AVR core with up to 8K program
+ memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8, atmega8a
-diff -rupN bfd/archures.c bfd/archures.c
---- bfd/archures.c 2011-05-11 20:06:37.000000000 -0500
-+++ bfd/archures.c 2011-05-10 13:35:37.000000000 -0500
-@@ -368,6 +368,7 @@ DESCRIPTION
+diff -Naurp bfd/archures.c bfd/archures.c
+--- bfd/archures.c 2011-11-29 15:45:57.000000000 +0530
++++ bfd/archures.c 2011-11-29 17:31:00.000000000 +0530
+@@ -381,6 +381,7 @@ DESCRIPTION
.#define bfd_mach_avr5 5
.#define bfd_mach_avr51 51
.#define bfd_mach_avr6 6
.#define bfd_mach_avrxmega1 101
.#define bfd_mach_avrxmega2 102
.#define bfd_mach_avrxmega3 103
-@@ -375,7 +376,6 @@ DESCRIPTION
+@@ -388,7 +389,6 @@ DESCRIPTION
.#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). *}
-diff -rupN bfd/bfd-in2.h bfd/bfd-in2.h
---- bfd/bfd-in2.h 2011-05-11 20:06:39.000000000 -0500
-+++ bfd/bfd-in2.h 2011-05-10 13:35:37.000000000 -0500
-@@ -2042,6 +2042,7 @@ enum bfd_architecture
+diff -Naurp bfd/bfd-in2.h bfd/bfd-in2.h
+--- bfd/bfd-in2.h 2011-11-29 15:45:57.000000000 +0530
++++ bfd/bfd-in2.h 2011-11-29 17:31:00.000000000 +0530
+@@ -2088,6 +2088,7 @@ enum bfd_architecture
#define bfd_mach_avr5 5
#define bfd_mach_avr51 51
#define bfd_mach_avr6 6
#define bfd_mach_avrxmega1 101
#define bfd_mach_avrxmega2 102
#define bfd_mach_avrxmega3 103
-@@ -2049,7 +2050,6 @@ enum bfd_architecture
+@@ -2095,7 +2096,6 @@ enum bfd_architecture
#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). */
-diff -rupN bfd/cpu-avr.c bfd/cpu-avr.c
---- bfd/cpu-avr.c 2011-05-11 20:06:41.000000000 -0500
-+++ bfd/cpu-avr.c 2011-05-10 13:35:37.000000000 -0500
+diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c
+--- bfd/cpu-avr.c 2011-11-29 15:45:57.000000000 +0530
++++ bfd/cpu-avr.c 2011-11-29 17:31:00.000000000 +0530
@@ -135,29 +135,29 @@ static const bfd_arch_info_type arch_inf
/* 3-Byte PC. */
N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]),
};
-diff -rupN include/elf/avr.h include/elf/avr.h
---- include/elf/avr.h 2011-05-11 20:06:42.000000000 -0500
-+++ include/elf/avr.h 2011-05-10 13:35:37.000000000 -0500
+diff -Naurp include/elf/avr.h include/elf/avr.h
+--- include/elf/avr.h 2011-11-29 15:45:58.000000000 +0530
++++ include/elf/avr.h 2011-11-29 17:31:00.000000000 +0530
@@ -40,6 +40,7 @@
#define E_AVR_MACH_AVR5 5
#define E_AVR_MACH_AVR51 51
/* Relocations. */
START_RELOC_NUMBERS (elf_avr_reloc_type)
-diff -rupN ld/emulparams/avrtiny10.sh ld/emulparams/avrtiny10.sh
---- ld/emulparams/avrtiny10.sh 2011-05-11 20:06:44.000000000 -0500
-+++ ld/emulparams/avrtiny10.sh 2011-05-10 13:39:44.000000000 -0500
+diff -Naurp ld/emulparams/avrtiny10.sh ld/emulparams/avrtiny10.sh
+--- ld/emulparams/avrtiny10.sh 2011-11-29 15:45:58.000000000 +0530
++++ ld/emulparams/avrtiny10.sh 2011-11-29 17:31:00.000000000 +0530
@@ -1,12 +1,13 @@
-ARCH=avr:201
+ARCH=avr:100
+DATA_ORIGIN=0x0800040
+DATA_LENGTH=0x100
EXTRA_EM_FILE=avrelf
-diff -rupN ld/Makefile.am ld/Makefile.am
---- ld/Makefile.am 2011-05-11 20:06:47.000000000 -0500
-+++ ld/Makefile.am 2011-05-10 13:35:37.000000000 -0500
-@@ -764,7 +764,7 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxm
+diff -Naurp ld/Makefile.am ld/Makefile.am
+--- ld/Makefile.am 2011-11-29 15:45:58.000000000 +0530
++++ ld/Makefile.am 2011-11-29 17:31:00.000000000 +0530
+@@ -820,7 +820,7 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxm
${GEN_DEPENDS}
${GENSCRIPTS} avrxmega7 "$(tdir_avr2)"
eavrtiny10.c: $(srcdir)/emulparams/avrtiny10.sh \
${GEN_DEPENDS}
${GENSCRIPTS} avrtiny10 "$(tdir_avr2)"
ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
-diff -rupN ld/scripttempl/avrtiny10.sc ld/scripttempl/avrtiny10.sc
---- ld/scripttempl/avrtiny10.sc 1969-12-31 18:00:00.000000000 -0600
-+++ ld/scripttempl/avrtiny10.sc 2011-05-10 13:35:37.000000000 -0500
+diff -Naurp ld/scripttempl/avrtiny10.sc ld/scripttempl/avrtiny10.sc
+--- ld/scripttempl/avrtiny10.sc 1970-01-01 05:30:00.000000000 +0530
++++ ld/scripttempl/avrtiny10.sc 2011-11-29 17:31:00.000000000 +0530
@@ -0,0 +1,240 @@
+cat <<EOF
+OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
--- /dev/null
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2012-03-30 19:35:59.000000000 +0530
++++ gas/config/tc-avr.c 2012-03-30 19:36:31.000000000 +0530
+@@ -306,7 +306,7 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64d4", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
+- {"atxmega64a1u",AVR_ISA_XMEGA, bfd_mach_avrxmega5},
++ {"atxmega64a1u",AVR_ISA_XMEGAU, bfd_mach_avrxmega5},
+ {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega128a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
+ {"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+@@ -321,13 +321,13 @@ static struct mcu_type_s mcu_types[] =
+ {"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega256a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
+ {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+- {"atxmega256a3bu",AVR_ISA_XMEGA,bfd_mach_avrxmega6},
++ {"atxmega256a3bu",AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
+ {"atxmega256c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
+ {"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega384c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
+ {"atxmega384d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
+ {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
+- {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
++ {"atxmega128a1u", AVR_ISA_XMEGAU, bfd_mach_avrxmega7},
+ {"atxmega128a4u", AVR_ISA_XMEGAU, bfd_mach_avrxmega7},
+ {"attiny4", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
+ {"attiny5", AVR_ISA_AVRTINY10, bfd_mach_avrtiny10},
--- /dev/null
+diff -Naurp ld/scripttempl/avrtiny10.sc ld/scripttempl/avrtiny10.sc
+--- ld/scripttempl/avrtiny10.sc 2012-04-03 11:50:08.000000000 +0530
++++ ld/scripttempl/avrtiny10.sc 2012-04-03 11:52:48.000000000 +0530
+@@ -6,9 +6,13 @@ MEMORY
+ {
+ text (rx) : ORIGIN = $TEXT_ORIGIN, LENGTH = $TEXT_LENGTH
+ data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
+- lock (rw!x) : ORIGIN = 0x3F00, LENGTH = 2
+- signature (rw!x) : ORIGIN = 0x3FC0, LENGTH = 4
+-/* REVISIT: fuse(rw!x) : */
++
++ /* Provide offsets for config, lock and signature to match
++ production file format. Ignore offsets in datasheet. */
++
++ config(rw!x) : ORIGIN = 0x820000, LENGTH = 2
++ lock (rw!x) : ORIGIN = 0x830000, LENGTH = 2
++ signature (rw!x) : ORIGIN = 0x840000, LENGTH = 4
+ }
+
+ SECTIONS
+@@ -202,6 +206,11 @@ SECTIONS
+ KEEP(*(.signature*))
+ } ${RELOCATING+ > signature}
+
++ .config ${RELOCATING-0}:
++ {
++ KEEP(*(.config*))
++ } ${RELOCATING+ > config}
++
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
--- /dev/null
+--- bfd/elf32-avr.c 2012-04-19 14:45:03.000000000 +0530
++++ bfd/elf32-avr.c 2012-04-19 12:04:04.000000000 +0530
+@@ -516,6 +516,21 @@ static reloc_howto_type elf_avr_howto_ta
+ 0x000000ff, /* src_mask */
+ 0x000000ff, /* dst_mask */
+ FALSE), /* pcrel_offset */
++ /* 7 bit immediate for LDS/STS in AVR8L (Tiny architecture) */
++ HOWTO (R_AVR_7_LDS16, /* type */
++ 0,
++ 0,
++ 8,
++ FALSE,
++ 0,
++ complain_overflow_bitfield,
++ bfd_elf_generic_reloc,
++ "R_AVR_7_LDS16",
++ FALSE,
++ 0xffff,
++ 0xffff,
++ FALSE),
++
+ };
+
+ /* Map BFD reloc types to AVR ELF reloc types. */
+@@ -554,7 +569,8 @@ static const struct avr_reloc_map avr_re
+ { BFD_RELOC_AVR_LDI, R_AVR_LDI },
+ { BFD_RELOC_AVR_6, R_AVR_6 },
+ { BFD_RELOC_AVR_6_ADIW, R_AVR_6_ADIW },
+- { BFD_RELOC_8, R_AVR_8 }
++ { BFD_RELOC_8, R_AVR_8 },
++ { BFD_RELOC_AVR_7_LDS16, R_AVR_7_LDS16 }
+ };
+
+ /* Meant to be filled one day with the wrap around address for the
+@@ -1085,6 +1101,17 @@ avr_final_link_relocate (reloc_howto_typ
+ bfd_put_16 (input_bfd, (bfd_vma) srel & 0xffff, contents+2);
+ break;
+
++ case R_AVR_7_LDS16:
++ contents += rel->r_offset;
++ srel = (bfd_signed_vma) relocation + rel->r_addend;
++ if ((srel & 0xFFFF) < 0x40 || (srel & 0xFFFF) > 0xbf)
++ return bfd_reloc_outofrange;
++ srel = srel & 0x7f;
++ x = bfd_get_16 (input_bfd, contents);
++ x |= (srel & 0x0f) | ((srel & 0x30) << 5) | ((srel & 0x40) << 2);
++ bfd_put_16 (input_bfd, x, contents);
++ break;
++
+ case R_AVR_16_PM:
+ use_stubs = (!htab->no_stubs);
+ contents += rel->r_offset;
+--- bfd/reloc.c 2011-07-24 19:50:06.000000000 +0530
++++ bfd/reloc.c 2012-04-19 14:40:17.000000000 +0530
+@@ -4314,6 +4314,11 @@ ENUM
+ ENUMDOC
+ This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
+ instructions
++ENUM
++ BFD_RELOC_AVR_7_LDS16
++ENUMDOC
++ This is a 7 bit reloc for the AVR that stores offset for 16bit sts/lds
++ instructions meant for tiny parts
+
+ ENUM
+ BFD_RELOC_RX_NEG8
+--- gas/config/tc-avr.c 2012-04-19 14:45:03.000000000 +0530
++++ gas/config/tc-avr.c 2012-04-19 12:04:04.000000000 +0530
+@@ -870,17 +870,12 @@ avr_operand (struct avr_opcodes_s *opcod
+ op_mask = avr_get_constant (str, 31);
+ str = input_line_pointer;
+ }
+- if (strcmp(avr_mcu->name, "avrtiny10") == 0
+- || strcmp(avr_mcu->name, "attiny10") == 0
+- || strcmp(avr_mcu->name, "attiny4") == 0
+- || strcmp(avr_mcu->name, "attiny5") == 0
+- || strcmp(avr_mcu->name, "attiny9") == 0
+- || strcmp(avr_mcu->name, "attiny20") == 0
+- || strcmp(avr_mcu->name, "attiny40") == 0)
+- {
+- if(op_mask < 16)
+- as_bad (_("register number above 15 required"));
+- }
++
++ if (avr_mcu->mach == bfd_mach_avrtiny10)
++ {
++ if (op_mask < 16 || op_mask > 31)
++ as_bad (_("register not supported"));
++ }
+
+ if (op_mask <= 31)
+ {
+@@ -1020,6 +1015,12 @@ avr_operand (struct avr_opcodes_s *opcod
+ &op_expr, FALSE, BFD_RELOC_16);
+ break;
+
++ case 'j':
++ str = parse_exp (str, &op_expr);
++ fix_new_exp (frag_now, where, opcode->insn_size * 2,
++ &op_expr, FALSE, BFD_RELOC_AVR_7_LDS16);
++ break;
++
+ case 'M':
+ {
+ bfd_reloc_code_real_type r_type;
+@@ -1328,6 +1329,16 @@ md_apply_fix (fixS *fixP, valueT * valP,
+ bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value), where);
+ break;
+
++ case BFD_RELOC_AVR_7_LDS16:
++ if ((value < 0x40) || (value > 0xBF))
++ as_bad_where (fixP->fx_file, fixP->fx_line,
++ _("operand out of range: 0x%lx"), (unsigned long)value);
++ insn |= value & 0xF;
++ insn |= (value & 0x30) << 5;
++ insn |= (value & 0x40) << 2;
++ bfd_putl16 ((bfd_vma) insn, where);
++ break;
++
+ case BFD_RELOC_AVR_6:
+ if ((value > 63) || (value < 0))
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+@@ -1513,7 +1524,18 @@ md_assemble (char *str)
+ if (!op[0])
+ as_bad (_("can't find opcode "));
+
+- opcode = (struct avr_opcodes_s *) hash_find (avr_hash, op);
++ /* To handle Tiny (AVR8L) architecture peculiarities */
++ if (avr_mcu->isa & AVR_ISA_TINY)
++ {
++ if (*op == 'l' && *(op+1) == 'd' && *(op+2) == 's' && !*(op+3))
++ opcode = (struct avr_opcodes_s *) hash_find (avr_hash, "lds16");
++ else if (*op == 's' && *(op+1) == 't' && *(op+2) == 's' && !*(op+3))
++ opcode = (struct avr_opcodes_s *) hash_find (avr_hash, "sts16");
++ else
++ opcode = (struct avr_opcodes_s *) hash_find (avr_hash, op);
++ }
++ else
++ opcode = (struct avr_opcodes_s *) hash_find (avr_hash, op);
+
+ if (opcode == NULL)
+ {
+--- include/elf/avr.h 2012-04-19 14:45:03.000000000 +0530
++++ include/elf/avr.h 2012-04-19 12:04:04.000000000 +0530
+@@ -78,6 +78,7 @@ START_RELOC_NUMBERS (elf_avr_reloc_type)
+ RELOC_NUMBER (R_AVR_LO8_LDI_GS, 24)
+ RELOC_NUMBER (R_AVR_HI8_LDI_GS, 25)
+ RELOC_NUMBER (R_AVR_8, 26)
++ RELOC_NUMBER (R_AVR_7_LDS16, 27)
+ END_RELOC_NUMBERS (R_AVR_max)
+
+ #endif /* _ELF_AVR_H */
+--- include/opcode/avr.h 2012-04-19 14:45:03.000000000 +0530
++++ include/opcode/avr.h 2012-04-19 12:04:04.000000000 +0530
+@@ -22,6 +22,7 @@
+ #define AVR_ISA_LPM 0x0002 /* device has LPM */
+ #define AVR_ISA_LPMX 0x0004 /* device has LPM Rd,Z[+] */
+ #define AVR_ISA_SRAM 0x0008 /* device has SRAM (LD, ST, PUSH, POP, ...) */
++#define AVR_ISA_TINY 0x0010 /* device has AVR8L core specific encodings */
+ #define AVR_ISA_MEGA 0x0020 /* device has >8K program memory (JMP and CALL
+ supported, no 8K wrap on RJMP and RCALL) */
+ #define AVR_ISA_MUL 0x0040 /* device has new core (MUL, FMUL, ...) */
+@@ -72,7 +73,7 @@
+ AVR_ISA_ELPM | AVR_ISA_ELPMX | AVR_ISA_SPM | \
+ AVR_ISA_BRK | AVR_ISA_EIND | AVR_ISA_MOVW)
+
+-#define AVR_ISA_AVRTINY10 (AVR_ISA_1200 | AVR_ISA_BRK | AVR_ISA_SRAM)
++#define AVR_ISA_AVRTINY10 (AVR_ISA_1200 | AVR_ISA_BRK | AVR_ISA_SRAM | AVR_ISA_TINY)
+
+ #define REGISTER_P(x) ((x) == 'r' \
+ || (x) == 'd' \
+@@ -279,6 +280,8 @@ AVR_INSN (fmulsu,"a,a","000000111ddd1rrr
+
+ AVR_INSN (sts, "i,r", "1001001ddddd0000", 2, AVR_ISA_SRAM, 0x9200)
+ AVR_INSN (lds, "r,i", "1001000ddddd0000", 2, AVR_ISA_SRAM, 0x9000)
++AVR_INSN (sts16,"j,d", "10101kkkddddkkkk", 1, AVR_ISA_TINY, 0xA800)
++AVR_INSN (lds16,"d,j", "10100kkkddddkkkk", 1, AVR_ISA_TINY, 0xA000)
+
+ AVR_INSN (xch, "z,r", "1001001rrrrr0100", 1, AVR_ISA_XMEGAU, 0x9204)
+ AVR_INSN (las, "z,r", "1001001rrrrr0101", 1, AVR_ISA_XMEGAU, 0x9205)
+--- opcodes/avr-dis.c 2011-07-01 21:41:27.000000000 +0530
++++ opcodes/avr-dis.c 2012-04-19 12:04:04.000000000 +0530
+@@ -187,7 +187,15 @@ avr_operand (unsigned int insn, unsigned
+ case 'i':
+ sprintf (buf, "0x%04X", insn2);
+ break;
+-
++ case 'j':
++ {
++ unsigned int val = ((insn & 0xf) | ((insn & 0x600) >> 5)
++ | ((insn & 0x100) >> 2));
++ if (val > 0 && !(insn & 0x100))
++ val |= 0x80;
++ sprintf (buf, "0x%02x", val);
++ }
++ break;
+ case 'M':
+ sprintf (buf, "0x%02X", ((insn & 0xf00) >> 4) | (insn & 0xf));
+ sprintf (comment, "%d", ((insn & 0xf00) >> 4) | (insn & 0xf));
+@@ -379,8 +387,19 @@ print_insn_avr (bfd_vma addr, disassembl
+ comment2[0] = 0;
+ }
+
+- (*prin) (stream, "%s", ok ? opcode->name : ".word");
+-
++ if (ok)
++ {
++ /* In order to print 2byte sts/lds properly */
++ if (!strncmp(opcode->name, "sts16", 5))
++ (*prin) (stream, "%s", "sts");
++ else if (!strncmp(opcode->name, "lds16", 5))
++ (*prin) (stream, "%s", "lds");
++ else
++ (*prin) (stream, "%s", opcode->name);
++ }
++ else
++ (*prin) (stream, "%s", ".word");
++
+ if (*op1)
+ (*prin) (stream, "\t%s", op1);
+
+++ /dev/null
-diff -ruw ggas/config/tc-avr.c gas/config/tc-avr.c
---- ggas/config/tc-avr.c 2009-09-09 13:43:29.000000000 +0530
-+++ gas/config/tc-avr.c 2010-02-12 20:42:30.742688700 +0530
-@@ -133,9 +133,12 @@
- {"atmega32u2", AVR_ISA_AVR35, bfd_mach_avr35},
- {"atmega8", AVR_ISA_M8, bfd_mach_avr4},
- {"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
-+ {"atmega48a", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega48p", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega88", AVR_ISA_AVR4, bfd_mach_avr4},
-+ {"atmega88a", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega88p", AVR_ISA_AVR4, bfd_mach_avr4},
-+ {"atmega88pa", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega8515", AVR_ISA_M8, bfd_mach_avr4},
- {"atmega8535", AVR_ISA_M8, bfd_mach_avr4},
- {"atmega8hva", AVR_ISA_AVR4, bfd_mach_avr4},
-@@ -150,40 +153,63 @@
- {"at90pwm3b", AVR_ISA_AVR4, bfd_mach_avr4},
- {"at90pwm81", AVR_ISA_AVR4, bfd_mach_avr4},
- {"atmega16", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega161", AVR_ISA_M161, bfd_mach_avr5},
- {"atmega162", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega163", AVR_ISA_M161, bfd_mach_avr5},
-+ {"atmega164a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega164p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega165", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega165p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega168", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega168a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega168p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega169", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega169a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega169p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega169pa",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16hva",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16c1", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega32", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega323", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega324a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega324p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega324pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega325", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega325p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3250p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega328", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega328p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega329", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega329p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega329pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3290", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega3290p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega32hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega406", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega64", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega640", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega644", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega644a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega644p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega644pa",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega645", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega645a", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega645p", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega649", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega649p", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega649a", AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega6450", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6450a",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6450p",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega6490", AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6490a",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega6490p",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega64hve",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16hva",AVR_ISA_AVR5, bfd_mach_avr5},
-+ {"atmega16hva2",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega16hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"atmega32hvb",AVR_ISA_AVR5, bfd_mach_avr5},
- {"at90can32" , AVR_ISA_AVR5, bfd_mach_avr5},
-diff -ruw ggas/doc/c-avr.texi gas/doc/c-avr.texi
---- ggas/doc/c-avr.texi 2009-09-02 12:54:21.000000000 +0530
-+++ gas/doc/c-avr.texi 2010-02-12 21:31:02.132717100 +0530
-@@ -43,9 +43,10 @@
-
- Instruction set avr25 is for the classic AVR core with up to 8K program memory
- space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
--attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
--attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461, attiny861,
--attiny861a, attiny87, attiny43u, attiny48, attiny88, at86rf401, ata6289).
-+attiny2313a, attiny24, attiny24a, attiny4313, attiny43u, attiny44, attiny44a,
-+attiny84, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
-+attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
-+at86rf401, ata6289).
-
- Instruction set avr3 is for the classic AVR core with up to 128K program
- memory space (MCU types: at43usb355, at76c711).
-@@ -58,20 +59,25 @@
- atmega16u2, atmega32u2).
-
- Instruction set avr4 is for the enhanced AVR core with up to 8K program
--memory space (MCU types: atmega48, atmega48p,atmega8, atmega88, atmega88p,
--atmega8515, atmega8535, atmega8hva, atmega4hvd, atmega8hvd, at90pwm1,
--at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, atmega8m1, atmega8c1).
-+memory space (MCU types: atmega48, atmega48a, atmega48p,atmega8, atmega88,
-+atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva,
-+atmega4hvd, atmega8hvd, at90pwm1,at90pwm2, at90pwm2b, at90pwm3, at90pwm3b,
-+at90pwm81, atmega8m1, atmega8c1).
-
- Instruction set avr5 is for the enhanced AVR core with up to 128K program
--memory space (MCU types: atmega16, atmega161, atmega162, atmega163, atmega164p,
--atmega165, atmega165p, atmega168, atmega168p, atmega169, atmega169p, atmega16c1,
--atmega32, atmega323, atmega324p, atmega325, atmega325p, atmega3250, atmega3250p,
--atmega328p, atmega329, atmega329p, atmega3290, atmega3290p, atmega406, atmega64,
--atmega640, atmega644, atmega644p, atmega644pa, atmega645, atmega6450, atmega649,
--atmega6490, atmega16hva, atmega16hvb, atmega32hvb, at90can32, at90can64,
--at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
--atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
--at90scr100).
-+memory space (MCU types: atmega16, atmega16a, atmega161, atmega162, atmega163,
-+atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
-+atmega168a, atmega168p, atmega169, atmega169p, atmega169pa, atmega16c1,
-+atmega32, atmega323, atmega324a, atmega324p, atmega324pa, atmega325,
-+atmega325p, atmega3250, atmega3250p, atmega328, atmega328p, atmega329,
-+atmega329p, atmega329pa, atmega3290, atmega3290p, atmega406, atmega64,
-+atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
-+atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649,
-+atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega64hve,
-+atmega16hva, atmega16hva2, atmega16hvb, atmega32hvb, at90can32, at90can64,
-+at90pwm216, at90pwm316, atmega16u4, atmega32c1, atmega64c1, atmega64m1,
-+atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6,
-+at90usb646, at90usb647, at94k, at90scr100).
-
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
Summary(pt_BR.UTF-8): Utilitários para desenvolvimento de binários da GNU - AVR binutils
Summary(tr.UTF-8): GNU geliştirme araçları - AVR binutils
Name: crossavr-binutils
-Version: 2.20.1
+Version: 2.22
Release: 1
Epoch: 1
-# Patches 1xx are taken form Atmel official AVR8-GNU toolchain version 3.3.1.481.
-Patch100: 300-binutils-2.20.1-avr-size.patch
-Patch101: 301-binutils-2.20.1-avr-coff.patch
-Patch102: 302-binutils-2.20.1-new-sections.patch
-Patch103: 303-binutils-2.20.1-as-dwarf.patch
-Patch104: 304-binutils-2.20.1-dwarf2-AVRStudio-workaround.patch
-Patch105: 305-binutils-2.20.1-assembler-options.patch
-Patch106: 400-binutils-2.20.1-xmega.patch
-Patch107: 401-binutils-2.20.1-new-devices.patch
-Patch108: 402-binutils-2.20.1-avrtiny10.patch
-Patch109: 403-binutils-2.20.1-xmega128a1u-64a1u.patch
-Patch110: 404-binutils-2.20.1-atxmega32x1.patch
-Patch111: 405-binutils-2.20.1-atxmega128b1.patch
-Patch112: 406-binutils-2.20.1-atxmega256a3bu.patch
-Patch113: 407-binutils-2.20.1-at90pwm161.patch
-Patch114: 408-binutils-2.20.1-atmega16hvb-32hvb.patch
-Patch115: 409-binutils-2.20.1-atmega32_5_50_90_pa.patch
-Patch116: 410-binutils-2.20.1-attiny1634.patch
-Patch117: 411-binutils-2.20.1-atmega48pa.patch
-Patch118: 412-binutils-2.20.1-atxmega_16_32_a4u.patch
-Patch119: 413-binutils-2.20.1-atxmega64_128_192_256a3u.patch
-Patch120: 414-binutils-2.20.1-atmegarfr2_a2.patch
-Patch121: 415-binutils-2.20.1-atmega165pa.patch
-Patch122: 416-binutils-2.20.1-atxmega384c3.patch
-Patch123: 417-binutils-2.20.1-attiny80.patch
-Patch124: 418-binutils-2.20.1-atxmega128a4u.patch
-Patch125: 419-binutils-2.20.1-atxmega64d4.patch
-Patch126: 420-binutils-2.20.1-atmega164pa_168pa_32a_64a.patch
-Patch127: 421-binutils-2.20.1-atxmega64_128_b3.patch
-Patch128: 422-binutils-2.20.1-atxmega64b1.patch
-Patch129: 423-binutils-2.20.1-atmega_8a_128a_1284.patch
-Patch130: 424-binutils-2.20.1-atxmega64a4u.patch
-Patch131: 425-binutils-2.20.1-atxmega128d4.patch
-Patch132: 426-binutils-2.20.1-atmxt336s.patch
-Patch133: 427-binutils-2.20.1-atxmega16c4_32c4_128c3_256c3.patch
-Patch134: 428-binutils-2.20.1-atxmega384d3.patch
-Patch135: 429-binutils-2.20.1-atmega48hvf.patch
-Patch136: 430-binutils-2.20.1-atmega26hvg.patch
-Patch137: 431-binutils-2.20.1-atmxt224_224e.patch
-Patch138: 431-binutils-2.20.1-atxmega192c3.patch
-Patch139: 500-binutils-2.20.1-bug13789.patch
-Patch140: 501-binutils-2.20.1-bug13113.patch
+# Patches 1xx are taken form Atmel official AVR8-GNU toolchain version 3.4.0.633
+Patch100: 300-binutils-avr-size.patch
+Patch101: 301-binutils-avr-coff.patch
+Patch102: 302-binutils-as-dwarf.patch
+Patch103: 303-binutils-dwarf2-AVRStudio-workaround.patch
+Patch104: 304-binutils-bug13113.patch
+Patch105: 305-binutils-new-usb-insns.patch
+Patch106: 306-binutils-bug15573-AVRTC-419.patch
+Patch107: 307-binutils-fix-AVRTC-424.patch
+Patch108: 400-binutils-xmega.patch
+Patch109: 401-binutils-avrtiny10.patch
+Patch110: 402-binutils-at90pwm161.patch
+Patch111: 403-binutils-new-devices.patch
+Patch112: 404-binutils-attiny1634.patch
+Patch113: 405-binutils-atmega48pa.patch
+Patch114: 406-binutils-atxmega_16_32_a4u.patch
+Patch115: 407-binutils-atxmega64_128_192_256a3u.patch
+Patch116: 408-binutils-atmegarfr2_a2.patch
+Patch117: 409-binutils-atmega165pa.patch
+Patch118: 410-binutils-atxmega384c3.patch
+Patch119: 411-binutils-attiny80.patch
+Patch120: 412-binutils-atxmega128a4u.patch
+Patch121: 413-binutils-atxmega64d4.patch
+Patch122: 414-binutils-atmega164pa_168pa_32a_64a.patch
+Patch123: 415-binutils-atxmega64_128_b3.patch
+Patch124: 416-binutils-atxmega64b1.patch
+Patch125: 417-binutils-atmega_8a_128a_1284.patch
+Patch126: 418-binutils-atxmega64a4u.patch
+Patch127: 419-binutils-atxmega128d4.patch
+Patch128: 420-binutils-atmxt336s.patch
+Patch129: 421-binutils-atxmega16c4_32c4_128c3_256c3.patch
+Patch130: 422-binutils-atxmega384d3.patch
+Patch131: 423-binutils-atmega48hvf.patch
+Patch132: 424-binutils-atmega26hvg.patch
+Patch133: 425-binutils-atmxt224_224e.patch
+Patch134: 426-binutils-atxmega192c3.patch
+Patch135: 427-binutils-atmxt112sl.patch
+Patch136: 428-binutils-atxmega64c3.patch
+Patch137: 429-binutils-ata6285_6286.patch
+Patch138: 430-binutils-attiny828.patch
+Patch139: 431-binutils-ata5790_5790N_5795.patch
+Patch140: 432-binutils-ata5272_5505.patch
+Patch141: 500-binutils-bug13789.patch
+Patch142: 501-binutils-modify-usb-xmega-isa.patch
+Patch143: 502-binutils-add-config-section-tiny.patch
+Patch144: 503-binutils-avrtc193-tiny.patch
License: GPL
Group: Development/Tools
Source0: ftp://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.bz2
-# Source0-md5: 2b9dc8f2b7dbd5ec5992c6e29de0b764
+# Source0-md5: ee0f10756c84979622b992a4a61ea3f5
URL: http://sources.redhat.com/binutils/
BuildRequires: automake
BuildRequires: bash
BuildRequires: bison
BuildRequires: flex
BuildRequires: gettext-devel
+BuildRequires: gcc-c++
BuildRequires: perl-tools-pod
BuildRequires: texinfo
%ifarch sparc sparc32
%patch138 -p0
%patch139 -p0
%patch140 -p0
+%patch141 -p0
+%patch142 -p0
+%patch143 -p0
+%patch144 -p0
%build
cp /usr/share/automake/config.sub .
sparc32 \
%endif
./configure \
+ --enable-gold \
--disable-shared \
--disable-werror \
--prefix=%{_prefix} \