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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [binutils-2.20.1/] [ld/] [scripttempl/] [elfxtensa.sc] - Blame information for rev 205

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

Line No. Rev Author Line
1 205 julius
#
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
# plus exception-handling information for Tensilica's XCC compiler:
91
#  .xt_except_table .gnu.linkonce.e.foo
92
#  .xt_except_desc  .gnu.linkonce.h.foo
93
#
94
# plus Xtensa-specific literal sections:
95
#  .literal     .gnu.linkonce.literal.foo
96
#  .lit4        .gnu.linkonce.lit4.foo
97
#
98
# plus Xtensa-specific "property table" sections:
99
#  .xt.lit      .gnu.linkonce.p.foo
100
#  .xt.insn     .gnu.linkonce.x.foo (obsolete)
101
#  .xt.prop     .gnu.linkonce.prop.foo
102
#
103
#  Each of these can also have corresponding .rel.* and .rela.* sections.
104
 
105
test -z "$ENTRY" && ENTRY=_start
106
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
107
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
108
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
109
test -z "${ELFSIZE}" && ELFSIZE=32
110
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
111
test "$LD_FLAG" = "N" && DATA_ADDR=.
112
test -z "${ETEXT_NAME}" && ETEXT_NAME=etext
113
test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
114
test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
115
test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
116
test -z "$ATTRS_SECTIONS" && ATTRS_SECTIONS=".gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }"
117
DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))"
118
DATA_SEGMENT_RELRO_END=""
119
DATA_SEGMENT_END=""
120
if test -n "${COMMONPAGESIZE}"; then
121
  DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})"
122
  DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);"
123
  DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);"
124
fi
125
if test -z "${INITIAL_READONLY_SECTIONS}${CREATE_SHLIB}"; then
126
  INITIAL_READONLY_SECTIONS=".interp       ${RELOCATING-0} : { *(.interp) }"
127
fi
128
if test -z "$PLT"; then
129
  PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
130
fi
131
test -n "${DATA_PLT-${BSS_PLT-text}}" && TEXT_PLT=yes
132
if test -z "$GOT"; then
133
  if test -z "$SEPARATE_GOTPLT"; then
134
    GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) }"
135
  else
136
    GOT=".got          ${RELOCATING-0} : { *(.got) }"
137
    GOTPLT=".got.plt      ${RELOCATING-0} : { *(.got.plt) }"
138
  fi
139
fi
140
DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
141
RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
142
DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }"
143
DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
144
INIT_LIT=".init.literal 0 : { *(.init.literal)  }"
145
INIT=".init         0 : { *(.init)              }"
146
FINI_LIT=".fini.literal 0 : { *(.fini.literal)  }"
147
FINI=".fini         0 : { *(.fini)              }"
148
if test -z "${NO_SMALL_DATA}"; then
149
  SBSS=".sbss         ${RELOCATING-0} :
150
  {
151
    ${RELOCATING+${SBSS_START_SYMBOLS}}
152
    ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
153
    *(.dynsbss)
154
    *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
155
    *(.scommon)
156
    ${RELOCATING+${SBSS_END_SYMBOLS}}
157
  }"
158
  SBSS2=".sbss2        ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }"
159
  SDATA="/* We want the small data sections together, so single-instruction offsets
160
     can access them all, and initialized data all before uninitialized, so
161
     we can shorten the on-disk segment size.  */
162
  .sdata        ${RELOCATING-0} :
163
  {
164
    ${RELOCATING+${SDATA_START_SYMBOLS}}
165
    ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
166
    *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
167
  }"
168
  SDATA2=".sdata2       ${RELOCATING-0} :
169
  {
170
    ${RELOCATING+${SDATA2_START_SYMBOLS}}
171
    *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*})
172
  }"
173
  REL_SDATA=".rel.sdata    ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }
174
  .rela.sdata   ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
175
  REL_SBSS=".rel.sbss     ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }
176
  .rela.sbss    ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }"
177
  REL_SDATA2=".rel.sdata2   ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }
178
  .rela.sdata2  ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }"
179
  REL_SBSS2=".rel.sbss2    ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }
180
  .rela.sbss2   ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }"
181
else
182
  NO_SMALL_DATA=" "
183
fi
184
if test -z "${DATA_GOT}"; then
185
  if test -n "${NO_SMALL_DATA}"; then
186
    DATA_GOT=" "
187
  fi
188
fi
189
if test -z "${SDATA_GOT}"; then
190
  if test -z "${NO_SMALL_DATA}"; then
191
    SDATA_GOT=" "
192
  fi
193
fi
194
test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
195
test "${LARGE_SECTIONS}" = "yes" && REL_LARGE="
196
  .rel.ldata    ${RELOCATING-0} : { *(.rel.ldata${RELOCATING+ .rel.ldata.* .rel.gnu.linkonce.l.*}) }
197
  .rela.ldata   ${RELOCATING-0} : { *(.rela.ldata${RELOCATING+ .rela.ldata.* .rela.gnu.linkonce.l.*}) }
198
  .rel.lbss     ${RELOCATING-0} : { *(.rel.lbss${RELOCATING+ .rel.lbss.* .rel.gnu.linkonce.lb.*}) }
199
  .rela.lbss    ${RELOCATING-0} : { *(.rela.lbss${RELOCATING+ .rela.lbss.* .rela.gnu.linkonce.lb.*}) }
200
  .rel.lrodata  ${RELOCATING-0} : { *(.rel.lrodata${RELOCATING+ .rel.lrodata.* .rel.gnu.linkonce.lr.*}) }
201
  .rela.lrodata ${RELOCATING-0} : { *(.rela.lrodata${RELOCATING+ .rela.lrodata.* .rela.gnu.linkonce.lr.*}) }"
202
test "${LARGE_SECTIONS}" = "yes" && OTHER_BSS_SECTIONS="
203
  ${OTHER_BSS_SECTIONS}
204
  .lbss ${RELOCATING-0} :
205
  {
206
    *(.dynlbss)
207
    *(.lbss${RELOCATING+ .lbss.* .gnu.linkonce.lb.*})
208
    *(LARGE_COMMON)
209
  }"
210
test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
211
  .lrodata ${RELOCATING-0} ${RELOCATING+ALIGN(${MAXPAGESIZE}) + (. & (${MAXPAGESIZE} - 1))} :
212
  {
213
    *(.lrodata${RELOCATING+ .lrodata.* .gnu.linkonce.lr.*})
214
  }
215
  .ldata ${RELOCATING-0} ${RELOCATING+ALIGN(${MAXPAGESIZE}) + (. & (${MAXPAGESIZE} - 1))} :
216
  {
217
    *(.ldata${RELOCATING+ .ldata.* .gnu.linkonce.l.*})
218
    ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);}
219
  }"
220
CTOR=".ctors        ${CONSTRUCTING-0} :
221
  {
222
    ${CONSTRUCTING+${CTOR_START}}
223
    /* gcc uses crtbegin.o to find the start of
224
       the constructors, so we make sure it is
225
       first.  Because this is a wildcard, it
226
       doesn't matter if the user does not
227
       actually link against crtbegin.o; the
228
       linker won't look for a file to match a
229
       wildcard.  The wildcard also means that it
230
       doesn't matter which directory crtbegin.o
231
       is in.  */
232
 
233
    KEEP (*crtbegin.o(.ctors))
234
    KEEP (*crtbegin?.o(.ctors))
235
 
236
    /* We don't want to include the .ctor section from
237
       the crtend.o file until after the sorted ctors.
238
       The .ctor section from the crtend file contains the
239
       end of ctors marker and it must be last */
240
 
241
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
242
    KEEP (*(SORT(.ctors.*)))
243
    KEEP (*(.ctors))
244
    ${CONSTRUCTING+${CTOR_END}}
245
  }"
246
DTOR=".dtors        ${CONSTRUCTING-0} :
247
  {
248
    ${CONSTRUCTING+${DTOR_START}}
249
    KEEP (*crtbegin.o(.dtors))
250
    KEEP (*crtbegin?.o(.dtors))
251
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
252
    KEEP (*(SORT(.dtors.*)))
253
    KEEP (*(.dtors))
254
    ${CONSTRUCTING+${DTOR_END}}
255
  }"
256
STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
257
  {
258
    ${RELOCATING+_stack = .;}
259
    *(.stack)
260
  }"
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
${RELOCATING+ENTRY(${ENTRY})}
271
 
272
${RELOCATING+${LIB_SEARCH_DIRS}}
273
${RELOCATING+${EXECUTABLE_SYMBOLS}}
274
${RELOCATING+${INPUT_FILES}}
275
${RELOCATING- /* For some reason, the Solaris linker makes bad executables
276
  if gld -r is used and the intermediate file has sections starting
277
  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
278
  bug.  But for now assigning the zero vmas works.  */}
279
 
280
SECTIONS
281
{
282
  /* Read-only sections, merged into text segment: */
283
  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
284
  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
285
  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
286
  ${INITIAL_READONLY_SECTIONS}
287
  .note.gnu.build-id : { *(.note.gnu.build-id) }
288
EOF
289
 
290
test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN
291
test -z "${NON_ALLOC_DYN}" || TEXT_DYNAMIC=
292
cat > ldscripts/dyntmp.$$ <
293
  ${TEXT_DYNAMIC+${DYNAMIC}}
294
  .hash         ${RELOCATING-0} : { *(.hash) }
295
  .gnu.hash     ${RELOCATING-0} : { *(.gnu.hash) }
296
  .dynsym       ${RELOCATING-0} : { *(.dynsym) }
297
  .dynstr       ${RELOCATING-0} : { *(.dynstr) }
298
  .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }
299
  .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }
300
  .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }
301
EOF
302
 
303
if [ "x$COMBRELOC" = x ]; then
304
  COMBRELOCCAT="cat >> ldscripts/dyntmp.$$"
305
else
306
  COMBRELOCCAT="cat > $COMBRELOC"
307
fi
308
eval $COMBRELOCCAT <
309
  .rel.init     ${RELOCATING-0} : { *(.rel.init) }
310
  .rela.init    ${RELOCATING-0} : { *(.rela.init) }
311
  .rel.text     ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }
312
  .rela.text    ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }
313
  .rel.fini     ${RELOCATING-0} : { *(.rel.fini) }
314
  .rela.fini    ${RELOCATING-0} : { *(.rela.fini) }
315
  .rel.rodata   ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }
316
  .rela.rodata  ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }
317
  ${OTHER_READONLY_RELOC_SECTIONS}
318
  .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+* .rel.gnu.linkonce.d.rel.ro.*}) }
319
  .rela.data.rel.ro ${RELOCATING-0} : { *(.rela.data.rel.ro${RELOCATING+* .rela.gnu.linkonce.d.rel.ro.*}) }
320
  .rel.data     ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }
321
  .rela.data    ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }
322
  .rel.tdata    ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }
323
  .rela.tdata   ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }
324
  .rel.tbss     ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }
325
  .rela.tbss    ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }
326
  .rel.ctors    ${RELOCATING-0} : { *(.rel.ctors) }
327
  .rela.ctors   ${RELOCATING-0} : { *(.rela.ctors) }
328
  .rel.dtors    ${RELOCATING-0} : { *(.rel.dtors) }
329
  .rela.dtors   ${RELOCATING-0} : { *(.rela.dtors) }
330
  .rel.got      ${RELOCATING-0} : { *(.rel.got) }
331
  .rela.got     ${RELOCATING-0} : { *(.rela.got) }
332
  ${OTHER_GOT_RELOC_SECTIONS}
333
  ${REL_SDATA}
334
  ${REL_SBSS}
335
  ${REL_SDATA2}
336
  ${REL_SBSS2}
337
  .rel.bss      ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }
338
  .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
339
  ${REL_LARGE}
340
EOF
341
 
342
if [ -n "$COMBRELOC" ]; then
343
cat >> ldscripts/dyntmp.$$ <
344
  .rel.dyn      ${RELOCATING-0} :
345
    {
346
EOF
347
sed -e '/^[     ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC >> ldscripts/dyntmp.$$
348
cat >> ldscripts/dyntmp.$$ <
349
    }
350
  .rela.dyn     ${RELOCATING-0} :
351
    {
352
EOF
353
sed -e '/^[     ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC >> ldscripts/dyntmp.$$
354
cat >> ldscripts/dyntmp.$$ <
355
    }
356
EOF
357
fi
358
 
359
cat >> ldscripts/dyntmp.$$ <
360
  .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }
361
  .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }
362
  ${OTHER_PLT_RELOC_SECTIONS}
363
EOF
364
 
365
if test -z "${NON_ALLOC_DYN}"; then
366
  if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then
367
    cat ldscripts/dyntmp.$$
368
  else
369
    if test -z "${NO_REL_RELOCS}"; then
370
      sed -e '/^[       ]*\.rela\.[^}]*$/,/}/d' -e '/^[         ]*\.rela\./d' ldscripts/dyntmp.$$
371
    fi
372
    if test -z "${NO_RELA_RELOCS}"; then
373
      sed -e '/^[       ]*\.rel\.[^}]*$/,/}/d' -e '/^[  ]*\.rel\./d' ldscripts/dyntmp.$$
374
    fi
375
  fi
376
  rm -f ldscripts/dyntmp.$$
377
fi
378
 
379
cat <
380
  ${RELOCATING-$INIT_LIT}
381
  ${RELOCATING-$INIT}
382
 
383
  ${TEXT_PLT+${PLT}}
384
  ${TINY_READONLY_SECTION}
385
  .text         ${RELOCATING-0} :
386
  {
387
    *(.got.plt* .plt*)
388
 
389
    ${RELOCATING+${INIT_START}}
390
    ${RELOCATING+KEEP (*(.init.literal))}
391
    ${RELOCATING+KEEP (*(.init))}
392
    ${RELOCATING+${INIT_END}}
393
 
394
    ${RELOCATING+${TEXT_START_SYMBOLS}}
395
    *(.literal .text .stub${RELOCATING+ .literal.* .text.* .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*})
396
    /* .gnu.warning sections are handled specially by elf32.em.  */
397
    *(.gnu.warning)
398
    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
399
 
400
    ${RELOCATING+${FINI_START}}
401
    ${RELOCATING+KEEP (*(.fini.literal))}
402
    ${RELOCATING+KEEP (*(.fini))}
403
    ${RELOCATING+${FINI_END}}
404
  } =${NOP-0}
405
 
406
  ${RELOCATING-$FINI_LIT}
407
  ${RELOCATING-$FINI}
408
 
409
  ${RELOCATING+PROVIDE (__${ETEXT_NAME} = .);}
410
  ${RELOCATING+PROVIDE (_${ETEXT_NAME} = .);}
411
  ${RELOCATING+PROVIDE (${ETEXT_NAME} = .);}
412
  ${WRITABLE_RODATA-${RODATA}}
413
  .rodata1      ${RELOCATING-0} : { *(.rodata1) }
414
  ${CREATE_SHLIB-${SDATA2}}
415
  ${CREATE_SHLIB-${SBSS2}}
416
  ${OTHER_READONLY_SECTIONS}
417
  .eh_frame_hdr : { *(.eh_frame_hdr) }
418
  .eh_frame     ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }
419
  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
420
 
421
  /* Adjust the address for the data segment.  We want to adjust up to
422
     the same address within the page on the next page up.  */
423
  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+. = ${DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}}
424
  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
425
  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
426
 
427
  /* Exception handling  */
428
  .eh_frame     ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }
429
  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
430
 
431
  /* Thread Local Storage sections  */
432
  .tdata        ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
433
  .tbss         ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
434
 
435
  .preinit_array   ${RELOCATING-0} :
436
  {
437
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_start = .);}}
438
    KEEP (*(.preinit_array))
439
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_end = .);}}
440
  }
441
  .init_array   ${RELOCATING-0} :
442
  {
443
     ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_start = .);}}
444
     KEEP (*(SORT(.init_array.*)))
445
     KEEP (*(.init_array))
446
     ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_end = .);}}
447
  }
448
  .fini_array   ${RELOCATING-0} :
449
  {
450
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_start = .);}}
451
    KEEP (*(.fini_array))
452
    KEEP (*(SORT(.fini_array.*)))
453
    ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = .);}}
454
  }
455
  ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}}}
456
  ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}}}
457
  .jcr          ${RELOCATING-0} : { KEEP (*(.jcr)) }
458
 
459
  ${RELOCATING+${DATARELRO}}
460
  ${OTHER_RELRO_SECTIONS}
461
  ${TEXT_DYNAMIC-${DYNAMIC}}
462
  ${DATA_GOT+${RELRO_NOW+${GOT}}}
463
  ${DATA_GOT+${RELRO_NOW+${GOTPLT}}}
464
  ${DATA_GOT+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}}}}
465
  ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
466
  ${DATA_GOT+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}}}}
467
  ${DATA_GOT+${RELRO_NOW-${GOTPLT}}}
468
 
469
  ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}}}
470
 
471
  .data         ${RELOCATING-0} :
472
  {
473
    ${RELOCATING+${DATA_START_SYMBOLS}}
474
    *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
475
    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
476
  }
477
  .data1        ${RELOCATING-0} : { *(.data1) }
478
  ${WRITABLE_RODATA+${RODATA}}
479
  ${OTHER_READWRITE_SECTIONS}
480
  ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}}}
481
  ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}}}
482
  ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}}}
483
  ${SDATA_GOT+${RELOCATING+${OTHER_GOT_SYMBOLS}}}
484
  ${SDATA_GOT+${GOT}}
485
  ${SDATA_GOT+${OTHER_GOT_SECTIONS}}
486
  ${SDATA}
487
  ${OTHER_SDATA_SECTIONS}
488
  ${RELOCATING+${DATA_END_SYMBOLS-${USER_LABEL_PREFIX}_edata = .; PROVIDE (${USER_LABEL_PREFIX}edata = .);}}
489
  ${RELOCATING+__bss_start = .;}
490
  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
491
  ${SBSS}
492
  ${BSS_PLT+${PLT}}
493
  .bss          ${RELOCATING-0} :
494
  {
495
   *(.dynbss)
496
   *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
497
   *(COMMON)
498
   /* Align here to ensure that the .bss section occupies space up to
499
      _end.  Align after .bss to ensure correct alignment even if the
500
      .bss section disappears because there are no input sections.
501
      FIXME: Why do we need it? When there is no .bss section, we don't
502
      pad the .data section.  */
503
   ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);}
504
  }
505
  ${OTHER_BSS_SECTIONS}
506
  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
507
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
508
  ${LARGE_SECTIONS}
509
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
510
  ${RELOCATING+${OTHER_END_SYMBOLS}}
511
  ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
512
  ${RELOCATING+${DATA_SEGMENT_END}}
513
EOF
514
 
515
if test -n "${NON_ALLOC_DYN}"; then
516
  if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then
517
    cat ldscripts/dyntmp.$$
518
  else
519
    if test -z "${NO_REL_RELOCS}"; then
520
      sed -e '/^[       ]*\.rela\.[^}]*$/,/}/d' -e '/^[         ]*\.rela\./d' ldscripts/dyntmp.$$
521
    fi
522
    if test -z "${NO_RELA_RELOCS}"; then
523
      sed -e '/^[       ]*\.rel\.[^}]*$/,/}/d' -e '/^[  ]*\.rel\./d' ldscripts/dyntmp.$$
524
    fi
525
  fi
526
  rm -f ldscripts/dyntmp.$$
527
fi
528
 
529
cat <
530
  /* Stabs debugging sections.  */
531
  .stab          0 : { *(.stab) }
532
  .stabstr       0 : { *(.stabstr) }
533
  .stab.excl     0 : { *(.stab.excl) }
534
  .stab.exclstr  0 : { *(.stab.exclstr) }
535
  .stab.index    0 : { *(.stab.index) }
536
  .stab.indexstr 0 : { *(.stab.indexstr) }
537
 
538
  .comment       0 : { *(.comment) }
539
 
540
  /* DWARF debug sections.
541
     Symbols in the DWARF debugging sections are relative to the beginning
542
     of the section so we begin them at 0.  */
543
 
544
  /* DWARF 1 */
545
  .debug          0 : { *(.debug) }
546
  .line           0 : { *(.line) }
547
 
548
  /* GNU DWARF 1 extensions */
549
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
550
  .debug_sfnames  0 : { *(.debug_sfnames) }
551
 
552
  /* DWARF 1.1 and DWARF 2 */
553
  .debug_aranges  0 : { *(.debug_aranges) }
554
  .debug_pubnames 0 : { *(.debug_pubnames) }
555
 
556
  /* DWARF 2 */
557
  .debug_info     0 : { *(.debug_info${RELOCATING+ .gnu.linkonce.wi.*}) }
558
  .debug_abbrev   0 : { *(.debug_abbrev) }
559
  .debug_line     0 : { *(.debug_line) }
560
  .debug_frame    0 : { *(.debug_frame) }
561
  .debug_str      0 : { *(.debug_str) }
562
  .debug_loc      0 : { *(.debug_loc) }
563
  .debug_macinfo  0 : { *(.debug_macinfo) }
564
 
565
  /* SGI/MIPS DWARF 2 extensions */
566
  .debug_weaknames 0 : { *(.debug_weaknames) }
567
  .debug_funcnames 0 : { *(.debug_funcnames) }
568
  .debug_typenames 0 : { *(.debug_typenames) }
569
  .debug_varnames  0 : { *(.debug_varnames) }
570
 
571
  /* DWARF 3 */
572
  .debug_pubtypes 0 : { *(.debug_pubtypes) }
573
  .debug_ranges   0 : { *(.debug_ranges) }
574
 
575
  ${TINY_DATA_SECTION}
576
  ${TINY_BSS_SECTION}
577
 
578
  ${STACK_ADDR+${STACK}}
579
  ${ATTRS_SECTIONS}
580
  ${OTHER_SECTIONS}
581
  ${RELOCATING+${OTHER_SYMBOLS}}
582
  ${RELOCATING+${DISCARDED}}
583
}
584
EOF

powered by: WebSVN 2.1.0

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