source: rtems/c/src/lib/libbsp/arm/arm_bare_bsp/startup/linkcmds @ f47ee58

4.104.114.84.95
Last change on this file since f47ee58 was f47ee58, checked in by Joel Sherrill <joel.sherrill@…>, on Mar 3, 2004 at 2:22:27 PM

2004-03-03 Joel Sherrill <joel@…>

  • startup/linkcmds: Add more memory and sections so tests can link. This is a generic BSP for a CPU model so OK to do this.
  • Property mode set to 100644
File size: 8.5 KB
Line 
1OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
2              "elf32-littlearm")
3OUTPUT_ARCH(arm)
4ENTRY(_start)
5MEMORY {
6/* Settings as submitted which won't match an arbitrary user board
7   and are not enough to link every test case so changed to link all tests.
8        FLASH (rx)  : ORIGIN = 0x200000, LENGTH = 512K
9        RAM   (!rx) : ORIGIN = 0x400000, LENGTH = 128K
10*/
11        FLASH (rx)  : ORIGIN = 0x200000, LENGTH = 1024K
12        RAM   (!rx) : ORIGIN = 0x600000, LENGTH = 128K
13}
14
15/* Do we need any of these for elf?
16   __DYNAMIC = 0;    */
17SECTIONS
18{
19  /* Read-only sections, merged into text segment: */
20/*  . = 0 + SIZEOF_HEADERS;*/
21  .hash          : { *(.hash)                   } > FLASH
22  .dynsym        : { *(.dynsym)                 } > FLASH
23  .dynstr        : { *(.dynstr)                 } > FLASH
24  .gnu.version   : { *(.gnu.version)            } > FLASH
25  .gnu.version_d   : { *(.gnu.version_d)        } > FLASH
26  .gnu.version_r   : { *(.gnu.version_r)        } > FLASH
27  .rel.init      : { *(.rel.init)               } > FLASH
28  .rela.init     : { *(.rela.init)              } > FLASH
29  .rel.text      :
30    {
31      *(.rel.text)
32      *(.rel.text.*)
33      *(.rel.gnu.linkonce.t*)
34    } > FLASH
35  .rela.text     :
36    {
37      *(.rela.text)
38      *(.rela.text.*)
39      *(.rela.gnu.linkonce.t*)
40    } > FLASH
41  .rel.fini      : { *(.rel.fini)       } > FLASH
42  .rela.fini     : { *(.rela.fini)      } > FLASH
43  .rel.rodata    :
44    {
45      *(.rel.rodata)
46      *(.rel.rodata.*)
47      *(.rel.gnu.linkonce.r*)
48    } > FLASH
49  .rela.rodata   :
50    {
51      *(.rela.rodata)
52      *(.rela.rodata.*)
53      *(.rela.gnu.linkonce.r*)
54    } > FLASH
55  .rel.data      :
56    {
57      *(.rel.data)
58      *(.rel.data.*)
59      *(.rel.gnu.linkonce.d*)
60    } > FLASH
61  .rela.data     :
62    {
63      *(.rela.data)
64      *(.rela.data.*)
65      *(.rela.gnu.linkonce.d*)
66    } > FLASH
67  .rel.ctors     : { *(.rel.ctors)      } > FLASH
68  .rela.ctors    : { *(.rela.ctors)     } > FLASH
69  .rel.dtors     : { *(.rel.dtors)      } > FLASH
70  .rela.dtors    : { *(.rela.dtors)     } > FLASH
71  .rel.got       : { *(.rel.got)        } > FLASH
72  .rela.got      : { *(.rela.got)       } > FLASH
73}
74
75/* Do we need any of these for elf?
76   __DYNAMIC = 0;    */
77SECTIONS
78{
79  /* Read-only sections, merged into text segment: */
80/*  . = 0 + SIZEOF_HEADERS;*/
81  .hash          : { *(.hash)                   } > FLASH
82  .dynsym        : { *(.dynsym)                 } > FLASH
83  .dynstr        : { *(.dynstr)                 } > FLASH
84  .gnu.version   : { *(.gnu.version)            } > FLASH
85  .gnu.version_d   : { *(.gnu.version_d)        } > FLASH
86  .gnu.version_r   : { *(.gnu.version_r)        } > FLASH
87  .rel.init      : { *(.rel.init)               } > FLASH
88  .rela.init     : { *(.rela.init)              } > FLASH
89  .rel.text      :
90    {
91      *(.rel.text)
92      *(.rel.text.*)
93      *(.rel.gnu.linkonce.t*)
94    } > FLASH
95  .rela.text     :
96    {
97      *(.rela.text)
98      *(.rela.text.*)
99      *(.rela.gnu.linkonce.t*)
100    } > FLASH
101  .rel.fini      : { *(.rel.fini)       } > FLASH
102  .rela.fini     : { *(.rela.fini)      } > FLASH
103  .rel.rodata    :
104    {
105      *(.rel.rodata)
106      *(.rel.rodata.*)
107      *(.rel.gnu.linkonce.r*)
108    } > FLASH
109  .rela.rodata   :
110    {
111      *(.rela.rodata)
112      *(.rela.rodata.*)
113      *(.rela.gnu.linkonce.r*)
114    } > FLASH
115  .rel.data      :
116    {
117      *(.rel.data)
118      *(.rel.data.*)
119      *(.rel.gnu.linkonce.d*)
120    } > FLASH
121  .rela.data     :
122    {
123      *(.rela.data)
124      *(.rela.data.*)
125      *(.rela.gnu.linkonce.d*)
126    } > FLASH
127  .rel.ctors     : { *(.rel.ctors)      } > FLASH
128  .rela.ctors    : { *(.rela.ctors)     } > FLASH
129  .rel.dtors     : { *(.rel.dtors)      } > FLASH
130  .rela.dtors    : { *(.rela.dtors)     } > FLASH
131  .rel.got       : { *(.rel.got)        } > FLASH
132  .rela.got      : { *(.rela.got)       } > FLASH
133  .rel.sdata     :
134    {
135      *(.rel.sdata)
136      *(.rel.sdata.*)
137      *(.rel.gnu.linkonce.s*)
138    } > FLASH
139  .rela.sdata     :
140    {
141      *(.rela.sdata)
142      *(.rela.sdata.*)
143      *(.rela.gnu.linkonce.s*)
144    } > FLASH
145  .rel.sbss      : { *(.rel.sbss)               } > FLASH
146  .rela.sbss     : { *(.rela.sbss)              } > FLASH
147  .rel.bss       : { *(.rel.bss)                } > FLASH
148  .rela.bss      : { *(.rela.bss)               } > FLASH
149  .rel.plt       : { *(.rel.plt)                } > FLASH
150  .rela.plt      : { *(.rela.plt)               } > FLASH
151  .init          :
152  {
153    KEEP (*(.init))
154  } > FLASH   /*=0*/
155  .plt      : { *(.plt) } > FLASH
156  .text      :
157  {
158    *(.text)
159    *(.text.*)
160    *(.stub)
161
162    /*
163     * Special FreeBSD sysctl sections.
164     */
165    . = ALIGN (16);
166    __start_set_sysctl_set = .;
167    *(set_sysctl_*);
168    __stop_set_sysctl_set = ABSOLUTE(.);
169    *(set_domain_*);
170    *(set_pseudo_*);
171
172    /* .gnu.warning sections are handled specially by elf32.em.  */
173    *(.gnu.warning)
174    *(.gnu.linkonce.t*)
175    *(.glue_7t) *(.glue_7)
176  } > FLASH  /*=0*/
177  _etext = .;
178  PROVIDE (etext = .);
179  .fini      :
180  {
181    KEEP (*(.fini))
182  } > FLASH  /*=0*/
183  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } > FLASH
184  .rodata1   : { *(.rodata1) } > FLASH
185  _erodata = ABSOLUTE(.);
186  PROVIDE (erodata =  ABSOLUTE(.));
187  /* Adjust the address for the data segment.  We want to adjust up to
188     the same address within the page on the next page up.  */
189  . = ALIGN(256);
190  _begdata = ALIGN(256);
191  .arm_end_text :
192  {
193    . = ALIGN(256);
194    _initdata = ALIGN(256);
195  } > FLASH     
196  .data : AT (_begdata)
197  {
198    *(.data*)
199    *(.gnu.linkonce.d*)
200    *(.jcr)
201    SORT(CONSTRUCTORS)
202  } > RAM
203  .data1   : { *(.data1) } > RAM
204  .eh_frame : { *(.eh_frame) } > RAM
205  .gcc_except_table : { *(.gcc_except_table) } > RAM
206  .ctors   :
207  {
208    /* gcc uses crtbegin.o to find the start of
209       the constructors, so we make sure it is
210       first.  Because this is a wildcard, it
211       doesn't matter if the user does not
212       actually link against crtbegin.o; the
213       linker won't look for a file to match a
214       wildcard.  The wildcard also means that it
215       doesn't matter which directory crtbegin.o
216       is in.  */
217    KEEP (*crtbegin.o(.ctors))
218    /* We don't want to include the .ctor section from
219       from the crtend.o file until after the sorted ctors.
220       The .ctor section from the crtend file contains the
221       end of ctors marker and it must be last */
222    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
223    KEEP (*(SORT(.ctors.*)))
224    KEEP (*(.ctors))
225  } > RAM
226   .dtors         :
227  {
228    KEEP (*crtbegin.o(.dtors))
229    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
230    KEEP (*(SORT(.dtors.*)))
231    KEEP (*(.dtors))
232  } > RAM
233  .got           : { *(.got.plt) *(.got) } > RAM
234  .dynamic       : { *(.dynamic) } > RAM
235  /* We want the small data sections together, so single-instruction offsets
236     can access them all, and initialized data all before uninitialized, so
237     we can shorten the on-disk segment size.  */
238  .sdata     :
239  {
240    *(.sdata)
241    *(.sdata.*)
242    *(.gnu.linkonce.s.*)
243  } > RAM
244  .arm_data :
245  { 
246  _edata = .;
247  __bss_start = .;
248  __bss_start__ = .;
249  } > RAM
250  .sbss      :
251  {
252    *(.dynsbss)
253    *(.sbss)
254    *(.sbss.*)
255    *(.scommon)
256  } > RAM
257  .bss       :
258  {
259   *(.dynbss)
260   *(.bss)
261   *(.bss.*)
262   *(COMMON)
263   /* Align here to ensure that the .bss section occupies space up to
264      _end.  Align after .bss to ensure correct alignment even if the
265      .bss section disappears because there are no input sections.  */
266   . = ALIGN(32 / 8);
267  } > RAM
268  . = ALIGN(32 / 8);
269  .arm_end :
270  {
271  _end = .;
272  _bss_end__ = . ;
273  __bss_end__ = . ;
274  __end__ = . ;
275  } > RAM
276  /* Stabs debugging sections.  */
277  .stab 0 : { *(.stab) }
278  .stabstr 0 : { *(.stabstr) }
279  .stab.excl 0 : { *(.stab.excl) }
280  .stab.exclstr 0 : { *(.stab.exclstr) }
281  .stab.index 0 : { *(.stab.index) }
282  .stab.indexstr 0 : { *(.stab.indexstr) }
283  .comment 0 : { *(.comment) }
284  /* DWARF debug sections.
285     Symbols in the DWARF debugging sections are relative to the beginning
286     of the section so we begin them at 0.  */
287  /* DWARF 1 */
288  .debug          0 : { *(.debug) }
289  .line           0 : { *(.line) }
290  /* GNU DWARF 1 extensions */
291  .debug_srcinfo  0 : { *(.debug_srcinfo) }
292  .debug_sfnames  0 : { *(.debug_sfnames) }
293  /* DWARF 1.1 and DWARF 2 */
294  .debug_aranges  0 : { *(.debug_aranges) }
295  .debug_pubnames 0 : { *(.debug_pubnames) }
296  /* DWARF 2 */
297  .debug_info     0 : { *(.debug_info) }
298  .debug_abbrev   0 : { *(.debug_abbrev) }
299  .debug_line     0 : { *(.debug_line) }
300  .debug_frame    0 : { *(.debug_frame) }
301  .debug_str      0 : { *(.debug_str) }
302  .debug_loc      0 : { *(.debug_loc) }
303  .debug_macinfo  0 : { *(.debug_macinfo) }
304  /* SGI/MIPS DWARF 2 extensions */
305  .debug_weaknames 0 : { *(.debug_weaknames) }
306  .debug_funcnames 0 : { *(.debug_funcnames) }
307  .debug_typenames 0 : { *(.debug_typenames) }
308  .debug_varnames  0 : { *(.debug_varnames) }
309  /*.stack 0x80000 : { _stack = .; *(.stack) }*/
310  /* These must appear regardless of  .  */
311}
312
313
314
315
Note: See TracBrowser for help on using the repository browser.