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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [ld/] [scripttempl/] [elfm68hc11.sc] - Blame information for rev 438

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
#       DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
5
#       OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
6
#               (e.g., .PARISC.global)
7
#       OTHER_SECTIONS - at the end
8
#       EXECUTABLE_SYMBOLS - symbols that must be defined for an
9
#               executable (e.g., _DYNAMIC_LINK)
10
#       TEXT_START_SYMBOLS - symbols that appear at the start of the
11
#               .text section.
12
#       DATA_START_SYMBOLS - symbols that appear at the start of the
13
#               .data section.
14
#       OTHER_BSS_SYMBOLS - symbols that appear at the start of the
15
#               .bss section besides __bss_start.
16
#       EMBEDDED - whether this is for an embedded system.
17
#
18
# When adding sections, do note that the names of some sections are used
19
# when specifying the start address of the next.
20
#
21
test -z "$ENTRY" && ENTRY=_start
22
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
23
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
24
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
25
test "$LD_FLAG" = "N" && DATA_ADDR=.
26
 
27
CTOR=".ctors ${CONSTRUCTING-0} :
28
  {
29
    ${CONSTRUCTING+ PROVIDE (__CTOR_LIST__ = .); }
30
    ${CONSTRUCTING+${CTOR_START}}
31
    KEEP (*(.ctors))
32
 
33
    ${CONSTRUCTING+${CTOR_END}}
34
    ${CONSTRUCTING+ PROVIDE(__CTOR_END__ = .); }
35
  } ${RELOCATING+ > ${TEXT_MEMORY}}"
36
 
37
DTOR="  .dtors  ${CONSTRUCTING-0} :
38
  {
39
    ${CONSTRUCTING+ PROVIDE(__DTOR_LIST__ = .); }
40
    KEEP (*(.dtors))
41
    ${CONSTRUCTING+ PROVIDE(__DTOR_END__ = .); }
42
  } ${RELOCATING+ > ${TEXT_MEMORY}}"
43
 
44
 
45
VECTORS="
46
  /* If the 'vectors_addr' symbol is defined, it indicates the start address
47
     of interrupt vectors.  This depends on the 68HC11 operating mode:
48
 
49
                        Addr
50
     Single chip        0xffc0
51
     Extended mode      0xffc0
52
     Bootstrap          0x00c0
53
     Test               0xbfc0
54
 
55
     In general, the vectors address is 0xffc0.  This can be overriden
56
     with the '-defsym vectors_addr=0xbfc0' ld option.
57
 
58
     Note: for the bootstrap mode, the interrupt vectors are at 0xbfc0 but
59
     they are redirected to 0x00c0 by the internal PROM.  Application's vectors
60
     must also consist of jump instructions (see Motorola's manual).  */
61
 
62
  PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0xffc0);
63
  .vectors DEFINED (vectors_addr) ? vectors_addr : 0xffc0 :
64
  {
65
    KEEP (*(.vectors))
66
  }"
67
 
68
#
69
# We provide two emulations: a fixed on that defines some memory banks
70
# and a configurable one that includes a user provided memory definition.
71
#
72
case $GENERIC_BOARD in
73
  yes|1|YES)
74
        MEMORY_DEF="
75
/* Get memory banks definition from some user configuration file.
76
   This file must be located in some linker directory (search path
77
   with -L). See fixed memory banks emulation script.  */
78
INCLUDE memory.x;
79
"
80
        ;;
81
  *)
82
MEMORY_DEF="
83
/* Fixed definition of the available memory banks.
84
   See generic emulation script for a user defined configuration.  */
85
MEMORY
86
{
87
  page0 (rwx) : ORIGIN = 0x0, LENGTH = 256
88
  text  (rx)  : ORIGIN = ${ROM_START_ADDR}, LENGTH = ${ROM_SIZE}
89
  data        : ORIGIN = ${RAM_START_ADDR}, LENGTH = ${RAM_SIZE}
90
  eeprom      : ORIGIN = ${EEPROM_START_ADDR}, LENGTH = ${EEPROM_SIZE}
91
}
92
 
93
/* Setup the stack on the top of the data memory bank.  */
94
PROVIDE (_stack = ${RAM_START_ADDR} + ${RAM_SIZE} - 1);
95
"
96
        ;;
97
esac
98
 
99
STARTUP_CODE="
100
    /* Startup code.  */
101
    KEEP (*(.install0)) /* Section should setup the stack pointer.  */
102
    KEEP (*(.install1)) /* Place holder for applications.  */
103
    KEEP (*(.install2)) /* Optional installation of data sections in RAM.  */
104
    KEEP (*(.install3)) /* Place holder for applications.  */
105
    KEEP (*(.install4)) /* Section that calls the main.  */
106
"
107
 
108
FINISH_CODE="
109
    /* Finish code.  */
110
    KEEP (*(.fini0))    /* Beginning of finish code (_exit symbol).  */
111
    KEEP (*(.fini1))    /* Place holder for applications.  */
112
    KEEP (*(.fini2))    /* C++ destructors.  */
113
    KEEP (*(.fini3))    /* Place holder for applications.  */
114
    KEEP (*(.fini4))    /* Runtime exit.  */
115
"
116
 
117
PRE_COMPUTE_DATA_SIZE="
118
/* SCz: this does not work yet... This is supposed to force the loading
119
   of _map_data.o (from libgcc.a) when the .data section is not empty.
120
   By doing so, this should bring the code that copies the .data section
121
   from ROM to RAM at init time.
122
 
123
  ___pre_comp_data_size = SIZEOF(.data);
124
  __install_data_sections = ___pre_comp_data_size > 0 ?
125
                __map_data_sections : 0;
126
*/
127
"
128
 
129
INSTALL_RELOC="
130
  .install0 0 : { *(.install0) }
131
  .install1 0 : { *(.install1) }
132
  .install2 0 : { *(.install2) }
133
  .install3 0 : { *(.install3) }
134
  .install4 0 : { *(.install4) }
135
"
136
 
137
FINISH_RELOC="
138
  .fini0 0 : { *(.fini0) }
139
  .fini1 0 : { *(.fini1) }
140
  .fini2 0 : { *(.fini2) }
141
  .fini3 0 : { *(.fini3) }
142
  .fini4 0 : { *(.fini4) }
143
"
144
 
145
BSS_DATA_RELOC="
146
  .data1 0 : { *(.data1) }
147
 
148
  /* We want the small data sections together, so single-instruction offsets
149
     can access them all, and initialized data all before uninitialized, so
150
     we can shorten the on-disk segment size.  */
151
  .sdata   0 : { *(.sdata) }
152
  .sbss    0 : { *(.sbss) }
153
  .scommon 0 : { *(.scommon) }
154
"
155
 
156
SOFT_REGS_RELOC="
157
  .softregs 0 : { *(.softregs) }
158
"
159
 
160
cat <
161
${RELOCATING+/* Linker script for 68HC11 executable (PROM).  */}
162
${RELOCATING-/* Linker script for 68HC11 object file (ld -r).  */}
163
 
164
OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
165
              "${LITTLE_OUTPUT_FORMAT}")
166
OUTPUT_ARCH(${OUTPUT_ARCH})
167
${RELOCATING+ENTRY(${ENTRY})}
168
 
169
${RELOCATING+${LIB_SEARCH_DIRS}}
170
${RELOCATING+${EXECUTABLE_SYMBOLS}}
171
${RELOCATING+${MEMORY_DEF}}
172
 
173
SECTIONS
174
{
175
  .hash        ${RELOCATING-0} : { *(.hash)             }
176
  .dynsym      ${RELOCATING-0} : { *(.dynsym)           }
177
  .dynstr      ${RELOCATING-0} : { *(.dynstr)           }
178
  .gnu.version          ${RELOCATING-0} : { *(.gnu.version) }
179
  .gnu.version_d        ${RELOCATING-0} : { *(.gnu.version_d) }
180
  .gnu.version_r        ${RELOCATING-0} : { *(.gnu.version_r) }
181
 
182
  .rel.text    ${RELOCATING-0} :
183
    {
184
      *(.rel.text)
185
      ${RELOCATING+*(.rel.text.*)}
186
      ${RELOCATING+*(.rel.gnu.linkonce.t.*)}
187
    }
188
  .rela.text   ${RELOCATING-0} :
189
    {
190
      *(.rela.text)
191
      ${RELOCATING+*(.rela.text.*)}
192
      ${RELOCATING+*(.rela.gnu.linkonce.t.*)}
193
    }
194
  .rel.data    ${RELOCATING-0} :
195
    {
196
      *(.rel.data)
197
      ${RELOCATING+*(.rel.data.*)}
198
      ${RELOCATING+*(.rel.gnu.linkonce.d.*)}
199
    }
200
  .rela.data   ${RELOCATING-0} :
201
    {
202
      *(.rela.data)
203
      ${RELOCATING+*(.rela.data.*)}
204
      ${RELOCATING+*(.rela.gnu.linkonce.d.*)}
205
    }
206
  .rel.rodata  ${RELOCATING-0} :
207
    {
208
      *(.rel.rodata)
209
      ${RELOCATING+*(.rel.rodata.*)}
210
      ${RELOCATING+*(.rel.gnu.linkonce.r.*)}
211
    }
212
  .rela.rodata ${RELOCATING-0} :
213
    {
214
      *(.rela.rodata)
215
      ${RELOCATING+*(.rela.rodata.*)}
216
      ${RELOCATING+*(.rela.gnu.linkonce.r.*)}
217
    }
218
  .rel.sdata   ${RELOCATING-0} :
219
    {
220
      *(.rel.sdata)
221
      ${RELOCATING+*(.rel.sdata.*)}
222
      ${RELOCATING+*(.rel.gnu.linkonce.s.*)}
223
    }
224
  .rela.sdata   ${RELOCATING-0} :
225
    {
226
      *(.rela.sdata)
227
      ${RELOCATING+*(.rela.sdata.*)}
228
      ${RELOCATING+*(.rela.gnu.linkonce.s.*)}
229
    }
230
  .rel.sbss    ${RELOCATING-0} :
231
    {
232
      *(.rel.sbss)
233
      ${RELOCATING+*(.rel.sbss.*)}
234
      ${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
235
    }
236
  .rela.sbss   ${RELOCATING-0} :
237
    {
238
      *(.rela.sbss)
239
      ${RELOCATING+*(.rela.sbss.*)}
240
      ${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
241
    }
242
  .rel.bss     ${RELOCATING-0} :
243
    {
244
      *(.rel.bss)
245
      ${RELOCATING+*(.rel.bss.*)}
246
      ${RELOCATING+*(.rel.gnu.linkonce.b.*)}
247
    }
248
  .rela.bss    ${RELOCATING-0} :
249
    {
250
      *(.rela.bss)
251
      ${RELOCATING+*(.rela.bss.*)}
252
      ${RELOCATING+*(.rela.gnu.linkonce.b.*)}
253
    }
254
  .rel.stext            ${RELOCATING-0} : { *(.rel.stest) }
255
  .rela.stext           ${RELOCATING-0} : { *(.rela.stest) }
256
  .rel.etext            ${RELOCATING-0} : { *(.rel.etest) }
257
  .rela.etext           ${RELOCATING-0} : { *(.rela.etest) }
258
  .rel.sdata            ${RELOCATING-0} : { *(.rel.sdata) }
259
  .rela.sdata           ${RELOCATING-0} : { *(.rela.sdata) }
260
  .rel.edata            ${RELOCATING-0} : { *(.rel.edata) }
261
  .rela.edata           ${RELOCATING-0} : { *(.rela.edata) }
262
  .rel.eit_v            ${RELOCATING-0} : { *(.rel.eit_v) }
263
  .rela.eit_v           ${RELOCATING-0} : { *(.rela.eit_v) }
264
  .rel.ebss             ${RELOCATING-0} : { *(.rel.ebss) }
265
  .rela.ebss            ${RELOCATING-0} : { *(.rela.ebss) }
266
  .rel.srodata          ${RELOCATING-0} : { *(.rel.srodata) }
267
  .rela.srodata         ${RELOCATING-0} : { *(.rela.srodata) }
268
  .rel.erodata          ${RELOCATING-0} : { *(.rel.erodata) }
269
  .rela.erodata         ${RELOCATING-0} : { *(.rela.erodata) }
270
  .rel.got              ${RELOCATING-0} : { *(.rel.got) }
271
  .rela.got             ${RELOCATING-0} : { *(.rela.got) }
272
  .rel.ctors            ${RELOCATING-0} : { *(.rel.ctors) }
273
  .rela.ctors           ${RELOCATING-0} : { *(.rela.ctors) }
274
  .rel.dtors            ${RELOCATING-0} : { *(.rel.dtors) }
275
  .rela.dtors           ${RELOCATING-0} : { *(.rela.dtors) }
276
  .rel.init             ${RELOCATING-0} : { *(.rel.init) }
277
  .rela.init            ${RELOCATING-0} : { *(.rela.init) }
278
  .rel.fini             ${RELOCATING-0} : { *(.rel.fini) }
279
  .rela.fini            ${RELOCATING-0} : { *(.rela.fini) }
280
  .rel.plt              ${RELOCATING-0} : { *(.rel.plt) }
281
  .rela.plt             ${RELOCATING-0} : { *(.rela.plt) }
282
 
283
  /* Concatenate .page0 sections.  Put them in the page0 memory bank
284
     unless we are creating a relocatable file.  */
285
  .page0 :
286
  {
287
    *(.page0)
288
    ${RELOCATING+*(.softregs)}
289
  } ${RELOCATING+ > page0}
290
 
291
  /* Start of text section.  */
292
  .stext ${RELOCATING-0} :
293
  {
294
    *(.stext)
295
  } ${RELOCATING+ > ${TEXT_MEMORY}}
296
 
297
  .init ${RELOCATING-0} :
298
  {
299
    *(.init)
300
  } ${RELOCATING+=${NOP-0}}
301
 
302
  ${RELOCATING-${INSTALL_RELOC}}
303
  ${RELOCATING-${FINISH_RELOC}}
304
 
305
  .text ${RELOCATING-0}:
306
  {
307
    /* Put startup code at beginning so that _start keeps same address.  */
308
    ${RELOCATING+${STARTUP_CODE}}
309
 
310
    ${RELOCATING+*(.init)}
311
    *(.text)
312
    ${RELOCATING+*(.text.*)}
313
    /* .gnu.warning sections are handled specially by elf32.em.  */
314
    *(.gnu.warning)
315
    ${RELOCATING+*(.gnu.linkonce.t.*)}
316
    ${RELOCATING+*(.tramp)}
317
    ${RELOCATING+*(.tramp.*)}
318
 
319
    ${RELOCATING+${FINISH_CODE}}
320
 
321
    ${RELOCATING+_etext = .;}
322
    ${RELOCATING+PROVIDE (etext = .);}
323
 
324
  } ${RELOCATING+ > ${TEXT_MEMORY}}
325
 
326
  .eh_frame ${RELOCATING-0} :
327
  {
328
    KEEP (*(.eh_frame))
329
  } ${RELOCATING+ > ${TEXT_MEMORY}}
330
 
331
  .gcc_except_table ${RELOCATING-0} :
332
  {
333
    *(.gcc_except_table)
334
  } ${RELOCATING+ > ${TEXT_MEMORY}}
335
 
336
  .rodata  ${RELOCATING-0} :
337
  {
338
    *(.rodata)
339
    ${RELOCATING+*(.rodata.*)}
340
    ${RELOCATING+*(.gnu.linkonce.r*)}
341
  } ${RELOCATING+ > ${TEXT_MEMORY}}
342
 
343
  .rodata1 ${RELOCATING-0} :
344
  {
345
    *(.rodata1)
346
  } ${RELOCATING+ > ${TEXT_MEMORY}}
347
 
348
  /* Constructor and destructor tables are in ROM.  */
349
  ${RELOCATING+${CTOR}}
350
  ${RELOCATING+${DTOR}}
351
 
352
  .jcr ${RELOCATING-0} :
353
  {
354
    KEEP (*(.jcr))
355
  } ${RELOCATING+ > ${TEXT_MEMORY}}
356
 
357
  /* Start of the data section image in ROM.  */
358
  ${RELOCATING+__data_image = .;}
359
  ${RELOCATING+PROVIDE (__data_image = .);}
360
 
361
  /* All read-only sections that normally go in PROM must be above.
362
     We construct the DATA image section in PROM at end of all these
363
     read-only sections.  The data image must be copied at init time.
364
     Refer to GNU ld, Section 3.6.8.2 Output Section LMA.  */
365
  .data  ${RELOCATING-0} : ${RELOCATING+AT (__data_image)}
366
  {
367
    ${RELOCATING+__data_section_start = .;}
368
    ${RELOCATING+PROVIDE (__data_section_start = .);}
369
 
370
    ${RELOCATING+${DATA_START_SYMBOLS}}
371
    ${RELOCATING+*(.sdata)}
372
    *(.data)
373
    ${RELOCATING+*(.data.*)}
374
    ${RELOCATING+*(.data1)}
375
    ${RELOCATING+*(.gnu.linkonce.d.*)}
376
    ${CONSTRUCTING+CONSTRUCTORS}
377
 
378
    ${RELOCATING+_edata  =  .;}
379
    ${RELOCATING+PROVIDE (edata = .);}
380
  } ${RELOCATING+ > ${DATA_MEMORY}}
381
 
382
  ${RELOCATING+__data_section_size = SIZEOF(.data);}
383
  ${RELOCATING+PROVIDE (__data_section_size = SIZEOF(.data));}
384
  ${RELOCATING+__data_image_end = __data_image + __data_section_size;}
385
 
386
  ${RELOCATING+${PRE_COMPUTE_DATA_SIZE}}
387
 
388
  /* .install ${RELOCATING-0}:
389
  {
390
    . = _data_image_end;
391
  } ${RELOCATING+ > ${TEXT_MEMORY}} */
392
 
393
  /* Relocation for some bss and data sections.  */
394
  ${RELOCATING-${BSS_DATA_RELOC}}
395
  ${RELOCATING-${SOFT_REGS_RELOC}}
396
 
397
  .bss ${RELOCATING-0} :
398
  {
399
    ${RELOCATING+__bss_start = .;}
400
    ${RELOCATING+*(.sbss)}
401
    ${RELOCATING+*(.scommon)}
402
 
403
    *(.dynbss)
404
    *(.bss)
405
    ${RELOCATING+*(.bss.*)}
406
    ${RELOCATING+*(.gnu.linkonce.b.*)}
407
    *(COMMON)
408
    ${RELOCATING+PROVIDE (_end = .);}
409
  } ${RELOCATING+ > ${DATA_MEMORY}}
410
  ${RELOCATING+__bss_size = SIZEOF(.bss);}
411
  ${RELOCATING+PROVIDE (__bss_size = SIZEOF(.bss));}
412
 
413
  .eeprom ${RELOCATING-0} :
414
  {
415
    *(.eeprom)
416
    *(.eeprom.*)
417
  } ${RELOCATING+ > ${EEPROM_MEMORY}}
418
 
419
  ${RELOCATING+${VECTORS}}
420
 
421
  /* Stabs debugging sections.  */
422
  .stab          0 : { *(.stab) }
423
  .stabstr       0 : { *(.stabstr) }
424
  .stab.excl     0 : { *(.stab.excl) }
425
  .stab.exclstr  0 : { *(.stab.exclstr) }
426
  .stab.index    0 : { *(.stab.index) }
427
  .stab.indexstr 0 : { *(.stab.indexstr) }
428
 
429
  .comment       0 : { *(.comment) }
430
 
431
  /* DWARF debug sections.
432
     Symbols in the DWARF debugging sections are relative to the beginning
433
     of the section so we begin them at 0.
434
     Treatment of DWARF debug section must be at end of the linker
435
     script to avoid problems when there are undefined symbols. It's necessary
436
     to avoid that the DWARF section is relocated before such undefined
437
     symbols are found.  */
438
 
439
  /* DWARF 1 */
440
  .debug         0 : { *(.debug) }
441
  .line          0 : { *(.line) }
442
 
443
  /* GNU DWARF 1 extensions */
444
  .debug_srcinfo 0 : { *(.debug_srcinfo) }
445
  .debug_sfnames 0 : { *(.debug_sfnames) }
446
 
447
  /* DWARF 1.1 and DWARF 2 */
448
  .debug_aranges  0 : { *(.debug_aranges) }
449
  .debug_pubnames 0 : { *(.debug_pubnames) }
450
 
451
  /* DWARF 2 */
452
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
453
  .debug_abbrev   0 : { *(.debug_abbrev) }
454
  .debug_line     0 : { *(.debug_line) }
455
  .debug_frame    0 : { *(.debug_frame) }
456
  .debug_str      0 : { *(.debug_str) }
457
  .debug_loc      0 : { *(.debug_loc) }
458
  .debug_macinfo  0 : { *(.debug_macinfo) }
459
}
460
EOF

powered by: WebSVN 2.1.0

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