/* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") /* OUTPUT_ARCH(avr:5) */ MEMORY { text (rx) : ORIGIN = 0, LENGTH = 128K data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 eeprom (rw!x) : ORIGIN = 0x810fec, LENGTH = 20 } SECTIONS { /* Internal text space or external memory */ .text : { *(.boot_vectors) *(.progmem.gcc*) *(.progmem*) . = ALIGN(2); *(.text) . = ALIGN(2); *(.text.*) . = ALIGN(2); _etext = . ; } > text .data : AT (ADDR (.text) + SIZEOF (.text)) { PROVIDE (__data_start = .) ; *(.data) *(.gnu.linkonce.d*) . = ALIGN(2); _edata = . ; PROVIDE (__data_end = .) ; } > data .bss SIZEOF(.data) + ADDR(.data) : { PROVIDE (__bss_start = .) ; *(.bss) *(COMMON) PROVIDE (__bss_end = .) ; } > data __data_load_start = LOADADDR(.data); __data_load_end = __data_load_start + SIZEOF(.data); /* Global data not cleared after reset. */ .noinit SIZEOF(.bss) + ADDR(.bss) : { PROVIDE (__noinit_start = .) ; *(.noinit*) PROVIDE (__noinit_end = .) ; _end = . ; PROVIDE (__heap_start = .) ; } > data .eeprom : { *(.eeprom*) __eeprom_end = . ; } > eeprom /* 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) } }