Remove fake operand handling for extended mnemonics.
[binutils-gdb.git] / ld / scripttempl / elf32crx.sc
blob89aafa64fd62d8273fa3836e9a9a90b03445c8c3
1 # Linker Script for National Semiconductor's CRX-ELF32.
3 # Copyright (C) 2014-2018 Free Software Foundation, Inc.
5 # Copying and distribution of this file, with or without modification,
6 # are permitted in any medium without royalty provided the copyright
7 # notice and this notice are preserved.
9 # The next line should be uncommented if it is desired to link
10 # without libstart.o and directly enter main.
12 # ENTRY=_main
14 test -z "$ENTRY" && ENTRY=_start
15 cat <<EOF
17 /* Example Linker Script for linking NS CRX elf32 files.
19    Copyright (C) 2014-2018 Free Software Foundation, Inc.
21    Copying and distribution of this script, with or without modification,
22    are permitted in any medium without royalty provided the copyright
23    notice and this notice are preserved.  */
26 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
27 OUTPUT_ARCH(${ARCH})
28 ${RELOCATING+ENTRY(${ENTRY})}
30 /* Define memory regions.  */
31 MEMORY
33         rom         : ORIGIN = 0x2,         LENGTH = 3M
34         ram         : ORIGIN = 4M,          LENGTH = 10M
37 /*  Many sections come in three flavours.  There is the 'real' section,
38     like ".data".  Then there are the per-procedure or per-variable
39     sections, generated by -ffunction-sections and -fdata-sections in GCC,
40     and useful for --gc-sections, which for a variable "foo" might be
41     ".data.foo".  Then there are the linkonce sections, for which the linker
42     eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
43     The exact correspondences are:
45     Section     Linkonce section
46     .text       .gnu.linkonce.t.foo
47     .rdata      .gnu.linkonce.r.foo
48     .data       .gnu.linkonce.d.foo
49     .bss        .gnu.linkonce.b.foo
50     .debug_info .gnu.linkonce.wi.foo  */
52 SECTIONS
54   .init :
55   {
56     __INIT_START = .;
57     KEEP (*(.init))
58     __INIT_END = .;
59   } > rom
61   .fini :
62   {
63     __FINI_START = .;
64     KEEP (*(.fini))
65     __FINI_END = .;
66   } > rom
68   .jcr :
69   {
70     KEEP (*(.jcr))
71   } > rom
73   .text :
74   {
75     __TEXT_START = .;
76     *(.text) *(.text.*) *(.gnu.linkonce.t.*)
77     __TEXT_END = .;
78   } > rom
80   .rdata :
81   {
82     __RDATA_START = .;
83     *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) *(.rodata.*)
84     __RDATA_END = .;
85   } > rom
87   .ctor ALIGN(4) :
88   {
89     __CTOR_START = .;
90     /* The compiler uses crtbegin.o to find the start
91        of the constructors, so we make sure it is
92        first.  Because this is a wildcard, it
93        doesn't matter if the user does not
94        actually link against crtbegin.o; the
95        linker won't look for a file to match a
96        wildcard.  The wildcard also means that it
97        doesn't matter which directory crtbegin.o
98        is in.  */
100     KEEP (*crtbegin.o(.ctors))
101     KEEP (*crtbegin?.o(.ctors))
103     /* We don't want to include the .ctor section from
104        the crtend.o file until after the sorted ctors.
105        The .ctor section from the crtend file contains the
106        end of ctors marker and it must be last */
108     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .ctors))
109     KEEP (*(SORT(.ctors.*)))
110     KEEP (*(.ctors))
111     __CTOR_END = .;
112   } > rom
114   .dtor ALIGN(4) :
115   {
116     __DTOR_START = .;
117     KEEP (*crtbegin.o(.dtors))
118     KEEP (*crtbegin?.o(.dtors))
119     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .dtors))
120     KEEP (*(SORT(.dtors.*)))
121     KEEP (*(.dtors))
122     __DTOR_END = .;
123   } > rom
125   .data :
126   {
127     __DATA_START = .;
128     *(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*)
129     __DATA_END = .;
130   } > ram AT > rom
132   .bss (NOLOAD) :
133   {
134     __BSS_START = .;
135     *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*)
136     __BSS_END = .;
137   } > ram
139 /* You may change the sizes of the following sections to fit the actual
140    size your program requires.
142    The heap and stack are aligned to the bus width, as a speed optimization
143    for accessing data located there.  */
145   .heap (NOLOAD) :
146   {
147     . = ALIGN(4);
148     __HEAP_START = .;
149     . += 0x2000; __HEAP_MAX = .;
150   } > ram
152   .stack (NOLOAD) :
153   {
154     . = ALIGN(4);
155     . += 0x6000;
156     __STACK_START = .;
157   } > ram
159   .istack (NOLOAD) :
160   {
161     . = ALIGN(4);
162     . += 0x100;
163     __ISTACK_START = .;
164   } > ram
166   .comment        0 : { *(.comment) }
170 . $srcdir/scripttempl/DWARF.sc
172 cat <<EOF
175 __DATA_IMAGE_START = LOADADDR(.data);