1 /* Default linker script, for normal executables */
\r
2 /* Linker script for 68HC12 executable (PROM). */
\r
3 OUTPUT_FORMAT("elf32-m68hc12", "elf32-m68hc12", "elf32-m68hc12")
\r
10 #include "memory.ldf"
\r
13 /* Setup the stack on the top of the data memory bank. */
\r
14 PROVIDE (_stack = 0x4000);
\r
19 .hash : { *(.hash) }
\r
20 .dynsym : { *(.dynsym) }
\r
21 .dynstr : { *(.dynstr) }
\r
22 .gnu.version : { *(.gnu.version) }
\r
23 .gnu.version_d : { *(.gnu.version_d) }
\r
24 .gnu.version_r : { *(.gnu.version_r) }
\r
31 *(.rel.gnu.linkonce.t.*)
\r
37 *(.rela.gnu.linkonce.t.*)
\r
43 *(.rel.gnu.linkonce.d.*)
\r
49 *(.rela.gnu.linkonce.d.*)
\r
55 *(.rel.gnu.linkonce.r.*)
\r
61 *(.rela.gnu.linkonce.r.*)
\r
67 *(.rel.gnu.linkonce.s.*)
\r
73 *(.rela.gnu.linkonce.s.*)
\r
79 *(.rel.gnu.linkonce.sb.*)
\r
85 *(.rel.gnu.linkonce.sb.*)
\r
91 *(.rel.gnu.linkonce.b.*)
\r
97 *(.rela.gnu.linkonce.b.*)
\r
99 .rel.stext : { *(.rel.stest) }
\r
100 .rela.stext : { *(.rela.stest) }
\r
101 .rel.etext : { *(.rel.etest) }
\r
102 .rela.etext : { *(.rela.etest) }
\r
103 .rel.sdata : { *(.rel.sdata) }
\r
104 .rela.sdata : { *(.rela.sdata) }
\r
105 .rel.edata : { *(.rel.edata) }
\r
106 .rela.edata : { *(.rela.edata) }
\r
107 .rel.eit_v : { *(.rel.eit_v) }
\r
108 .rela.eit_v : { *(.rela.eit_v) }
\r
109 .rel.ebss : { *(.rel.ebss) }
\r
110 .rela.ebss : { *(.rela.ebss) }
\r
111 .rel.srodata : { *(.rel.srodata) }
\r
112 .rela.srodata : { *(.rela.srodata) }
\r
113 .rel.erodata : { *(.rel.erodata) }
\r
114 .rela.erodata : { *(.rela.erodata) }
\r
115 .rel.got : { *(.rel.got) }
\r
116 .rela.got : { *(.rela.got) }
\r
117 .rel.ctors : { *(.rel.ctors) }
\r
118 .rela.ctors : { *(.rela.ctors) }
\r
119 .rel.dtors : { *(.rel.dtors) }
\r
120 .rela.dtors : { *(.rela.dtors) }
\r
121 .rel.init : { *(.rel.init) }
\r
122 .rela.init : { *(.rela.init) }
\r
123 .rel.fini : { *(.rel.fini) }
\r
124 .rela.fini : { *(.rela.fini) }
\r
125 .rel.plt : { *(.rel.plt) }
\r
126 .rela.plt : { *(.rela.plt) }
\r
129 /* Concatenate .page0 sections. Put them in the page0 memory bank
\r
130 unless we are creating a relocatable file. */
\r
137 /* PPAGE memory banks */
\r
143 /* BANK_A MODULES */
\r
147 EcuM_Callout_template.o(.text)
\r
156 } > bank_A AT>bank_A_lma =0xff
\r
163 /* BANK_B MODULES */
\r
165 sched_table.o(.text)
\r
169 os_arctest.o(.text)
\r
173 newlib_port.o(.text)
\r
176 } > bank_B AT>bank_B_lma =0xff
\r
184 /* BANK_C MODULES */
\r
190 *_addsub_sf.o(.text)
\r
192 /* *_negsi2.o(.text) */
\r
194 *_unpack_sf.o(.text)
\r
195 *udivmodsi4.o(.text)
\r
196 /* *_ashlsi3.o(.text) */
\r
197 /* *_lshrsi3.o(.text) */
\r
205 *wcsrtombs.o(.text)
\r
214 } > bank_C AT>bank_C_lma =0xff
\r
222 /* BANK_D MODULES */
\r
228 } > bank_D AT>bank_D_lma =0xff
\r
236 /* BANK_E MODULES */
\r
242 } > bank_E AT>bank_E_lma =0xff
\r
250 /* BANK_F MODULES */
\r
255 } > bank_F AT>bank_F_lma =0xff
\r
258 /* Start of text section. */
\r
262 } > text AT>bank_FIX1_lma
\r
266 } AT>bank_FIX1_lma =0
\r
269 /* Put startup code at beginning so that _start keeps same address. */
\r
270 /* Startup code. */
\r
271 KEEP (*(.install0)) /* Section should setup the stack pointer. */
\r
272 KEEP (*(.install1)) /* Place holder for applications. */
\r
273 KEEP (*(.install2)) /* Optional installation of data sections in RAM. */
\r
274 KEEP (*(.install3)) /* Place holder for applications. */
\r
275 KEEP (*(.install4)) /* Section that calls the main. */
\r
279 /* .gnu.warning sections are handled specially by elf32.em. */
\r
281 *(.gnu.linkonce.t.*)
\r
285 KEEP (*(.fini0)) /* Beginning of finish code (_exit symbol). */
\r
286 KEEP (*(.fini1)) /* Place holder for applications. */
\r
287 KEEP (*(.fini2)) /* C++ destructors. */
\r
288 KEEP (*(.fini3)) /* Place holder for applications. */
\r
289 KEEP (*(.fini4)) /* Runtime exit. */
\r
291 PROVIDE (etext = .);
\r
293 } > text AT>bank_FIX1_lma =0xa7a7a7a7
\r
297 KEEP (*(.eh_frame))
\r
298 } > text AT>bank_FIX1_lma
\r
300 .gcc_except_table :
\r
302 *(.gcc_except_table)
\r
303 } > text AT>bank_FIX1_lma
\r
309 *(.gnu.linkonce.r*)
\r
311 } > text_h AT>bank_FIX2_lma =0xffffffff
\r
317 } > text_h AT>bank_FIX2_lma =0xffffffff
\r
319 /* Constructor and destructor tables are in ROM. */
\r
323 PROVIDE (__CTOR_LIST__ = .);
\r
325 PROVIDE(__CTOR_END__ = .);
\r
329 PROVIDE(__DTOR_LIST__ = .);
\r
331 PROVIDE(__DTOR_END__ = .);
\r
339 /* Start of the data section image in ROM. */
\r
341 PROVIDE (__data_image = .);
\r
342 /* All read-only sections that normally go in PROM must be above.
\r
343 We construct the DATA image section in PROM at end of all these
\r
344 read-only sections. The data image must be copied at init time.
\r
345 Refer to GNU ld, Section 3.6.8.2 Output Section LMA. */
\r
346 .data : /* AT (__data_image) */
\r
348 __data_section_start = .;
\r
349 PROVIDE (__data_section_start = .);
\r
354 *(.gnu.linkonce.d.*)
\r
357 PROVIDE (edata = .);
\r
359 } > data AT>bank_FIX2_lma =0xffffffff
\r
360 __data_section_size = SIZEOF(.data);
\r
361 PROVIDE (__data_section_size = SIZEOF(.data));
\r
362 __data_image_end = __data_image + __data_section_size;
\r
368 *(.dem_eventmemory_pri)
\r
371 .noice_port 0x2000 :
\r
376 /* SCz: this does not work yet... This is supposed to force the loading
\r
377 of _map_data.o (from libgcc.a) when the .data section is not empty.
\r
378 By doing so, this should bring the code that copies the .data section
\r
379 from ROM to RAM at init time.
\r
380 ___pre_comp_data_size = SIZEOF(.data);
\r
381 __install_data_sections = ___pre_comp_data_size > 0 ?
\r
382 __map_data_sections : 0;
\r
386 . = _data_image_end;
\r
388 /* Relocation for some bss and data sections. */
\r
398 *(.gnu.linkonce.b.*)
\r
400 PROVIDE (_end = .);
\r
401 } > data AT>bank_FIX2_lma
\r
402 __bss_size = SIZEOF(.bss);
\r
403 PROVIDE (__bss_size = SIZEOF(.bss));
\r
409 /* If the 'vectors_addr' symbol is defined, it indicates the start address
\r
410 of interrupt vectors. This depends on the 68HC11 operating mode:
\r
413 Extended mode 0xffc0
\r
416 In general, the vectors address is 0xffc0. This can be overriden
\r
417 with the '-defsym vectors_addr=0xbfc0' ld option.
\r
418 Note: for the bootstrap mode, the interrupt vectors are at 0xbfc0 but
\r
419 they are redirected to 0x00c0 by the internal PROM. Application's vectors
\r
420 must also consist of jump instructions (see Motorola's manual). */
\r
422 PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0xffc0);
\r
423 .vectors DEFINED (vectors_addr) ? vectors_addr : 0xffc0 :
\r
428 } >vectors AT>vectors_lma
\r
430 /* Stabs debugging sections. */
\r
431 .stab 0 : { *(.stab) }
\r
432 .stabstr 0 : { *(.stabstr) }
\r
433 .stab.excl 0 : { *(.stab.excl) }
\r
434 .stab.exclstr 0 : { *(.stab.exclstr) }
\r
435 .stab.index 0 : { *(.stab.index) }
\r
436 .stab.indexstr 0 : { *(.stab.indexstr) }
\r
437 .comment 0 : { *(.comment) }
\r
438 /* DWARF debug sections.
\r
439 Symbols in the DWARF debugging sections are relative to the beginning
\r
440 of the section so we begin them at 0.
\r
441 Treatment of DWARF debug section must be at end of the linker
\r
442 script to avoid problems when there are undefined symbols. It's necessary
\r
443 to avoid that the DWARF section is relocated before such undefined
\r
444 symbols are found. */
\r
446 .debug 0 : { *(.debug) }
\r
447 .line 0 : { *(.line) }
\r
448 /* GNU DWARF 1 extensions */
\r
449 .debug_srcinfo 0 : { *(.debug_srcinfo) }
\r
450 .debug_sfnames 0 : { *(.debug_sfnames) }
\r
451 /* DWARF 1.1 and DWARF 2 */
\r
452 .debug_aranges 0 : { *(.debug_aranges) }
\r
453 .debug_pubnames 0 : { *(.debug_pubnames) }
\r
455 .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
\r
456 .debug_abbrev 0 : { *(.debug_abbrev) }
\r
457 .debug_line 0 : { *(.debug_line) }
\r
458 .debug_frame 0 : { *(.debug_frame) }
\r
459 .debug_str 0 : { *(.debug_str) }
\r
460 .debug_loc 0 : { *(.debug_loc) }
\r
461 .debug_macinfo 0 : { *(.debug_macinfo) }
\r