OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [scripttempl/] [elf64hppa.sc] - Blame information for rev 146

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 khays
#
2
# Unusual variables checked by this code:
3
#       NOP - four byte opcode for no-op (defaults to 0)
4
#       NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
5
#               empty.
6
#       SMALL_DATA_CTOR - .ctors contains small data.
7
#       SMALL_DATA_DTOR - .dtors contains small data.
8
#       DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
9
#       INITIAL_READONLY_SECTIONS - at start of text segment
10
#       OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
11
#               (e.g., .PARISC.milli)
12
#       OTHER_TEXT_SECTIONS - these get put in .text when relocating
13
#       OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
14
#               (e.g., .PARISC.global)
15
#       OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
16
#               (e.g. PPC32 .fixup, .got[12])
17
#       OTHER_BSS_SECTIONS - other than .bss .sbss ...
18
#       ATTRS_SECTIONS - at the end
19
#       OTHER_SECTIONS - at the end
20
#       EXECUTABLE_SYMBOLS - symbols that must be defined for an
21
#               executable (e.g., _DYNAMIC_LINK)
22
#       TEXT_START_ADDR - the first byte of the text segment, after any
23
#               headers.
24
#       TEXT_BASE_ADDRESS - the first byte of the text segment.
25
#       TEXT_START_SYMBOLS - symbols that appear at the start of the
26
#               .text section.
27
#       DATA_START_SYMBOLS - symbols that appear at the start of the
28
#               .data section.
29
#       DATA_END_SYMBOLS - symbols that appear at the end of the
30
#               writeable data sections.
31
#       OTHER_GOT_SYMBOLS - symbols defined just before .got.
32
#       OTHER_GOT_SECTIONS - sections just after .got.
33
#       OTHER_SDATA_SECTIONS - sections just after .sdata.
34
#       OTHER_BSS_SYMBOLS - symbols that appear at the start of the
35
#               .bss section besides __bss_start.
36
#       DATA_PLT - .plt should be in data segment, not text segment.
37
#       PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
38
#       BSS_PLT - .plt should be in bss segment
39
#       NO_REL_RELOCS - Don't include .rel.* sections in script
40
#       NO_RELA_RELOCS - Don't include .rela.* sections in script
41
#       NON_ALLOC_DYN - Place dynamic sections after data segment.
42
#       TEXT_DYNAMIC - .dynamic in text segment, not data segment.
43
#       EMBEDDED - whether this is for an embedded system.
44
#       SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
45
#               start address of shared library.
46
#       INPUT_FILES - INPUT command of files to always include
47
#       WRITABLE_RODATA - if set, the .rodata section should be writable
48
#       INIT_START, INIT_END -  statements just before and just after
49
#       combination of .init sections.
50
#       FINI_START, FINI_END - statements just before and just after
51
#       combination of .fini sections.
52
#       STACK_ADDR - start of a .stack section.
53
#       OTHER_SYMBOLS - symbols to place right at the end of the script.
54
#       ETEXT_NAME - name of a symbol for the end of the text section,
55
#               normally etext.
56
#       SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
57
#               so that .got can be in the RELRO area.  It should be set to
58
#               the number of bytes in the beginning of .got.plt which can be
59
#               in the RELRO area as well.
60
#       USER_LABEL_PREFIX - prefix to add to user-visible symbols.
61
#
62
# When adding sections, do note that the names of some sections are used
63
# when specifying the start address of the next.
64
#
65
 
66
#  Many sections come in three flavours.  There is the 'real' section,
67
#  like ".data".  Then there are the per-procedure or per-variable
68
#  sections, generated by -ffunction-sections and -fdata-sections in GCC,
69
#  and useful for --gc-sections, which for a variable "foo" might be
70
#  ".data.foo".  Then there are the linkonce sections, for which the linker
71
#  eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
72
#  The exact correspondences are:
73
#
74
#  Section      Linkonce section
75
#  .text        .gnu.linkonce.t.foo
76
#  .rodata      .gnu.linkonce.r.foo
77
#  .data        .gnu.linkonce.d.foo
78
#  .bss         .gnu.linkonce.b.foo
79
#  .sdata       .gnu.linkonce.s.foo
80
#  .sbss        .gnu.linkonce.sb.foo
81
#  .sdata2      .gnu.linkonce.s2.foo
82
#  .sbss2       .gnu.linkonce.sb2.foo
83
#  .debug_info  .gnu.linkonce.wi.foo
84
#  .tdata       .gnu.linkonce.td.foo
85
#  .tbss        .gnu.linkonce.tb.foo
86
#  .lrodata     .gnu.linkonce.lr.foo
87
#  .ldata       .gnu.linkonce.l.foo
88
#  .lbss        .gnu.linkonce.lb.foo
89
#
90
#  Each of these can also have corresponding .rel.* and .rela.* sections.
91
 
92
test -z "$ENTRY" && ENTRY=_start
93
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
94
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
95
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
96
test -z "${ELFSIZE}" && ELFSIZE=32
97
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
98
test "$LD_FLAG" = "N" && DATA_ADDR=.
99
test -z "${ETEXT_NAME}" && ETEXT_NAME=etext
100
test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
101
test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
102
test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
103
test -z "$ATTRS_SECTIONS" && ATTRS_SECTIONS=".gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }"
104
DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))"
105
DATA_SEGMENT_RELRO_END=""
106
DATA_SEGMENT_END=""
107
if test -n "${COMMONPAGESIZE}"; then
108
  DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})"
109
  DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);"
110
  DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);"
111
fi
112
if test -z "${INITIAL_READONLY_SECTIONS}${CREATE_SHLIB}"; then
113
  INITIAL_READONLY_SECTIONS=".interp       ${RELOCATING-0} : { *(.interp) }"
114
fi
115
if test -z "$PLT"; then
116
  PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
117
fi
118
test -n "${DATA_PLT-${BSS_PLT-text}}" && TEXT_PLT=yes
119
if test -z "$GOT"; then
120
  if test -z "$SEPARATE_GOTPLT"; then
121
    GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) }"
122
  else
123
    GOT=".got          ${RELOCATING-0} : { *(.got) }"
124
    GOTPLT=".got.plt      ${RELOCATING-0} : { *(.got.plt) }"
125
  fi
126
fi
127
DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
128
RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
129
DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }"
130
DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
131
if test -z "${NO_SMALL_DATA}"; then
132
  SBSS=".sbss         ${RELOCATING-0} :
133
  {
134
    ${RELOCATING+${SBSS_START_SYMBOLS}}
135
    ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
136
    *(.dynsbss)
137
    *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
138
    *(.scommon)
139
    ${RELOCATING+${SBSS_END_SYMBOLS}}
140
  }"
141
  SBSS2=".sbss2        ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }"
142
  SDATA="/* We want the small data sections together, so single-instruction offsets
143
     can access them all, and initialized data all before uninitialized, so
144
     we can shorten the on-disk segment size.  */
145
  .sdata        ${RELOCATING-0} :
146
  {
147
    ${RELOCATING+${SDATA_START_SYMBOLS}}
148
    ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
149
    *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
150
  }"
151
  SDATA2=".sdata2       ${RELOCATING-0} :
152
  {
153
    ${RELOCATING+${SDATA2_START_SYMBOLS}}
154
    *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*})
155
  }"
156
  REL_SDATA=".rel.sdata    ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }
157
  .rela.sdata   ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
158
  REL_SBSS=".rel.sbss     ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }
159
  .rela.sbss    ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }"
160
  REL_SDATA2=".rel.sdata2   ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }
161
  .rela.sdata2  ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }"
162
  REL_SBSS2=".rel.sbss2    ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }
163
  .rela.sbss2   ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }"
164
else
165
  NO_SMALL_DATA=" "
166
fi
167
if test -z "${DATA_GOT}"; then
168
  if test -n "${NO_SMALL_DATA}"; then
169
    DATA_GOT=" "
170
  fi
171
fi
172
if test -z "${SDATA_GOT}"; then
173
  if test -z "${NO_SMALL_DATA}"; then
174
    SDATA_GOT=" "
175
  fi
176
fi
177
test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
178
test "${LARGE_SECTIONS}" = "yes" && REL_LARGE="
179
  .rel.ldata    ${RELOCATING-0} : { *(.rel.ldata${RELOCATING+ .rel.ldata.* .rel.gnu.linkonce.l.*}) }
180
  .rela.ldata   ${RELOCATING-0} : { *(.rela.ldata${RELOCATING+ .rela.ldata.* .rela.gnu.linkonce.l.*}) }
181
  .rel.lbss     ${RELOCATING-0} : { *(.rel.lbss${RELOCATING+ .rel.lbss.* .rel.gnu.linkonce.lb.*}) }
182
  .rela.lbss    ${RELOCATING-0} : { *(.rela.lbss${RELOCATING+ .rela.lbss.* .rela.gnu.linkonce.lb.*}) }
183
  .rel.lrodata  ${RELOCATING-0} : { *(.rel.lrodata${RELOCATING+ .rel.lrodata.* .rel.gnu.linkonce.lr.*}) }
184
  .rela.lrodata ${RELOCATING-0} : { *(.rela.lrodata${RELOCATING+ .rela.lrodata.* .rela.gnu.linkonce.lr.*}) }"
185
test "${LARGE_SECTIONS}" = "yes" && OTHER_BSS_SECTIONS="
186
  ${OTHER_BSS_SECTIONS}
187
  .lbss ${RELOCATING-0} :
188
  {
189
    *(.dynlbss)
190
    *(.lbss${RELOCATING+ .lbss.* .gnu.linkonce.lb.*})
191
    *(LARGE_COMMON)
192
  }"
193
test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
194
  .lrodata ${RELOCATING-0} ${RELOCATING+ALIGN(${MAXPAGESIZE}) + (. & (${MAXPAGESIZE} - 1))} :
195
  {
196
    *(.lrodata${RELOCATING+ .lrodata.* .gnu.linkonce.lr.*})
197
  }
198
  .ldata ${RELOCATING-0} ${RELOCATING+ALIGN(${MAXPAGESIZE}) + (. & (${MAXPAGESIZE} - 1))} :
199
  {
200
    *(.ldata${RELOCATING+ .ldata.* .gnu.linkonce.l.*})
201
    ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);}
202
  }"
203
INIT_ARRAY=".init_array   ${RELOCATING-0} :
204
  {
205
     ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_start = .);}}
206
     KEEP (*(SORT(.init_array.*)))
207
     KEEP (*(.init_array))
208
     ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_end = .);}}
209
  }"
210
FINI_ARRAY=".fini_array   ${RELOCATING-0} :
211
  {
212
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_start = .);}}
213
    KEEP (*(SORT(.fini_array.*)))
214
    KEEP (*(.fini_array))
215
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = .);}}
216
  }"
217
CTOR=".ctors        ${CONSTRUCTING-0} :
218
  {
219
    ${CONSTRUCTING+${CTOR_START}}
220
    /* gcc uses crtbegin.o to find the start of
221
       the constructors, so we make sure it is
222
       first.  Because this is a wildcard, it
223
       doesn't matter if the user does not
224
       actually link against crtbegin.o; the
225
       linker won't look for a file to match a
226
       wildcard.  The wildcard also means that it
227
       doesn't matter which directory crtbegin.o
228
       is in.  */
229
 
230
    KEEP (*crtbegin.o(.ctors))
231
    KEEP (*crtbegin?.o(.ctors))
232
 
233
    /* We don't want to include the .ctor section from
234
       the crtend.o file until after the sorted ctors.
235
       The .ctor section from the crtend file contains the
236
       end of ctors marker and it must be last */
237
 
238
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
239
    KEEP (*(SORT(.ctors.*)))
240
    KEEP (*(.ctors))
241
    ${CONSTRUCTING+${CTOR_END}}
242
  }"
243
DTOR=".dtors        ${CONSTRUCTING-0} :
244
  {
245
    ${CONSTRUCTING+${DTOR_START}}
246
    KEEP (*crtbegin.o(.dtors))
247
    KEEP (*crtbegin?.o(.dtors))
248
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
249
    KEEP (*(SORT(.dtors.*)))
250
    KEEP (*(.dtors))
251
    ${CONSTRUCTING+${DTOR_END}}
252
  }"
253
STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
254
  {
255
    ${RELOCATING+_stack = .;}
256
    *(.stack)
257
  }"
258
 
259
TEXT_START_ADDR="SEGMENT_START(\"text-segment\", ${TEXT_START_ADDR})"
260
SHLIB_TEXT_START_ADDR="SEGMENT_START(\"text-segment\", ${SHLIB_TEXT_START_ADDR:-0})"
261
 
262
# if this is for an embedded system, don't add SIZEOF_HEADERS.
263
if [ -z "$EMBEDDED" ]; then
264
   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
265
else
266
   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
267
fi
268
 
269
cat <
270
OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
271
              "${LITTLE_OUTPUT_FORMAT}")
272
OUTPUT_ARCH(${OUTPUT_ARCH})
273
${RELOCATING+ENTRY(${ENTRY})}
274
 
275
${RELOCATING+${LIB_SEARCH_DIRS}}
276
${RELOCATING+${EXECUTABLE_SYMBOLS}}
277
${RELOCATING+${INPUT_FILES}}
278
${RELOCATING- /* For some reason, the Solaris linker makes bad executables
279
  if gld -r is used and the intermediate file has sections starting
280
  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
281
  bug.  But for now assigning the zero vmas works.  */}
282
 
283
SECTIONS
284
{
285
  /* Read-only sections, merged into text segment: */
286
  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
287
  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS;}}
288
  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS;}}
289
  ${INITIAL_READONLY_SECTIONS}
290
  .note.gnu.build-id : { *(.note.gnu.build-id) }
291
EOF
292
 
293
test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN
294
test -z "${NON_ALLOC_DYN}" || TEXT_DYNAMIC=
295
cat > ldscripts/dyntmp.$$ <
296
  ${TEXT_DYNAMIC+${DYNAMIC}}
297
  .hash         ${RELOCATING-0} : { *(.hash) }
298
  .gnu.hash     ${RELOCATING-0} : { *(.gnu.hash) }
299
  .dynsym       ${RELOCATING-0} : { *(.dynsym) }
300
  .dynstr       ${RELOCATING-0} : { *(.dynstr) }
301
  .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }
302
  .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }
303
  .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }
304
EOF
305
 
306
if [ "x$COMBRELOC" = x ]; then
307
  COMBRELOCCAT="cat >> ldscripts/dyntmp.$$"
308
else
309
  COMBRELOCCAT="cat > $COMBRELOC"
310
fi
311
eval $COMBRELOCCAT <
312
  .rel.init     ${RELOCATING-0} : { *(.rel.init) }
313
  .rela.init    ${RELOCATING-0} : { *(.rela.init) }
314
  .rel.text     ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }
315
  .rela.text    ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }
316
  .rel.fini     ${RELOCATING-0} : { *(.rel.fini) }
317
  .rela.fini    ${RELOCATING-0} : { *(.rela.fini) }
318
  .rel.rodata   ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }
319
  .rela.rodata  ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }
320
  ${OTHER_READONLY_RELOC_SECTIONS}
321
  .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+* .rel.gnu.linkonce.d.rel.ro.*}) }
322
  .rela.data.rel.ro ${RELOCATING-0} : { *(.rela.data.rel.ro${RELOCATING+* .rela.gnu.linkonce.d.rel.ro.*}) }
323
  .rel.data     ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }
324
  .rela.data    ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }
325
  .rel.tdata    ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }
326
  .rela.tdata   ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }
327
  .rel.tbss     ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }
328
  .rela.tbss    ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }
329
  .rel.ctors    ${RELOCATING-0} : { *(.rel.ctors) }
330
  .rela.ctors   ${RELOCATING-0} : { *(.rela.ctors) }
331
  .rel.dtors    ${RELOCATING-0} : { *(.rel.dtors) }
332
  .rela.dtors   ${RELOCATING-0} : { *(.rela.dtors) }
333
  .rel.got      ${RELOCATING-0} : { *(.rel.got) }
334
  .rela.got     ${RELOCATING-0} : { *(.rela.got) }
335
  ${OTHER_GOT_RELOC_SECTIONS}
336
  ${REL_SDATA}
337
  ${REL_SBSS}
338
  ${REL_SDATA2}
339
  ${REL_SBSS2}
340
  .rel.bss      ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }
341
  .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
342
  ${REL_LARGE}
343
EOF
344
 
345
if [ -n "$COMBRELOC" ]; then
346
cat >> ldscripts/dyntmp.$$ <
347
  .rel.dyn      ${RELOCATING-0} :
348
    {
349
EOF
350
sed -e '/^[     ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC >> ldscripts/dyntmp.$$
351
cat >> ldscripts/dyntmp.$$ <
352
    }
353
  .rel.ifunc.dyn      ${RELOCATING-0} :
354
    {
355
      *(.rel.ifunc.*)
356
    }
357
  .rela.dyn     ${RELOCATING-0} :
358
    {
359
EOF
360
sed -e '/^[     ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC >> ldscripts/dyntmp.$$
361
cat >> ldscripts/dyntmp.$$ <
362
    }
363
  .rela.ifunc.dyn     ${RELOCATING-0} :
364
    {
365
      *(.rela.ifunc.*)
366
    }
367
EOF
368
fi
369
 
370
cat >> ldscripts/dyntmp.$$ <
371
  .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }
372
  .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }
373
  ${OTHER_PLT_RELOC_SECTIONS}
374
EOF
375
 
376
if test -z "${NON_ALLOC_DYN}"; then
377
  if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then
378
    cat ldscripts/dyntmp.$$
379
  else
380
    if test -z "${NO_REL_RELOCS}"; then
381
      sed -e '/^[       ]*\.rela\.[^}]*$/,/}/d' -e '/^[         ]*\.rela\./d' ldscripts/dyntmp.$$
382
    fi
383
    if test -z "${NO_RELA_RELOCS}"; then
384
      sed -e '/^[       ]*\.rel\.[^}]*$/,/}/d' -e '/^[  ]*\.rel\./d' ldscripts/dyntmp.$$
385
    fi
386
  fi
387
  rm -f ldscripts/dyntmp.$$
388
fi
389
 
390
cat <
391
  .init         ${RELOCATING-0} :
392
  {
393
    ${RELOCATING+${INIT_START}}
394
    KEEP (*(.init))
395
    ${RELOCATING+${INIT_END}}
396
  } =${NOP-0}
397
 
398
  ${TEXT_PLT+${PLT}}
399
  ${TINY_READONLY_SECTION}
400
  .text         ${RELOCATING-0} :
401
  {
402
    ${RELOCATING+${TEXT_START_SYMBOLS}}
403
    *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
404
    /* .gnu.warning sections are handled specially by elf32.em.  */
405
    *(.gnu.warning)
406
    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
407
  } =${NOP-0}
408
  .fini         ${RELOCATING-0} :
409
  {
410
    ${RELOCATING+${FINI_START}}
411
    KEEP (*(.fini))
412
    ${RELOCATING+${FINI_END}}
413
  } =${NOP-0}
414
  ${RELOCATING+PROVIDE (__${ETEXT_NAME} = .);}
415
  ${RELOCATING+PROVIDE (_${ETEXT_NAME} = .);}
416
  ${RELOCATING+PROVIDE (${ETEXT_NAME} = .);}
417
  ${WRITABLE_RODATA-${RODATA}}
418
  .rodata1      ${RELOCATING-0} : { *(.rodata1) }
419
  ${CREATE_SHLIB-${SDATA2}}
420
  ${CREATE_SHLIB-${SBSS2}}
421
  ${OTHER_READONLY_SECTIONS}
422
  .eh_frame_hdr : { *(.eh_frame_hdr) }
423
  .eh_frame     ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }
424
  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
425
 
426
  /* Adjust the address for the data segment.  We want to adjust up to
427
     the same address within the page on the next page up.  */
428
  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+. = ${DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}}
429
  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
430
  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
431
 
432
  /* Exception handling  */
433
  .eh_frame     ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }
434
  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
435
 
436
  /* Thread Local Storage sections  */
437
  .tdata        ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
438
 
439
  .preinit_array   ${RELOCATING-0} :
440
  {
441
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_start = .);}}
442
    KEEP (*(.preinit_array))
443
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_end = .);}}
444
  }
445
  ${RELOCATING+${INIT_ARRAY}}
446
  ${RELOCATING+${FINI_ARRAY}}
447
  ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}}}
448
  ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}}}
449
  .jcr          ${RELOCATING-0} : { KEEP (*(.jcr)) }
450
 
451
  ${RELOCATING+${DATARELRO}}
452
  ${OTHER_RELRO_SECTIONS}
453
  ${TEXT_DYNAMIC-${DYNAMIC}}
454
  ${DATA_GOT+${RELRO_NOW+${GOT}}}
455
  ${DATA_GOT+${RELRO_NOW+${GOTPLT}}}
456
  ${DATA_GOT+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}}}}
457
  ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
458
  ${DATA_GOT+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}}}}
459
  ${DATA_GOT+${RELRO_NOW-${GOTPLT}}}
460
 
461
  ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}}}
462
 
463
  .data         ${RELOCATING-0} :
464
  {
465
    ${RELOCATING+${DATA_START_SYMBOLS}}
466
    *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
467
    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
468
  }
469
  .data1        ${RELOCATING-0} : { *(.data1) }
470
  ${WRITABLE_RODATA+${RODATA}}
471
  ${OTHER_READWRITE_SECTIONS}
472
  ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}}}
473
  ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}}}
474
  ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}}}
475
  ${SDATA_GOT+${RELOCATING+${OTHER_GOT_SYMBOLS}}}
476
  ${SDATA_GOT+${GOT}}
477
  ${SDATA_GOT+${OTHER_GOT_SECTIONS}}
478
  ${SDATA}
479
  ${OTHER_SDATA_SECTIONS}
480
  ${RELOCATING+${DATA_END_SYMBOLS-${USER_LABEL_PREFIX}_edata = .; PROVIDE (${USER_LABEL_PREFIX}edata = .);}}
481
  ${RELOCATING+__bss_start = .;}
482
  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
483
  ${SBSS}
484
  ${BSS_PLT+${PLT}}
485
  .bss          ${RELOCATING-0} :
486
  {
487
   *(.dynbss)
488
   *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
489
   *(COMMON)
490
   /* Align here to ensure that the .bss section occupies space up to
491
      _end.  Align after .bss to ensure correct alignment even if the
492
      .bss section disappears because there are no input sections.
493
      FIXME: Why do we need it? When there is no .bss section, we don't
494
      pad the .data section.  */
495
   ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);}
496
  }
497
  ${OTHER_BSS_SECTIONS}
498
  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
499
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
500
  ${LARGE_SECTIONS}
501
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
502
  ${RELOCATING+${OTHER_END_SYMBOLS}}
503
  ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
504
  ${RELOCATING+${DATA_SEGMENT_END}}
505
EOF
506
 
507
if test -n "${NON_ALLOC_DYN}"; then
508
  if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then
509
    cat ldscripts/dyntmp.$$
510
  else
511
    if test -z "${NO_REL_RELOCS}"; then
512
      sed -e '/^[       ]*\.rela\.[^}]*$/,/}/d' -e '/^[         ]*\.rela\./d' ldscripts/dyntmp.$$
513
    fi
514
    if test -z "${NO_RELA_RELOCS}"; then
515
      sed -e '/^[       ]*\.rel\.[^}]*$/,/}/d' -e '/^[  ]*\.rel\./d' ldscripts/dyntmp.$$
516
    fi
517
  fi
518
  rm -f ldscripts/dyntmp.$$
519
fi
520
 
521
cat <
522
  /* Stabs debugging sections.  */
523
  .stab          0 : { *(.stab) }
524
  .stabstr       0 : { *(.stabstr) }
525
  .stab.excl     0 : { *(.stab.excl) }
526
  .stab.exclstr  0 : { *(.stab.exclstr) }
527
  .stab.index    0 : { *(.stab.index) }
528
  .stab.indexstr 0 : { *(.stab.indexstr) }
529
 
530
  .comment       0 : { *(.comment) }
531
 
532
  /* DWARF debug sections.
533
     Symbols in the DWARF debugging sections are relative to the beginning
534
     of the section so we begin them at 0.  */
535
 
536
  /* DWARF 1 */
537
  .debug          0 : { *(.debug) }
538
  .line           0 : { *(.line) }
539
 
540
  /* GNU DWARF 1 extensions */
541
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
542
  .debug_sfnames  0 : { *(.debug_sfnames) }
543
 
544
  /* DWARF 1.1 and DWARF 2 */
545
  .debug_aranges  0 : { *(.debug_aranges) }
546
  .debug_pubnames 0 : { *(.debug_pubnames) }
547
 
548
  /* DWARF 2 */
549
  .debug_info     0 : { *(.debug_info${RELOCATING+ .gnu.linkonce.wi.*}) }
550
  .debug_abbrev   0 : { *(.debug_abbrev) }
551
  .debug_line     0 : { *(.debug_line) }
552
  .debug_frame    0 : { *(.debug_frame) }
553
  .debug_str      0 : { *(.debug_str) }
554
  .debug_loc      0 : { *(.debug_loc) }
555
  .debug_macinfo  0 : { *(.debug_macinfo) }
556
 
557
  /* SGI/MIPS DWARF 2 extensions */
558
  .debug_weaknames 0 : { *(.debug_weaknames) }
559
  .debug_funcnames 0 : { *(.debug_funcnames) }
560
  .debug_typenames 0 : { *(.debug_typenames) }
561
  .debug_varnames  0 : { *(.debug_varnames) }
562
 
563
  /* DWARF 3 */
564
  .debug_pubtypes 0 : { *(.debug_pubtypes) }
565
  .debug_ranges   0 : { *(.debug_ranges) }
566
 
567
  ${TINY_DATA_SECTION}
568
  ${TINY_BSS_SECTION}
569
 
570
  ${STACK_ADDR+${STACK}}
571
  ${ATTRS_SECTIONS}
572
  ${OTHER_SECTIONS}
573
  ${RELOCATING+${OTHER_SYMBOLS}}
574
  ${RELOCATING+${DISCARDED}}
575
}
576
EOF

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.