Fix spelling mistakes.
[deliverable/binutils-gdb.git] / ld / scripttempl / pep.sc
CommitLineData
99ad8390
NC
1# Linker script for PE.
2
3if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then
4 RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
5fi
6
7# We can't easily and portably get an unquoted $ in a shell
8# substitution, so we do this instead.
9# Sorting of the .foo$* sections is required by the definition of
10# grouped sections in PE.
11# Sorting of the file names in R_IDATA is required by the
12# current implementation of dlltool (this could probably be changed to
13# use grouped sections instead).
14if test "${RELOCATING}"; then
15 R_TEXT='*(SORT(.text$*))'
e2a83dd0
NC
16 if test "x$LD_FLAG" = "xauto_import" ; then
17 R_DATA='*(SORT(.data$*))
18 *(.rdata)
19 *(SORT(.rdata$*))'
20 R_RDATA=''
21 else
22 R_DATA='*(SORT(.data$*))'
23 R_RDATA='*(.rdata)
24 *(SORT(.rdata$*))'
25 fi
d4874973 26 R_IDATA234='
99ad8390
NC
27 SORT(*)(.idata$2)
28 SORT(*)(.idata$3)
29 /* These zeroes mark the end of the import list. */
30 LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
d4874973
KT
31 SORT(*)(.idata$4)'
32 R_IDATA5='SORT(*)(.idata$5)'
33 R_IDATA67='
99ad8390
NC
34 SORT(*)(.idata$6)
35 SORT(*)(.idata$7)'
36 R_CRT_XC='*(SORT(.CRT$XC*)) /* C initialization */'
37 R_CRT_XI='*(SORT(.CRT$XI*)) /* C++ initialization */'
38 R_CRT_XL='*(SORT(.CRT$XL*)) /* TLS callbacks */'
39 R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */'
40 R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */'
41 R_TLS='
42 *(.tls)
43 *(.tls$)
44 *(SORT(.tls$*))'
45 R_RSRC='*(SORT(.rsrc$*))'
46else
47 R_TEXT=
48 R_DATA=
e2a83dd0 49 R_RDATA='*(.rdata)'
d4874973
KT
50 R_IDATA234=
51 R_IDATA5=
52 R_IDATA67=
99ad8390
NC
53 R_CRT=
54 R_RSRC=
55fi
56
57cat <<EOF
58${RELOCATING+OUTPUT_FORMAT(${OUTPUT_FORMAT})}
59${RELOCATING-OUTPUT_FORMAT(${RELOCATEABLE_OUTPUT_FORMAT})}
60${OUTPUT_ARCH+OUTPUT_ARCH(${OUTPUT_ARCH})}
61
62${LIB_SEARCH_DIRS}
63
64SECTIONS
65{
66 ${RELOCATING+/* Make the virtual address and file offset synced if the alignment is}
67 ${RELOCATING+ lower than the target page size. */}
68 ${RELOCATING+. = SIZEOF_HEADERS;}
69 ${RELOCATING+. = ALIGN(__section_alignment__);}
70 .text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
71 {
72 ${RELOCATING+ *(.init)}
73 *(.text)
74 ${R_TEXT}
032f3e01 75 ${RELOCATING+ *(.text.*)}
99ad8390
NC
76 *(.glue_7t)
77 *(.glue_7)
da6fa31a 78 ${CONSTRUCTING+. = ALIGN(8);}
99ad8390 79 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
9b996610 80 LONG (-1); LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); LONG (0); }
99ad8390 81 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
9b996610 82 LONG (-1); LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); LONG (0); }
99ad8390
NC
83 ${RELOCATING+ *(.fini)}
84 /* ??? Why is .gcc_exc here? */
85 ${RELOCATING+ *(.gcc_exc)}
86 ${RELOCATING+PROVIDE (etext = .);}
5f294ed6 87 ${RELOCATING+ *(.gcc_except_table)}
99ad8390
NC
88 }
89
90 /* The Cygwin32 library uses a section to avoid copying certain data
91 on fork. This used to be named ".data$nocopy". The linker used
92 to include this between __data_start__ and __data_end__, but that
93 breaks building the cygwin32 dll. Instead, we name the section
cc643b88 94 ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
99ad8390
NC
95
96 .data ${RELOCATING+BLOCK(__section_alignment__)} :
97 {
98 ${RELOCATING+__data_start__ = . ;}
99 *(.data)
100 *(.data2)
101 ${R_DATA}
102 *(.jcr)
103 ${RELOCATING+__data_end__ = . ;}
104 ${RELOCATING+*(.data_cygwin_nocopy)}
105 }
106
107 .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
108 {
99ad8390 109 ${R_RDATA}
730035f7 110 ${RELOCATING+__rt_psrelocs_start = .;}
99ad8390 111 *(.rdata_runtime_pseudo_reloc)
730035f7 112 ${RELOCATING+__rt_psrelocs_end = .;}
99ad8390 113 }
730035f7
DK
114 ${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
115 ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
116 ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
117 ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
118 ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
99ad8390 119
27505b5d
TG
120 .eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
121 {
72b016b4 122 *(.eh_frame*)
27505b5d
TG
123 }
124
99ad8390
NC
125 .pdata ${RELOCATING+BLOCK(__section_alignment__)} :
126 {
2d7f4929
KT
127 *(.pdata*)
128 }
129
130 .xdata ${RELOCATING+BLOCK(__section_alignment__)} :
131 {
132 *(.xdata*)
99ad8390
NC
133 }
134
135 .bss ${RELOCATING+BLOCK(__section_alignment__)} :
136 {
137 ${RELOCATING+__bss_start__ = . ;}
138 *(.bss)
139 *(COMMON)
140 ${RELOCATING+__bss_end__ = . ;}
141 }
142
143 .edata ${RELOCATING+BLOCK(__section_alignment__)} :
144 {
145 *(.edata)
146 }
147
148 /DISCARD/ :
149 {
150 *(.debug\$S)
151 *(.debug\$T)
152 *(.debug\$F)
153 *(.drectve)
fecc36fd
KT
154 ${RELOCATING+ *(.note.GNU-stack)}
155 ${RELOCATING+ *(.gnu.lto_*)}
99ad8390
NC
156 }
157
158 .idata ${RELOCATING+BLOCK(__section_alignment__)} :
159 {
160 /* This cannot currently be handled with grouped sections.
161 See pep.em:sort_sections. */
d4874973
KT
162 ${R_IDATA234}
163 ${RELOCATING+__IAT_start__ = .;}
164 ${R_IDATA5}
165 ${RELOCATING+__IAT_end__ = .;}
166 ${R_IDATA67}
99ad8390
NC
167 }
168 .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
169 {
170 ${RELOCATING+___crt_xc_start__ = . ;}
171 ${R_CRT_XC}
172 ${RELOCATING+___crt_xc_end__ = . ;}
173 ${RELOCATING+___crt_xi_start__ = . ;}
174 ${R_CRT_XI}
175 ${RELOCATING+___crt_xi_end__ = . ;}
176 ${RELOCATING+___crt_xl_start__ = . ;}
177 ${R_CRT_XL}
178 /* ___crt_xl_end__ is defined in the TLS Directory support code */
179 ${RELOCATING+___crt_xp_start__ = . ;}
180 ${R_CRT_XP}
181 ${RELOCATING+___crt_xp_end__ = . ;}
182 ${RELOCATING+___crt_xt_start__ = . ;}
183 ${R_CRT_XT}
184 ${RELOCATING+___crt_xt_end__ = . ;}
185 }
186
187 .tls ${RELOCATING+BLOCK(__section_alignment__)} :
188 {
189 ${RELOCATING+___tls_start__ = . ;}
190 ${R_TLS}
191 ${RELOCATING+___tls_end__ = . ;}
192 }
193
194 .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
195 {
196 /* end is deprecated, don't use it */
197 ${RELOCATING+PROVIDE (end = .);}
198 ${RELOCATING+PROVIDE ( _end = .);}
199 ${RELOCATING+ __end__ = .;}
200 }
201
202 .rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
203 {
204 *(.rsrc)
205 ${R_RSRC}
206 }
207
208 .reloc ${RELOCATING+BLOCK(__section_alignment__)} :
209 {
210 *(.reloc)
211 }
212
213 .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
214 {
215 *(.stab)
216 }
217
218 .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
219 {
220 *(.stabstr)
221 }
222
223 /* DWARF debug sections.
224 Symbols in the DWARF debugging sections are relative to the beginning
225 of the section. Unlike other targets that fake this by putting the
226 section VMA at 0, the PE format will not allow it. */
227
228 /* DWARF 1.1 and DWARF 2. */
229 .debug_aranges ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
230 {
231 *(.debug_aranges)
232 }
233
234 .debug_pubnames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
235 {
236 *(.debug_pubnames)
237 }
238
22418005 239 .debug_pubtypes ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
a626fe20
KT
240 {
241 *(.debug_pubtypes)
242 }
243
99ad8390
NC
244 /* DWARF 2. */
245 .debug_info ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
246 {
247 *(.debug_info) *(.gnu.linkonce.wi.*)
248 }
249
250 .debug_abbrev ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
251 {
252 *(.debug_abbrev)
253 }
254
255 .debug_line ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
256 {
257 *(.debug_line)
258 }
259
260 .debug_frame ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
261 {
72b016b4 262 *(.debug_frame*)
99ad8390
NC
263 }
264
265 .debug_str ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
266 {
267 *(.debug_str)
268 }
269
270 .debug_loc ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
271 {
272 *(.debug_loc)
273 }
274
275 .debug_macinfo ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
276 {
277 *(.debug_macinfo)
278 }
279
280 /* SGI/MIPS DWARF 2 extensions. */
281 .debug_weaknames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
282 {
283 *(.debug_weaknames)
284 }
285
286 .debug_funcnames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
287 {
288 *(.debug_funcnames)
289 }
290
291 .debug_typenames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
292 {
293 *(.debug_typenames)
294 }
295
296 .debug_varnames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
297 {
298 *(.debug_varnames)
299 }
300
301 /* DWARF 3. */
302 .debug_ranges ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
303 {
304 *(.debug_ranges)
305 }
802d4822
KT
306
307 /* DWARF 4. */
308 .debug_types ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
309 {
310 *(.debug_types) *(.gnu.linkonce.wt.*)
311 }
99ad8390
NC
312}
313EOF
This page took 0.237581 seconds and 4 git commands to generate.