1 # Linker Script for National Semiconductor's CRX-ELF32.
3 # The next line should be uncommented if it is desired to link
4 # without libstart.o and directly enter main.
8 test -z "$ENTRY" && ENTRY=_start
11 /* Example Linker Script for linking NS CRX elf32 files. */
13 /* The next line forces the entry point (${ENTRY} in this script)
14 to be entered in the output file as an undefined symbol.
15 It is needed in case the entry point is not called explicitly
16 (which is the usual case) AND is in an archive. */
18 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
23 /* Define memory regions. */
26 rom : ORIGIN = 0x2, LENGTH = 3M
27 ram : ORIGIN = 4M, LENGTH = 10M
32 .text : { __TEXT_START = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) __TEXT_END = .; } > rom
34 .rdata : { __RDATA_START = .; *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) __RDATA_END = .; } > rom
36 .ctor ALIGN(4) : { __CTOR_LIST = .; *(.ctors) __CTOR_END = .; } > rom
38 .dtor ALIGN(4) : { __DTOR_LIST = .; *(.dtors) __DTOR_END = .; } > rom
40 .data : { __DATA_START = .; *(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*) __DATA_END = .; } > ram AT > rom
42 .bss (NOLOAD) : { __BSS_START = .; *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*) __BSS_END = .; } > ram
44 /* You may change the sizes of the following sections to fit the actual
45 size your program requires.
47 The heap and stack are aligned to the bus width, as a speed optimization
48 for accessing data located there. */
50 .heap : { . = ALIGN(4); __HEAP_START = .; . += 0x2000; __HEAP_MAX = .; } > ram
51 .stack : { . = ALIGN(4); . += 0x6000; __STACK_START = .; } > ram
52 .istack : { . = ALIGN(4); . += 0x100; __ISTACK_START = .; } > ram
55 __DATA_IMAGE_START = LOADADDR(.data);