Commit | Line | Data |
---|---|---|
1fe1f39c NC |
1 | # Linker Script for National Semiconductor's CRX-ELF32. |
2 | ||
3 | # The next line should be uncommented if it is desired to link | |
4 | # without libstart.o and directly enter main. | |
5 | ||
6 | # ENTRY=_main | |
7 | ||
8 | test -z "$ENTRY" && ENTRY=_start | |
9 | cat <<EOF | |
10 | ||
11 | /* Example Linker Script for linking NS CRX elf32 files. */ | |
12 | ||
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. */ | |
17 | ||
18 | OUTPUT_FORMAT("${OUTPUT_FORMAT}") | |
19 | OUTPUT_ARCH(${ARCH}) | |
20 | EXTERN(${ENTRY}) | |
21 | ENTRY(${ENTRY}) | |
22 | ||
23 | /* Define memory regions. */ | |
24 | MEMORY | |
25 | { | |
26 | rom : ORIGIN = 0x2, LENGTH = 3M | |
27 | ram : ORIGIN = 4M, LENGTH = 10M | |
28 | } | |
29 | ||
30 | SECTIONS | |
31 | { | |
32 | .text : { __TEXT_START = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) __TEXT_END = .; } > rom | |
33 | ||
34 | .rdata : { __RDATA_START = .; *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) __RDATA_END = .; } > rom | |
35 | ||
36 | .ctor ALIGN(4) : { __CTOR_LIST = .; *(.ctors) __CTOR_END = .; } > rom | |
37 | ||
38 | .dtor ALIGN(4) : { __DTOR_LIST = .; *(.dtors) __DTOR_END = .; } > rom | |
39 | ||
40 | .data : { __DATA_START = .; *(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*) __DATA_END = .; } > ram AT > rom | |
41 | ||
42 | .bss (NOLOAD) : { __BSS_START = .; *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*) __BSS_END = .; } > ram | |
43 | ||
44 | /* You may change the sizes of the following sections to fit the actual | |
45 | size your program requires. | |
46 | ||
47 | The heap and stack are aligned to the bus width, as a speed optimization | |
48 | for accessing data located there. */ | |
49 | ||
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 | |
53 | } | |
54 | ||
55 | __DATA_IMAGE_START = LOADADDR(.data); | |
56 | EOF |