Add new port: crx-elf
[external/binutils.git] / ld / scripttempl / elf32crx.sc
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