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 .#define bfd_mach_avr5 5 .#define bfd_mach_avr51 51 .#define bfd_mach_avr6 6 +.#define bfd_mach_avrtiny10 100 .#define bfd_mach_avrxmega1 101 .#define bfd_mach_avrxmega2 102 .#define bfd_mach_avrxmega3 103 @@ -375,7 +376,6 @@ DESCRIPTION .#define bfd_mach_avrxmega5 105 .#define bfd_mach_avrxmega6 106 .#define bfd_mach_avrxmega7 107 -.#define bfd_mach_avrtiny10 201 . 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 #define bfd_mach_avr5 5 #define bfd_mach_avr51 51 #define bfd_mach_avr6 6 +#define bfd_mach_avrtiny10 100 #define bfd_mach_avrxmega1 101 #define bfd_mach_avrxmega2 102 #define bfd_mach_avrxmega3 103 @@ -2049,7 +2050,6 @@ enum bfd_architecture #define bfd_mach_avrxmega5 105 #define bfd_mach_avrxmega6 106 #define bfd_mach_avrxmega7 107 -#define bfd_mach_avrtiny10 201 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 @@ -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]), + /* attiny 10 */ + N (16, bfd_mach_avrtiny10, "avr:100", FALSE, & arch_info_struct[11]), + /* Xmega 1 */ - N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[11]), + N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[12]), /* Xmega 2 */ - N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[12]), + N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[13]), /* Xmega 3 */ - N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[13]), + N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[14]), /* Xmega 4 */ - N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[14]), + N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[15]), /* Xmega 5 */ - N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[15]), + N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[16]), /* Xmega 6 */ - N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[16]), + N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[17]), /* Xmega 7 */ - N (24, bfd_mach_avrxmega7, "avr:107", FALSE, & arch_info_struct[17]), - - /* attiny 10 */ - N (16, bfd_mach_avrtiny10, "avr:201", FALSE, NULL) + N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL) }; 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 @@ -40,6 +40,7 @@ #define E_AVR_MACH_AVR5 5 #define E_AVR_MACH_AVR51 51 #define E_AVR_MACH_AVR6 6 +#define E_AVR_MACH_AVRTINY10 100 #define E_AVR_MACH_XMEGA1 101 #define E_AVR_MACH_XMEGA2 102 #define E_AVR_MACH_XMEGA3 103 @@ -47,7 +48,6 @@ #define E_AVR_MACH_XMEGA5 105 #define E_AVR_MACH_XMEGA6 106 #define E_AVR_MACH_XMEGA7 107 -#define E_AVR_MACH_AVRTINY10 201 /* 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 @@ -1,12 +1,13 @@ -ARCH=avr:201 +ARCH=avr:100 MACHINE= -SCRIPT_NAME=avr +SCRIPT_NAME=avrtiny10 OUTPUT_FORMAT="elf32-avr" MAXPAGESIZE=1 EMBEDDED=yes TEMPLATE_NAME=elf32 +TEXT_ORIGIN=0x0 TEXT_LENGTH=4K -DATA_ORIGIN=0x800040 -DATA_LENGTH=0x140 +DATA_ORIGIN=0x0800040 +DATA_LENGTH=0x1F 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 ${GEN_DEPENDS} ${GENSCRIPTS} avrxmega7 "$(tdir_avr2)" eavrtiny10.c: $(srcdir)/emulparams/avrtiny10.sh \ - $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ + $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avrtiny10.sc \ ${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 @@ -0,0 +1,240 @@ +cat < text} + + .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))} + { + ${RELOCATING+ PROVIDE (__data_start = .) ; } + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + ${RELOCATING+. = ALIGN(2);} + ${RELOCATING+ _edata = . ; } + ${RELOCATING+ PROVIDE (__data_end = .) ; } + } ${RELOCATING+ > data} + + .bss ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))} + { + ${RELOCATING+ PROVIDE (__bss_start = .) ; } + *(.bss) + *(.bss*) + *(COMMON) + ${RELOCATING+ PROVIDE (__bss_end = .) ; } + } ${RELOCATING+ > data} + + ${RELOCATING+ __data_load_start = LOADADDR(.data); } + ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); } + + /* Global data not cleared after reset. */ + .noinit ${RELOCATING-0}: + { + ${RELOCATING+ PROVIDE (__noinit_start = .) ; } + *(.noinit*) + ${RELOCATING+ PROVIDE (__noinit_end = .) ; } + ${RELOCATING+ _end = . ; } + ${RELOCATING+ PROVIDE (__heap_start = .) ; } + } ${RELOCATING+ > data} + + .lock ${RELOCATING-0}: + { + KEEP(*(.lock*)) + } ${RELOCATING+ > lock} + + .signature ${RELOCATING-0}: + { + KEEP(*(.signature*)) + } ${RELOCATING+ > signature} + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} +EOF +