* ldgram.y (atype): Accept parentheses with no type.
[deliverable/binutils-gdb.git] / ld / scripttempl / elfppc.sc
CommitLineData
5f16938d
MM
1#
2# Unusual variables checked by this code:
3# NOP - two byte opcode for no-op (defaults to 0)
4# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
c2b6884b 5# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
5f16938d 6# (e.g., .PARISC.milli)
c2b6884b 7# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
5f16938d
MM
8# (e.g., .PARISC.global)
9# OTHER_SECTIONS - at the end
10# EXECUTABLE_SYMBOLS - symbols that must be defined for an
11# executable (e.g., _DYNAMIC_LINK)
12# TEXT_START_SYMBOLS - symbols that appear at the start of the
13# .text section.
14# DATA_START_SYMBOLS - symbols that appear at the start of the
15# .data section.
16# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
17# .bss section besides __bss_start.
5f16938d
MM
18#
19# When adding sections, do note that the names of some sections are used
20# when specifying the start address of the next.
21#
22test -z "$ENTRY" && ENTRY=_start
23test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
24test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
25test "$LD_FLAG" = "N" && DATA_ADDR=.
c56c9218
C
26SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2) }"
27SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2) }"
28INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
29PLT=".plt ${RELOCATING-0} : { *(.plt) }"
5f16938d
MM
30cat <<EOF
31OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
32 "${LITTLE_OUTPUT_FORMAT}")
33OUTPUT_ARCH(${ARCH})
34ENTRY(${ENTRY})
35
36${RELOCATING+${LIB_SEARCH_DIRS}}
37${RELOCATING+/* Do we need any of these for elf?
38 __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
39${RELOCATING+${EXECUTABLE_SYMBOLS}}
40${RELOCATING- /* For some reason, the Solaris linker makes bad executables
41 if gld -r is used and the intermediate file has sections starting
42 at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
43 bug. But for now assigning the zero vmas works. */}
fb2a7661
MM
44
45${RELOCATING+PROVIDE (__stack = 0);}
5f16938d
MM
46SECTIONS
47{
48 /* Read-only sections, merged into text segment: */
49 ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_START_ADDR} + SIZEOF_HEADERS;}}
50 ${CREATE_SHLIB+${RELOCATING+. = SIZEOF_HEADERS;}}
51 ${CREATE_SHLIB-${INTERP}}
be03dc3e
MM
52 .hash ${RELOCATING-0} : { *(.hash) }
53 .dynsym ${RELOCATING-0} : { *(.dynsym) }
54 .dynstr ${RELOCATING-0} : { *(.dynstr) }
4602e5f4
ILT
55 .gnu.version ${RELOCATING-0} : { *(.gnu.version) }
56 .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d) }
57 .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r) }
f5f212fb
ILT
58 .rela.text ${RELOCATING-0} :
59 { *(.rela.text) *(.rela.gnu.linkonce.t*) }
60 .rela.data ${RELOCATING-0} :
61 { *(.rela.data) *(.rela.gnu.linkonce.d*) }
62 .rela.rodata ${RELOCATING-0} :
63 { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
be03dc3e 64 .rela.got ${RELOCATING-0} : { *(.rela.got) }
be03dc3e
MM
65 .rela.got1 ${RELOCATING-0} : { *(.rela.got1) }
66 .rela.got2 ${RELOCATING-0} : { *(.rela.got2) }
67 .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }
68 .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }
69 .rela.init ${RELOCATING-0} : { *(.rela.init) }
70 .rela.fini ${RELOCATING-0} : { *(.rela.fini) }
71 .rela.bss ${RELOCATING-0} : { *(.rela.bss) }
72 .rela.plt ${RELOCATING-0} : { *(.rela.plt) }
4602e5f4
ILT
73 .rela.sdata ${RELOCATING-0} : { *(.rela.sdata) }
74 .rela.sbss ${RELOCATING-0} : { *(.rela.sbss) }
c2b6884b
MM
75 .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2) }
76 .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2) }
5f16938d
MM
77 .text ${RELOCATING-0} :
78 {
79 ${RELOCATING+${TEXT_START_SYMBOLS}}
80 *(.text)
81 /* .gnu.warning sections are handled specially by elf32.em. */
82 *(.gnu.warning)
f5f212fb 83 *(.gnu.linkonce.t*)
5f16938d 84 } =${NOP-0}
28ad0357
MM
85 .init ${RELOCATING-0} : { *(.init) } =${NOP-0}
86 .fini ${RELOCATING-0} : { *(.fini) } =${NOP-0}
f5f212fb 87 .rodata ${RELOCATING-0} : { *(.rodata) *(.gnu.linkonce.r*) }
c2b6884b 88 .rodata1 ${RELOCATING-0} : { *(.rodata1) }
28ad0357
MM
89 ${RELOCATING+_etext = .;}
90 ${RELOCATING+PROVIDE (etext = .);}
c56c9218
C
91 ${CREATE_SHLIB-${SDATA2}}
92 ${CREATE_SHLIB-${SBSS2}}
5f16938d
MM
93 ${RELOCATING+${OTHER_READONLY_SECTIONS}}
94
c2b6884b
MM
95 /* Adjust the address for the data segment. We want to adjust up to
96 the same address within the page on the next page up. It would
97 be more correct to do this:
98 ${RELOCATING+. = ${DATA_ADDR-ALIGN(${MAXPAGESIZE}) + (ALIGN(8) & (${MAXPAGESIZE} - 1))};}
99 The current expression does not correctly handle the case of a
100 text segment ending precisely at the end of a page; it causes the
101 data segment to skip a page. The above expression does not have
102 this problem, but it will currently (2/95) cause BFD to allocate
103 a single segment, combining both text and data, for this case.
104 This will prevent the text segment from being shared among
105 multiple executions of the program; I think that is more
106 important than losing a page of the virtual address space (note
107 that no actual memory is lost; the page which is skipped can not
108 be referenced). */
5f16938d 109 ${RELOCATING+. = ${DATA_ADDR- ALIGN(8) + ${MAXPAGESIZE}};}
c2b6884b 110
5f16938d
MM
111 .data ${RELOCATING-0} :
112 {
113 ${RELOCATING+${DATA_START_SYMBOLS}}
114 *(.data)
f5f212fb 115 *(.gnu.linkonce.d*)
5f16938d
MM
116 ${CONSTRUCTING+CONSTRUCTORS}
117 }
118 .data1 ${RELOCATING-0} : { *(.data1) }
119 ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
5f16938d 120
4fe13b2b
MM
121 .got1 ${RELOCATING-0} : { *(.got1) }
122 .dynamic ${RELOCATING-0} : { *(.dynamic) }
dd0f9635 123
86d0248d 124 /* Put .ctors and .dtors next to the .got2 section, so that the pointers
4fe13b2b
MM
125 get relocated with -mrelocatable. Also put in the .fixup pointers.
126 The current compiler no longer needs this, but keep it around for 2.7.2 */
86d0248d 127
4d99a950 128 ${RELOCATING+PROVIDE (_GOT2_START_ = .);}
4fe13b2b
MM
129 .got2 ${RELOCATING-0} : { *(.got2) }
130
4d99a950 131 ${RELOCATING+PROVIDE (__CTOR_LIST__ = .);}
4fe13b2b 132 .ctors ${RELOCATING-0} : { *(.ctors) }
4d99a950 133 ${RELOCATING+PROVIDE (__CTOR_END__ = .);}
4fe13b2b 134
4d99a950 135 ${RELOCATING+PROVIDE (__DTOR_LIST__ = .);}
4fe13b2b 136 .dtors ${RELOCATING-0} : { *(.dtors) }
4d99a950 137 ${RELOCATING+PROVIDE (__DTOR_END__ = .);}
4fe13b2b 138
4d99a950 139 ${RELOCATING+PROVIDE (_FIXUP_START_ = .);}
4fe13b2b 140 .fixup ${RELOCATING-0} : { *(.fixup) }
4d99a950
MM
141 ${RELOCATING+PROVIDE (_FIXUP_END_ = .);}
142 ${RELOCATING+PROVIDE (_GOT2_END_ = .);}
4fe13b2b 143
4d99a950 144 ${RELOCATING+PROVIDE (_GOT_START_ = .);}
4fe13b2b
MM
145 .got ${RELOCATING-0} : { *(.got) }
146 .got.plt ${RELOCATING-0} : { *(.got.plt) }
c56c9218
C
147 ${CREATE_SHLIB+${SDATA2}}
148 ${CREATE_SHLIB+${SBSS2}}
4d99a950 149 ${RELOCATING+PROVIDE (_GOT_END_ = .);}
1e4b4b1c 150
5f16938d
MM
151 /* We want the small data sections together, so single-instruction offsets
152 can access them all, and initialized data all before uninitialized, so
153 we can shorten the on-disk segment size. */
4d99a950 154 .sdata ${RELOCATING-0} : { *(.sdata) }
5f16938d
MM
155 ${RELOCATING+_edata = .;}
156 ${RELOCATING+PROVIDE (edata = .);}
7453a753
MM
157 .sbss ${RELOCATING-0} :
158 {
4d99a950 159 ${RELOCATING+PROVIDE (__sbss_start = .);}
7453a753
MM
160 *(.sbss)
161 *(.scommon)
4d99a950 162 ${RELOCATING+PROVIDE (__sbss_end = .);}
7453a753 163 }
4602e5f4 164 ${PLT}
5f16938d
MM
165 .bss ${RELOCATING-0} :
166 {
7453a753 167 ${RELOCATING+${OTHER_BSS_SYMBOLS}}
4d99a950 168 ${RELOCATING+PROVIDE (__bss_start = .);}
5f16938d
MM
169 *(.dynbss)
170 *(.bss)
171 *(COMMON)
172 }
173 ${RELOCATING+_end = . ;}
174 ${RELOCATING+PROVIDE (end = .);}
175
176 /* These are needed for ELF backends which have not yet been
177 converted to the new style linker. */
178 .stab 0 : { *(.stab) }
179 .stabstr 0 : { *(.stabstr) }
180
c2b6884b 181 /* DWARF debug sections.
264677bb
JM
182 Symbols in the DWARF debugging sections are relative to the beginning
183 of the section so we begin them at 0. */
184
185 /* DWARF 1 */
c2b6884b 186 .debug 0 : { *(.debug) }
264677bb
JM
187 .line 0 : { *(.line) }
188
189 /* GNU DWARF 1 extensions */
190 .debug_srcinfo 0 : { *(.debug_srcinfo) }
191 .debug_sfnames 0 : { *(.debug_sfnames) }
192
193 /* DWARF 1.1 and DWARF 2 */
194 .debug_aranges 0 : { *(.debug_aranges) }
195 .debug_pubnames 0 : { *(.debug_pubnames) }
196
197 /* DWARF 2 */
9193c60b
JM
198 .debug_info 0 : { *(.debug_info) }
199 .debug_abbrev 0 : { *(.debug_abbrev) }
200 .debug_line 0 : { *(.debug_line) }
201 .debug_frame 0 : { *(.debug_frame) }
264677bb
JM
202 .debug_str 0 : { *(.debug_str) }
203 .debug_loc 0 : { *(.debug_loc) }
204 .debug_macinfo 0 : { *(.debug_macinfo) }
205
206 /* SGI/MIPS DWARF 2 extensions */
207 .debug_weaknames 0 : { *(.debug_weaknames) }
208 .debug_funcnames 0 : { *(.debug_funcnames) }
209 .debug_typenames 0 : { *(.debug_typenames) }
210 .debug_varnames 0 : { *(.debug_varnames) }
c2b6884b 211
5f16938d
MM
212 /* These must appear regardless of ${RELOCATING}. */
213 ${OTHER_SECTIONS}
214}
215EOF
This page took 0.101012 seconds and 4 git commands to generate.