Introduce new .text.sorted.* sections.
[deliverable/binutils-gdb.git] / ld / testsuite / ld-arm / arm-no-rel-plt.ld
CommitLineData
05456594 1/* Script for -z combreloc: combine and sort reloc sections */
05456594
NC
2OUTPUT_ARCH(arm)
3ENTRY(_start)
05456594
NC
4SECTIONS
5{
6 /* Read-only sections, merged into text segment: */
7 PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000);
8 .interp : { *(.interp) }
9 .note.gnu.build-id : { *(.note.gnu.build-id) }
10 .hash : { *(.hash) }
11 .gnu.hash : { *(.gnu.hash) }
12 .dynsym : { *(.dynsym) }
13 .dynstr : { *(.dynstr) }
14 .gnu.version : { *(.gnu.version) }
15 .gnu.version_d : { *(.gnu.version_d) }
16 .gnu.version_r : { *(.gnu.version_r) }
4ade44b7 17 .rel.dyn ALIGN (0x100) :
05456594
NC
18 {
19 *(.rel.init)
20 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
21 *(.rel.fini)
22 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
23 *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
24 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
25 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
26 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
27 *(.rel.ctors)
28 *(.rel.dtors)
29 *(.rel.got)
30 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
31 PROVIDE_HIDDEN (__rel_iplt_start = .);
32 *(.rel.iplt)
33 PROVIDE_HIDDEN (__rel_iplt_end = .);
34 PROVIDE_HIDDEN (__rela_iplt_start = .);
35 PROVIDE_HIDDEN (__rela_iplt_end = .);
36 }
4ade44b7 37 .rela.dyn ALIGN (0x100) :
05456594
NC
38 {
39 *(.rela.init)
40 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
41 *(.rela.fini)
42 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
43 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
44 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
45 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
46 *(.rela.ctors)
47 *(.rela.dtors)
48 *(.rela.got)
49 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
50 PROVIDE_HIDDEN (__rel_iplt_start = .);
51 PROVIDE_HIDDEN (__rel_iplt_end = .);
52 PROVIDE_HIDDEN (__rela_iplt_start = .);
53 *(.rela.iplt)
54 PROVIDE_HIDDEN (__rela_iplt_end = .);
55 }
56 .init :
57 {
58 KEEP (*(.init))
59 }
60 .plt : { *(.plt) }
61 .iplt : { *(.iplt) }
62 .text :
63 {
64 *(.text.unlikely .text.*_unlikely)
65 *(.text.exit .text.exit.*)
66 *(.text.startup .text.startup.*)
67 *(.text.hot .text.hot.*)
5fa5f8f5 68 *(SORT(.text.sorted.*))
05456594 69 *(.text .stub .text.* .gnu.linkonce.t.*)
075a2b89 70 /* .gnu.warning sections are handled specially by elf.em. */
05456594
NC
71 *(.gnu.warning)
72 *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
73 }
74 .fini :
75 {
76 KEEP (*(.fini))
77 }
78 PROVIDE (__etext = .);
79 PROVIDE (_etext = .);
80 PROVIDE (etext = .);
81 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
82 .rodata1 : { *(.rodata1) }
83 .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
84 PROVIDE_HIDDEN (__exidx_start = .);
85 .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
86 PROVIDE_HIDDEN (__exidx_end = .);
87 .eh_frame_hdr : { *(.eh_frame_hdr) }
88 .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
89 .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table
90 .gcc_except_table.*) }
91 /* These sections are generated by the Sun/Oracle C++ compiler. */
92 .exception_ranges : ONLY_IF_RO { *(.exception_ranges
93 .exception_ranges*) }
94 /* Adjust the address for the data segment. We want to adjust up to
95 the same address within the page on the next page up. */
96 . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1));
97 /* Exception handling */
98 .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
99 .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
100 .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) }
101 /* Thread Local Storage sections */
102 .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
103 .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
104 .preinit_array :
105 {
106 PROVIDE_HIDDEN (__preinit_array_start = .);
107 KEEP (*(.preinit_array))
108 PROVIDE_HIDDEN (__preinit_array_end = .);
109 }
110 .init_array :
111 {
112 PROVIDE_HIDDEN (__init_array_start = .);
113 KEEP (*(SORT(.init_array.*)))
114 KEEP (*(.init_array))
115 PROVIDE_HIDDEN (__init_array_end = .);
116 }
117 .fini_array :
118 {
119 PROVIDE_HIDDEN (__fini_array_start = .);
120 KEEP (*(SORT(.fini_array.*)))
121 KEEP (*(.fini_array))
122 PROVIDE_HIDDEN (__fini_array_end = .);
123 }
124 .ctors :
125 {
126 /* gcc uses crtbegin.o to find the start of
127 the constructors, so we make sure it is
128 first. Because this is a wildcard, it
129 doesn't matter if the user does not
130 actually link against crtbegin.o; the
131 linker won't look for a file to match a
132 wildcard. The wildcard also means that it
133 doesn't matter which directory crtbegin.o
134 is in. */
135 KEEP (*crtbegin.o(.ctors))
136 KEEP (*crtbegin?.o(.ctors))
137 /* We don't want to include the .ctor section from
138 the crtend.o file until after the sorted ctors.
139 The .ctor section from the crtend file contains the
140 end of ctors marker and it must be last */
141 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
142 KEEP (*(SORT(.ctors.*)))
143 KEEP (*(.ctors))
144 }
145 .dtors :
146 {
147 KEEP (*crtbegin.o(.dtors))
148 KEEP (*crtbegin?.o(.dtors))
149 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
150 KEEP (*(SORT(.dtors.*)))
151 KEEP (*(.dtors))
152 }
153 .jcr : { KEEP (*(.jcr)) }
154 .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
155 .dynamic : { *(.dynamic) }
156 .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
157 .data :
158 {
159 __data_start = . ;
160 *(.data .data.* .gnu.linkonce.d.*)
161 SORT(CONSTRUCTORS)
162 }
163 .data1 : { *(.data1) }
164 _edata = .; PROVIDE (edata = .);
165 . = .;
166 __bss_start = .;
167 __bss_start__ = .;
168 .bss :
169 {
170 *(.dynbss)
171 *(.bss .bss.* .gnu.linkonce.b.*)
172 *(COMMON)
173 /* Align here to ensure that the .bss section occupies space up to
174 _end. Align after .bss to ensure correct alignment even if the
175 .bss section disappears because there are no input sections.
176 FIXME: Why do we need it? When there is no .bss section, we don't
177 pad the .data section. */
178 . = ALIGN(. != 0 ? 32 / 8 : 1);
179 }
180 _bss_end__ = . ; __bss_end__ = . ;
181 . = ALIGN(32 / 8);
05456594
NC
182 __end__ = . ;
183 _end = .; PROVIDE (end = .);
184 /* Stabs debugging sections. */
185 .stab 0 : { *(.stab) }
186 .stabstr 0 : { *(.stabstr) }
187 .stab.excl 0 : { *(.stab.excl) }
188 .stab.exclstr 0 : { *(.stab.exclstr) }
189 .stab.index 0 : { *(.stab.index) }
190 .stab.indexstr 0 : { *(.stab.indexstr) }
191 .comment 0 : { *(.comment) }
192 /* DWARF debug sections.
193 Symbols in the DWARF debugging sections are relative to the beginning
194 of the section so we begin them at 0. */
195 /* DWARF 1 */
196 .debug 0 : { *(.debug) }
197 .line 0 : { *(.line) }
198 /* GNU DWARF 1 extensions */
199 .debug_srcinfo 0 : { *(.debug_srcinfo) }
200 .debug_sfnames 0 : { *(.debug_sfnames) }
201 /* DWARF 1.1 and DWARF 2 */
202 .debug_aranges 0 : { *(.debug_aranges) }
203 .debug_pubnames 0 : { *(.debug_pubnames) }
204 /* DWARF 2 */
205 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
206 .debug_abbrev 0 : { *(.debug_abbrev) }
207 .debug_line 0 : { *(.debug_line) }
208 .debug_frame 0 : { *(.debug_frame) }
209 .debug_str 0 : { *(.debug_str) }
210 .debug_loc 0 : { *(.debug_loc) }
211 .debug_macinfo 0 : { *(.debug_macinfo) }
212 /* SGI/MIPS DWARF 2 extensions */
213 .debug_weaknames 0 : { *(.debug_weaknames) }
214 .debug_funcnames 0 : { *(.debug_funcnames) }
215 .debug_typenames 0 : { *(.debug_typenames) }
216 .debug_varnames 0 : { *(.debug_varnames) }
217 /* DWARF 3 */
218 .debug_pubtypes 0 : { *(.debug_pubtypes) }
219 .debug_ranges 0 : { *(.debug_ranges) }
220 /* DWARF Extension. */
221 .debug_macro 0 : { *(.debug_macro) }
222 .stack 0x80000 :
223 {
224 _stack = .;
225 *(.stack)
226 }
227 .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
228 .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
229 /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
230}
This page took 0.354508 seconds and 4 git commands to generate.