123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /*
- * linker script for RM48x50 with GNU ld
- * Grissiom 2013-10-20
- */
- /* Program Entry, set to mark it as "used" and avoid gc */
- MEMORY
- {
- CODE (rx) : ORIGIN = 0x00000000, LENGTH = 3M
- DATA (rw) : ORIGIN = 0x08000000, LENGTH = 256k
- }
- OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
- OUTPUT_ARCH(arm)
- ENTRY(system_vectors)
- SECTIONS
- {
- .text :
- {
- __text_start = .;
- *(.vectors)
- *(.text)
- *(.text.*)
- __rodata_start = .;
- *(.rodata)
- *(.rodata.*)
- __rodata_end = .;
- *(.glue_7)
- *(.glue_7t)
- *(.vfp11_veneer)
- *(.v4_bx)
- *(.gnu.linkonce.t*)
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- . = ALIGN(4);
- /* section information for modules */
- . = ALIGN(4);
- __rtmsymtab_start = .;
- KEEP(*(RTMSymTab))
- __rtmsymtab_end = .;
- /* section information for initialization */
- . = ALIGN(4);
- __rt_init_start = .;
- KEEP(*(SORT(.rti_fn*)))
- __rt_init_end = .;
- __text_end = .;
- } > CODE = 0
- . = ALIGN(4);
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- /* new GCC version uses .init_array */
- KEEP(*(SORT(.init_array.*)))
- KEEP(*(.init_array))
- PROVIDE(__ctors_end__ = .);
- } > CODE
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- /* This is used by the startup in order to initialize the .data secion */
- _sidata = .;
- } > CODE
- /* .ARM.exidx is sorted, so has to go in its own output section. */
- __exidx_start = .;
- .ARM.exidx :
- {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- /* This is used by the startup in order to initialize the .data secion */
- _sidata = .;
- } > CODE
- __exidx_end = .;
- /* .data section which is used for initialized data */
- .data : AT (_sidata)
- {
- . = ALIGN(4);
- /* This is used by the startup in order to initialize the .data secion */
- _sdata = . ;
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- . = ALIGN(4);
- /* This is used by the startup in order to initialize the .data secion */
- _edata = . ;
- } >DATA
- __data_end = .;
- __noinit_start = .;
- .noinit :
- {
- . = ALIGN(4);
- *(.bss.noinit)
- } > DATA
- __noinit_stop = .;
- __bss_start = .;
- .bss :
- {
- . = ALIGN(4);
- /* This is used by the startup in order to initialize the .bss secion */
- _sbss = .;
- *(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(4);
- /* This is used by the startup in order to initialize the .bss secion */
- _ebss = . ;
- } > DATA
- __bss_end = .;
- /* 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) }
- */
- _end = .;
- }
|