]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - ld/scripttempl/i386beos.sc
19990502 sourceware import
[thirdparty/binutils-gdb.git] / ld / scripttempl / i386beos.sc
1 # Linker script for PE.
2
3 if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then
4 RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
5 fi
6
7 # We can't easily and portably get an unquoted $ in a shell
8 # substitution, so we do this instead.
9 if test "${RELOCATING}"; then
10 R_TEXT='*(.text$*)'
11 R_DATA='*(.data$*)'
12 R_RDATA='*(.rdata$*)'
13 R_IDATA='
14 *(.idata$2)
15 *(.idata$3)
16 /* These zeroes mark the end of the import list. */
17 LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
18 *(.idata$4)
19 *(.idata$5)
20 *(.idata$6)
21 *(.idata$7)'
22 R_CRT='*(.CRT$*)'
23 R_RSRC='*(.rsrc$*)'
24 R_EXC='*(.exc$*)'
25 else
26 R_TEXT=
27 R_DATA=
28 R_RDATA=
29 R_IDATA=
30 R_CRT=
31 R_RSRC=
32 R_EXC=
33 fi
34
35 cat <<EOF
36 ${RELOCATING+OUTPUT_FORMAT(${OUTPUT_FORMAT})}
37 ${RELOCATING-OUTPUT_FORMAT(${RELOCATEABLE_OUTPUT_FORMAT})}
38
39 ${LIB_SEARCH_DIRS}
40
41 ENTRY(__start)
42 ${RELOCATING+header = .;}
43 ${RELOCATING+__fltused = .; /* set up floating pt for MS .obj\'s */}
44 ${RELOCATING+__ldused = .;}
45 SECTIONS
46 {
47 .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
48 {
49 ${RELOCATING+ __text_start__ = . ;}
50 ${RELOCATING+ *(.init)}
51 *(.text)
52 ${R_TEXT}
53 *(.glue_7t)
54 *(.glue_7)
55 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
56 LONG (-1); *(.ctors); *(.ctor); LONG (0); }
57 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
58 LONG (-1); *(.dtors); *(.dtor); LONG (0); }
59 ${RELOCATING+ *(.fini)}
60 /* ??? Why is .gcc_exc here? */
61 ${RELOCATING+ *(.gcc_exc)}
62 ${RELOCATING+ etext = .;}
63 ${RELOCATING+ __text_end__ = .;}
64 *(.gcc_except_table)
65 }
66
67 /* The Cygwin32 library uses a section to avoid copying certain data
68 on fork. This used to be named ".data$nocopy". The linker used
69 to include this between __data_start__ and __data_end__, but that
70 breaks building the cygwin32 dll. Instead, we name the section
71 ".data_cygwin_nocopy" and explictly include it after __data_end__. */
72
73 .data ${RELOCATING+BLOCK(__section_alignment__)} :
74 {
75 ${RELOCATING+__data_start__ = . ;}
76 *(.data)
77 *(.data2)
78 ${R_DATA}
79 ${RELOCATING+__data_end__ = . ;}
80 ${RELOCATING+*(.data_cygwin_nocopy)}
81 }
82
83 .bss ${RELOCATING+BLOCK(__section_alignment__)} :
84 {
85 ${RELOCATING+__bss_start__ = . ;}
86 *(.bss)
87 *(COMMON)
88 /* link.exe apparently pulls in .obj's because of UNDEF common
89 symbols, which is not the coff way, but that's MS for you. */
90 *(.CRT\$XCA)
91 *(.CRT\$XCZ)
92 *(.CRT\$XIA)
93 *(.CRT\$XIZ)
94 ${RELOCATING+__bss_end__ = . ;}
95 }
96
97 .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
98 {
99 *(.rdata)
100 ${R_RDATA}
101 *(.eh_frame)
102 }
103
104 .edata ${RELOCATING+BLOCK(__section_alignment__)} :
105 {
106 *(.edata)
107 }
108
109 /DISCARD/ :
110 {
111 *(.debug\$S)
112 *(.debug\$T)
113 *(.debug\$F)
114 *(.drectve)
115 *(.debug*)
116 }
117
118 .idata ${RELOCATING+BLOCK(__section_alignment__)} :
119 {
120 /* This cannot currently be handled with grouped sections.
121 See pe.em:sort_sections. */
122 ${R_IDATA}
123 }
124 .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
125 {
126 ${R_CRT}
127 }
128
129 .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
130 {
131 /* end is deprecated, don't use it */
132 ${RELOCATING+ end = .;}
133 ${RELOCATING+ _end = .;}
134 ${RELOCATING+ __end__ = .;}
135 }
136
137 .reloc ${RELOCATING+BLOCK(__section_alignment__)} :
138 {
139 *(.reloc)
140 }
141
142 .rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
143 {
144 *(.rsrc)
145 ${R_RSRC}
146 }
147
148 .exc ${RELOCATING+BLOCK(__section_alignment__)} :
149 {
150 *(.exc)
151 ${R_EXC}
152 }
153
154 .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
155 {
156 [ .stab ]
157 }
158
159 .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
160 {
161 [ .stabstr ]
162 }
163 /* DWARF debug sections.
164 Symbols in the DWARF debugging sections are relative to the beginning
165 of the section so we begin them at 0. */
166
167 /* DWARF 1 */
168 .debug 0 ${RELOCATING+(NOLOAD)} : { *(.debug) }
169 .line 0 ${RELOCATING+(NOLOAD)} : { *(.line) }
170
171 /* GNU DWARF 1 extensions */
172 .debug_srcinfo 0 ${RELOCATING+(NOLOAD)} : { *(.debug_srcinfo) }
173 .debug_sfnames 0 ${RELOCATING+(NOLOAD)} : { *(.debug_sfnames) }
174
175 /* DWARF 1.1 and DWARF 2 */
176 .debug_aranges 0 ${RELOCATING+(NOLOAD)} : { *(.debug_aranges) }
177 .debug_pubnames 0 ${RELOCATING+(NOLOAD)} : { *(.debug_pubnames) }
178
179 /* DWARF 2 */
180 .debug_info 0 ${RELOCATING+(NOLOAD)} : { *(.debug_info) }
181 .debug_abbrev 0 ${RELOCATING+(NOLOAD)} : { *(.debug_abbrev) }
182 .debug_line 0 ${RELOCATING+(NOLOAD)} : { *(.debug_line) }
183 .debug_frame 0 ${RELOCATING+(NOLOAD)} : { *(.debug_frame) }
184 .debug_str 0 ${RELOCATING+(NOLOAD)} : { *(.debug_str) }
185 .debug_loc 0 ${RELOCATING+(NOLOAD)} : { *(.debug_loc) }
186 .debug_macinfo 0 ${RELOCATING+(NOLOAD)} : { *(.debug_macinfo) }
187
188 /* SGI/MIPS DWARF 2 extensions */
189 .debug_weaknames 0 ${RELOCATING+(NOLOAD)} : { *(.debug_weaknames) }
190 .debug_funcnames 0 ${RELOCATING+(NOLOAD)} : { *(.debug_funcnames) }
191 .debug_typenames 0 ${RELOCATING+(NOLOAD)} : { *(.debug_typenames) }
192 .debug_varnames 0 ${RELOCATING+(NOLOAD)} : { *(.debug_varnames) }
193 }
194 EOF