1 /* Linker script for MC689S12DP256 Flash
\r
4 Author Jefferson L Smith; Robotronics, Inc. 2006
\r
6 OUTPUT_FORMAT("elf32-m68hc12", "elf32-m68hc12",
\r
11 /* Get memory banks definition from some user configuration file.
\r
12 This file must be located in some linker directory (search path
\r
13 with -L<dir>). See fixed memory banks emulation script. */
\r
18 /* Concatenate .page0 sections. Put them in the page0 memory bank
\r
19 unless we are creating a relocatable file. */
\r
25 /* PPAGE memory banks */
\r
98 /* Start of text section. */
\r
101 /* Put startup code at beginning so that _start keeps same address. */
\r
102 /* Startup code. */
\r
103 KEEP (*(.install0)) /* Section should setup the stack pointer. */
\r
104 KEEP (*(.install1)) /* Place holder for applications. */
\r
105 KEEP (*(.install2)) /* Optional installation of data sections in RAM. */
\r
106 KEEP (*(.install3)) /* Place holder for applications. */
\r
107 KEEP (*(.install4)) /* Section that calls the main. */
\r
112 /* .gnu.warning sections are handled specially by elf32.em. */
\r
114 *(.gnu.linkonce.t.*)
\r
118 KEEP (*(.fini0)) /* Beginning of finish code (_exit symbol). */
\r
119 KEEP (*(.fini1)) /* Place holder for applications. */
\r
120 KEEP (*(.fini2)) /* C++ destructors. */
\r
121 KEEP (*(.fini3)) /* Place holder for applications. */
\r
122 KEEP (*(.fini4)) /* Runtime exit. */
\r
124 PROVIDE (etext = .);
\r
126 } > text AT>bank14 =0xff
\r
130 *(.text_h) /* Bootloader; high Flash area unbanked */
\r
132 } > text_h AT>bank15 =0xff
\r
137 *(.gnu.linkonce.r*)
\r
139 } > text_h AT>bank15 =0xff
\r
142 KEEP (*(.eh_frame))
\r
144 } > text_h AT>bank15 =0xff
\r
146 /* Constructor and destructor tables are in ROM. */
\r
149 PROVIDE (__CTOR_LIST__ = .);
\r
151 PROVIDE(__CTOR_END__ = .);
\r
153 } > text_h AT>bank15 =0xff
\r
156 PROVIDE(__DTOR_LIST__ = .);
\r
158 PROVIDE(__DTOR_END__ = .);
\r
160 } > text_h AT>bank15 =0xff
\r
162 /* Start of the data section image in ROM. */
\r
164 PROVIDE (__data_image = .);
\r
166 /* All read-only sections that normally go in PROM must be above.
\r
167 We construct the DATA image section in PROM at end of all these
\r
168 read-only sections. The data image must be copied at init time.
\r
169 Refer to GNU ld, Section 3.6.8.2 Output Section LMA. */
\r
172 __data_section_start = .;
\r
173 PROVIDE (__data_section_start = .);
\r
178 *(.gnu.linkonce.d.*)
\r
181 PROVIDE (edata = .);
\r
183 } > data AT>bank15 =0xff
\r
184 __data_section_size = SIZEOF(.data);
\r
185 __data_image_end = __data_image + __data_section_size;
\r
186 PROVIDE (__data_section_size = SIZEOF(.data));
\r
189 . = _data_image_end;
\r
191 /* Relocation for some bss and data sections. */
\r
194 __softregs_section_start = .;
\r
196 __softregs_section_end = .;
\r
198 __softregs_section_size = SIZEOF(.softregs);
\r
207 *(.gnu.linkonce.b.*)
\r
209 PROVIDE (_end = .);
\r
211 __bss_size = SIZEOF(.bss);
\r
212 PROVIDE (__bss_size = SIZEOF(.bss));
\r
220 /* If the 'vectors_addr' symbol is defined, it indicates the start address
\r
221 of interrupt vectors. This depends on the 9S12 operating mode:
\r
223 Hardware location LMA 0x10ff80, mirror 0xff80
\r
224 Called by dbug12 LMA 0x10ef80, mirror 0xef80
\r
225 Ram called by dbug12 0x3e00
\r
226 The default vectors address is (LMA) 0x10ff80. This can be overriden
\r
227 with the '-defsym vectors_addr=0x...' ld option.
\r
229 PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0x10ff80);
\r
230 .vectors DEFINED (vectors_addr) ? vectors_addr : 0x10ff80 :
\r
234 /* Stabs debugging sections. */
\r
235 .stab 0 : { *(.stab) }
\r
236 .stabstr 0 : { *(.stabstr) }
\r
237 .stab.excl 0 : { *(.stab.excl) }
\r
238 .stab.exclstr 0 : { *(.stab.exclstr) }
\r
239 .stab.index 0 : { *(.stab.index) }
\r
240 .stab.indexstr 0 : { *(.stab.indexstr) }
\r
241 .comment 0 : { *(.comment) }
\r
242 /* DWARF debug sections.
\r
243 Symbols in the DWARF debugging sections are relative to the beginning
\r
244 of the section so we begin them at 0.
\r
245 Treatment of DWARF debug section must be at end of the linker
\r
246 script to avoid problems when there are undefined symbols. It's necessary
\r
247 to avoid that the DWARF section is relocated before such undefined
\r
248 symbols are found. */
\r
250 .debug 0 : { *(.debug) }
\r
251 .line 0 : { *(.line) }
\r
252 /* GNU DWARF 1 extensions */
\r
253 .debug_srcinfo 0 : { *(.debug_srcinfo) }
\r
254 .debug_sfnames 0 : { *(.debug_sfnames) }
\r
255 /* DWARF 1.1 and DWARF 2 */
\r
256 .debug_aranges 0 : { *(.debug_aranges) }
\r
257 .debug_pubnames 0 : { *(.debug_pubnames) }
\r
259 .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
\r
260 .debug_abbrev 0 : { *(.debug_abbrev) }
\r
261 .debug_line 0 : { *(.debug_line) }
\r
262 .debug_frame 0 : { *(.debug_frame) }
\r
263 .debug_str 0 : { *(.debug_str) }
\r
264 .debug_loc 0 : { *(.debug_loc) }
\r
265 .debug_macinfo 0 : { *(.debug_macinfo) }
\r