Rev 362 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
/* Default linker script, for normal executables */OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")OUTPUT_ARCH(avr:4)MEMORY{text (rx) : ORIGIN = 0x0, LENGTH = 8Kdata (rw!x) : ORIGIN = 0x800100, LENGTH = 1Keeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 512}SECTIONS{/* Read-only sections, merged into text segment: */.hash : { *(.hash) }.dynsym : { *(.dynsym) }.dynstr : { *(.dynstr) }.gnu.version : { *(.gnu.version) }.gnu.version_d : { *(.gnu.version_d) }.gnu.version_r : { *(.gnu.version_r) }.rel.init : { *(.rel.init) }.rela.init : { *(.rela.init) }.rel.text :{*(.rel.text)*(.rel.text.*)*(.rel.gnu.linkonce.t*)}.rela.text :{*(.rela.text)*(.rela.text.*)*(.rela.gnu.linkonce.t*)}.rel.fini : { *(.rel.fini) }.rela.fini : { *(.rela.fini) }.rel.rodata :{*(.rel.rodata)*(.rel.rodata.*)*(.rel.gnu.linkonce.r*)}.rela.rodata :{*(.rela.rodata)*(.rela.rodata.*)*(.rela.gnu.linkonce.r*)}.rel.data :{*(.rel.data)*(.rel.data.*)*(.rel.gnu.linkonce.d*)}.rela.data :{*(.rela.data)*(.rela.data.*)*(.rela.gnu.linkonce.d*)}.rel.ctors : { *(.rel.ctors) }.rela.ctors : { *(.rela.ctors) }.rel.dtors : { *(.rel.dtors) }.rela.dtors : { *(.rela.dtors) }.rel.got : { *(.rel.got) }.rela.got : { *(.rela.got) }.rel.bss : { *(.rel.bss) }.rela.bss : { *(.rela.bss) }.rel.plt : { *(.rel.plt) }.rela.plt : { *(.rela.plt) }/* Internal text space or external memory *//DISCARD/ :{*(.vectors)}.app_vectors 0x0 :{*(.app_vectors)}.text __bios_start :{__ctors_start = . ;*(.ctors)__ctors_end = . ;__dtors_start = . ;*(.dtors)__dtors_end = . ;*(.progmem.gcc*)*(.progmem*). = ALIGN(2);*(.init0) /* Start here after reset. */*(.init1)*(.init2) /* Clear __zero_reg__, set up stack pointer. */*(.init3)*(.init4) /* Initialize data and BSS. */*(.init5)*(.init6) /* C++ constructors. */*(.init7)*(.init8)*(.init9) /* Call main(). */*(.text). = ALIGN(2);*(.text.*). = ALIGN(2);*(.fini9) /* _exit() starts here. */*(.fini8)*(.fini7)*(.fini6) /* C++ destructors. */*(.fini5)*(.fini4)*(.fini3)*(.fini2)*(.fini1)*(.fini0) /* Infinite loop after program termination. */_etext = . ;} > text.bootloader __boot_start :{*(.boot_vectors)__bootloader_start = . ;*(.bootloader). = 0x2000 - __boot_start - 0x80; /* Locate code for BIOS update in the last two pages of flash */__flash_code_start = . ;*(.flash_code)__bootloader_end = . ;} > 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) : AT (ADDR (.bss)){PROVIDE (__bss_start = .) ;*(.bss)*(COMMON)PROVIDE (__bss_end = .) ;} > data__data_load_start = LOADADDR(.data);__data_load_end = __data_load_start + SIZEOF(.data);/* Little trick to set __bios_optimal_start to the highest address that__bios_start can be set to without overlapping .text and .bootloader,while keeping it aligned to a page boundary. */__temp = . ;. = __boot_start - (__data_load_end - __bios_start) - 0x3f;__bios_optimal_start = ALIGN(0x40);. = __temp ;__bios_size = 0x2000 - __bios_start;/* Global data not cleared after reset. */.noinit SIZEOF(.bss) + ADDR(.bss) :{PROVIDE (__noinit_start = .) ;*(.noinit*)PROVIDE (__noinit_end = .) ;_end = . ;PROVIDE (__bios_ram_end = .) ;} > 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) }/* DWARF debug sections.Symbols in the DWARF debugging sections are relative to the beginningof 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) }}