]> rtime.felk.cvut.cz Git - arc.git/blob - arch/hc1x/hcs12d/scripts/linkscript_gcc.ldf
Fixes to make the os kernel test framework pass.
[arc.git] / arch / hc1x / hcs12d / scripts / linkscript_gcc.ldf
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
4 OUTPUT_ARCH(m68hc12)\r
5 ENTRY(_start)\r
6 \r
7 \r
8 MEMORY\r
9 {\r
10 #include "memory.ldf"\r
11 }\r
12 \r
13 /* Setup the stack on the top of the data memory bank.  */\r
14 PROVIDE (_stack = 0x4000);\r
15 \r
16 \r
17 SECTIONS\r
18 {\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
25   \r
26   /*\r
27   .rel.text      :\r
28     {\r
29       *(.rel.text)\r
30       *(.rel.text.*)\r
31       *(.rel.gnu.linkonce.t.*)\r
32     }\r
33   .rela.text     :\r
34     {\r
35       *(.rela.text)\r
36       *(.rela.text.*)\r
37       *(.rela.gnu.linkonce.t.*)\r
38     }\r
39   .rel.data      :\r
40     {\r
41       *(.rel.data)\r
42       *(.rel.data.*)\r
43       *(.rel.gnu.linkonce.d.*)\r
44     }\r
45   .rela.data     :\r
46     {\r
47       *(.rela.data)\r
48       *(.rela.data.*)\r
49       *(.rela.gnu.linkonce.d.*)\r
50     }\r
51   .rel.rodata    :\r
52     {\r
53       *(.rel.rodata)\r
54       *(.rel.rodata.*)\r
55       *(.rel.gnu.linkonce.r.*)\r
56     }\r
57   .rela.rodata   :\r
58     {\r
59       *(.rela.rodata)\r
60       *(.rela.rodata.*)\r
61       *(.rela.gnu.linkonce.r.*)\r
62     }\r
63   .rel.sdata     :\r
64     {\r
65       *(.rel.sdata)\r
66       *(.rel.sdata.*)\r
67       *(.rel.gnu.linkonce.s.*)\r
68     }\r
69   .rela.sdata     :\r
70     {\r
71       *(.rela.sdata)\r
72       *(.rela.sdata.*)\r
73       *(.rela.gnu.linkonce.s.*)\r
74     }\r
75   .rel.sbss      :\r
76     {\r
77       *(.rel.sbss)\r
78       *(.rel.sbss.*)\r
79       *(.rel.gnu.linkonce.sb.*)\r
80     }\r
81   .rela.sbss     :\r
82     {\r
83       *(.rela.sbss)\r
84       *(.rela.sbss.*)\r
85       *(.rel.gnu.linkonce.sb.*)\r
86     }\r
87   .rel.bss       :\r
88     {\r
89       *(.rel.bss)\r
90       *(.rel.bss.*)\r
91       *(.rel.gnu.linkonce.b.*)\r
92     }\r
93   .rela.bss      :\r
94     {\r
95       *(.rela.bss)\r
96       *(.rela.bss.*)\r
97       *(.rela.gnu.linkonce.b.*)\r
98     }\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
127   */\r
128   \r
129   /* Concatenate .page0 sections.  Put them in the page0 memory bank\r
130      unless we are creating a relocatable file.  */\r
131   .page0 :\r
132   {\r
133     *(.page0)\r
134   }  > page0\r
135   \r
136   \r
137   /* PPAGE memory banks */\r
138   .bank_A :\r
139   {\r
140     *(.bank_A)\r
141     *(.text.bank_A*)\r
142     \r
143     /* BANK_A MODULES */\r
144     Os_Cfg.o(.text)\r
145     EcuM.o(.text)\r
146     EcuM_Cfg.o(.text)\r
147     EcuM_Callout_template.o(.text)\r
148     Mcu.o(.text)\r
149     event.o(.text)\r
150     init.o(.text)\r
151     arch.o(.text)\r
152     task.o(.text)\r
153     alarm.o(.text)\r
154         \r
155     . = ALIGN(2);\r
156   } > bank_A AT>bank_A_lma  =0xff\r
157 \r
158   .bank_B :\r
159   {\r
160     *(.bank_B)\r
161     *(.text.bank_B*)\r
162 \r
163     /* BANK_B MODULES */\r
164     resource.o(.text)\r
165     sched_table.o(.text)\r
166     counter.o(.text)\r
167     sys_tick.o(.text)\r
168     isr.o(.text)\r
169     os_arctest.o(.text)\r
170     irq.o(.text)\r
171     Det.o(.text)\r
172     xtoa.o(.text)\r
173     newlib_port.o(.text)\r
174 \r
175     . = ALIGN(2);\r
176   } > bank_B AT>bank_B_lma =0xff\r
177 \r
178 \r
179   .bank_C :\r
180   {\r
181     *(.bank_C)\r
182     *(.text.bank_C*)\r
183 \r
184     /* BANK_C MODULES */\r
185     printf.o(.text)     \r
186         *_memcpy.o(.text)\r
187         *_memset.o(.text)\r
188         *_abort.o(.text)\r
189         *_subdi3.o(.text)\r
190         *_addsub_sf.o(.text)\r
191         *udivmod.o(.text)\r
192         /* *_negsi2.o(.text) */\r
193         *_pack_sf.o(.text)\r
194         *_unpack_sf.o(.text)\r
195         *udivmodsi4.o(.text)\r
196         /* *_ashlsi3.o(.text) */\r
197         /* *_lshrsi3.o(.text) */\r
198         *assert.o(.text)\r
199         *div.o(.text)\r
200         *fiprintf.o(.text)\r
201         *reent.o(.text)\r
202         *strcmp.o(.text)\r
203         *strncpy.o(.text)\r
204         *wcrtomb.o(.text)\r
205         *wcsrtombs.o(.text)\r
206         *wctomb_r.o(.text)\r
207         *wsetup.o(.text)\r
208         *fflush.o(.text)\r
209         *findfp.o(.text)\r
210         *freer.o(.text)\r
211         *_memcpy.o(.text)\r
212         \r
213     . = ALIGN(2);\r
214   } > bank_C AT>bank_C_lma  =0xff\r
215 \r
216 \r
217   .bank_D :\r
218   {\r
219     *(.bank_D)\r
220     *(.text.bank_D*)\r
221 \r
222     /* BANK_D MODULES */\r
223     Can*.o(.text)\r
224     Pdu*.o(.text)\r
225     Dio*.o(.text)\r
226 \r
227     . = ALIGN(2);\r
228   } > bank_D AT>bank_D_lma  =0xff\r
229 \r
230 \r
231   .bank_E :\r
232   {\r
233     *(.bank_E)\r
234     *(.text.bank_E*)\r
235 \r
236     /* BANK_E MODULES */\r
237     Port*.o(.text)\r
238     Com*.o(.text)\r
239     test_*.o(.text)\r
240 \r
241     . = ALIGN(2);\r
242   } > bank_E AT>bank_E_lma  =0xff\r
243 \r
244 \r
245   .bank_F :\r
246   {\r
247     *(.bank_F)\r
248    *(.text.bank_F*)\r
249 \r
250     /* BANK_F MODULES */\r
251     Adc*.o(.text)\r
252     Dem*.o(.text)\r
253     IoHwAb*.o(.text)\r
254         . = ALIGN(2);\r
255   } > bank_F AT>bank_F_lma  =0xff\r
256   \r
257   \r
258   /* Start of text section.  */\r
259   .stext   :\r
260   {\r
261     *(.stext)\r
262   }  > text AT>bank_FIX1_lma\r
263   .init   :\r
264   {\r
265     *(.init)\r
266   } AT>bank_FIX1_lma =0\r
267   .text  :\r
268   {\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
276     *(.init)\r
277     *(.text)\r
278     *(.text.*)\r
279     /* .gnu.warning sections are handled specially by elf32.em.  */\r
280     *(.gnu.warning)\r
281     *(.gnu.linkonce.t.*)\r
282     *(.tramp)\r
283     *(.tramp.*)\r
284     /* Finish code.  */\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
290     _etext = .;\r
291     PROVIDE (etext = .);\r
292     . = ALIGN(2);\r
293   }  > text AT>bank_FIX1_lma =0xa7a7a7a7\r
294   \r
295   .eh_frame   :\r
296   {\r
297     KEEP (*(.eh_frame))\r
298   }  > text AT>bank_FIX1_lma\r
299   \r
300   .gcc_except_table   :\r
301   {\r
302     *(.gcc_except_table)\r
303   }  > text AT>bank_FIX1_lma\r
304   \r
305   .rodata    :\r
306   {\r
307     *(.rodata)\r
308     *(.rodata.*)\r
309     *(.gnu.linkonce.r*)\r
310     . = ALIGN(2);\r
311   }  > text_h AT>bank_FIX2_lma =0xffffffff\r
312   \r
313   .rodata1   :\r
314   {\r
315     *(.rodata1)\r
316     . = ALIGN(2);\r
317   }  > text_h AT>bank_FIX2_lma =0xffffffff\r
318   \r
319   /* Constructor and destructor tables are in ROM.  */\r
320   /*\r
321   .ctors   :\r
322   {\r
323      PROVIDE (__CTOR_LIST__ = .);\r
324     KEEP (*(.ctors))\r
325      PROVIDE(__CTOR_END__ = .);\r
326   }  > text\r
327     .dtors        :\r
328   {\r
329      PROVIDE(__DTOR_LIST__ = .);\r
330     KEEP (*(.dtors))\r
331      PROVIDE(__DTOR_END__ = .);\r
332   }  > text\r
333   .jcr   :\r
334   {\r
335     KEEP (*(.jcr))\r
336   }  > text\r
337   */\r
338   \r
339   /* Start of the data section image in ROM.  */\r
340   __data_image = .;\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
347   {\r
348     __data_section_start = .;\r
349     PROVIDE (__data_section_start = .);\r
350     *(.sdata)\r
351     *(.data)\r
352     *(.data.*)\r
353     *(.data1)\r
354     *(.gnu.linkonce.d.*)\r
355     CONSTRUCTORS\r
356     _edata  =  .;\r
357     PROVIDE (edata = .);\r
358     . = ALIGN(2);\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
363   \r
364   .ramlog :\r
365   {\r
366     *(.winidea_port)\r
367         *(.ramlog)\r
368         *(.dem_eventmemory_pri)\r
369   } > data\r
370   \r
371   .noice_port 0x2000 :\r
372   {\r
373       *(.noice_port)\r
374   } > data\r
375     \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
383 */\r
384   /* .install  :\r
385   {\r
386     . = _data_image_end;\r
387   }  > text */\r
388   /* Relocation for some bss and data sections.  */\r
389   .bss   :\r
390   {\r
391     __bss_start = .;\r
392     *(.softregs)\r
393     *(.sbss)\r
394     *(.scommon)\r
395     *(.dynbss)\r
396     *(.bss)\r
397     *(.bss.*)\r
398     *(.gnu.linkonce.b.*)\r
399     *(COMMON)\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
404   .eeprom   :\r
405   {\r
406     *(.eeprom)\r
407     *(.eeprom.*)\r
408   }  > eeprom\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
411                         Addr\r
412      Single chip        0xffc0\r
413      Extended mode      0xffc0\r
414      Bootstrap          0x00c0\r
415      Test               0xbfc0\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
421 /*\r
422   PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0xffc0);\r
423   .vectors DEFINED (vectors_addr) ? vectors_addr : 0xffc0 :\r
424   */\r
425   .vectors :\r
426   {\r
427     KEEP (*(.vectors))\r
428   } >vectors AT>vectors_lma\r
429   \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
445   /* DWARF 1 */\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
454   /* DWARF 2 */\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
462 }\r