* amd64fbsd-tdep.c (amd64fbsd_sigtramp_start_addr): Renamed from
[deliverable/binutils-gdb.git] / ld / scripttempl / pe.sc
CommitLineData
252b5132
RH
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$*))'
16 R_DATA='*(SORT(.data$*))'
17 R_RDATA='*(SORT(.rdata$*))'
18 R_IDATA='
19 SORT(*)(.idata$2)
20 SORT(*)(.idata$3)
21 /* These zeroes mark the end of the import list. */
22 LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
23 SORT(*)(.idata$4)
24 SORT(*)(.idata$5)
25 SORT(*)(.idata$6)
26 SORT(*)(.idata$7)'
27 R_CRT='*(SORT(.CRT$*))'
ca6dee30
NC
28 R_TLS='
29 *(.tls)
30 *(.tls$)
31 *(SORT(.tls$*))'
252b5132
RH
32 R_RSRC='*(SORT(.rsrc$*))'
33else
34 R_TEXT=
35 R_DATA=
36 R_RDATA=
37 R_IDATA=
38 R_CRT=
39 R_RSRC=
40fi
41
42cat <<EOF
43${RELOCATING+OUTPUT_FORMAT(${OUTPUT_FORMAT})}
44${RELOCATING-OUTPUT_FORMAT(${RELOCATEABLE_OUTPUT_FORMAT})}
c6c37250 45${OUTPUT_ARCH+OUTPUT_ARCH(${OUTPUT_ARCH})}
252b5132
RH
46
47${LIB_SEARCH_DIRS}
48
be4514d3 49ENTRY(${ENTRY})
252b5132
RH
50
51SECTIONS
52{
53 .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
54 {
55 ${RELOCATING+ *(.init)}
56 *(.text)
57 ${R_TEXT}
58 *(.glue_7t)
59 *(.glue_7)
60 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
335c5610 61 LONG (-1); *(SORT(.ctors.*)); *(.ctors); *(.ctor); LONG (0); }
252b5132 62 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
335c5610 63 LONG (-1); *(SORT(.dtors.*)); *(.dtors); *(.dtor); LONG (0); }
252b5132
RH
64 ${RELOCATING+ *(.fini)}
65 /* ??? Why is .gcc_exc here? */
66 ${RELOCATING+ *(.gcc_exc)}
15c9f673 67 ${RELOCATING+PROVIDE (etext = .);}
252b5132
RH
68 *(.gcc_except_table)
69 }
70
71 /* The Cygwin32 library uses a section to avoid copying certain data
72 on fork. This used to be named ".data$nocopy". The linker used
73 to include this between __data_start__ and __data_end__, but that
74 breaks building the cygwin32 dll. Instead, we name the section
75 ".data_cygwin_nocopy" and explictly include it after __data_end__. */
76
77 .data ${RELOCATING+BLOCK(__section_alignment__)} :
78 {
79 ${RELOCATING+__data_start__ = . ;}
80 *(.data)
81 *(.data2)
82 ${R_DATA}
83 ${RELOCATING+__data_end__ = . ;}
84 ${RELOCATING+*(.data_cygwin_nocopy)}
85 }
86
be4514d3
ILT
87 .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
88 {
89 *(.rdata)
90 ${R_RDATA}
91 *(.eh_frame)
36379167
NC
92 ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;}
93 ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;}
ad5211be 94 *(.rdata_runtime_pseudo_reloc)
36379167
NC
95 ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
96 ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
be4514d3
ILT
97 }
98
344a211f
NC
99 .pdata ${RELOCATING+BLOCK(__section_alignment__)} :
100 {
101 *(.pdata)
102 }
103
252b5132
RH
104 .bss ${RELOCATING+BLOCK(__section_alignment__)} :
105 {
106 ${RELOCATING+__bss_start__ = . ;}
107 *(.bss)
108 *(COMMON)
109 ${RELOCATING+__bss_end__ = . ;}
110 }
111
252b5132
RH
112 .edata ${RELOCATING+BLOCK(__section_alignment__)} :
113 {
114 *(.edata)
115 }
116
117 /DISCARD/ :
118 {
119 *(.debug\$S)
120 *(.debug\$T)
121 *(.debug\$F)
122 *(.drectve)
123 }
124
125 .idata ${RELOCATING+BLOCK(__section_alignment__)} :
126 {
127 /* This cannot currently be handled with grouped sections.
128 See pe.em:sort_sections. */
129 ${R_IDATA}
130 }
131 .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
132 {
133 ${R_CRT}
134 }
135
ca6dee30
NC
136 .tls ${RELOCATING+BLOCK(__section_alignment__)} :
137 {
138 ${R_TLS}
139 }
140
252b5132
RH
141 .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
142 {
143 /* end is deprecated, don't use it */
15c9f673
CF
144 ${RELOCATING+PROVIDE (end = .);}
145 ${RELOCATING+PROVIDE ( _end = .);}
252b5132
RH
146 ${RELOCATING+ __end__ = .;}
147 }
148
252b5132
RH
149 .rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
150 {
151 *(.rsrc)
152 ${R_RSRC}
153 }
154
be4514d3
ILT
155 .reloc ${RELOCATING+BLOCK(__section_alignment__)} :
156 {
157 *(.reloc)
158 }
159
252b5132
RH
160 .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
161 {
162 [ .stab ]
163 }
164
165 .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
166 {
167 [ .stabstr ]
168 }
169
170}
171EOF
This page took 0.206212 seconds and 4 git commands to generate.