]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/boot/arm/at91/linker.cfg
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / boot / arm / at91 / linker.cfg
1 /*******************************************************************************
2  *
3  * Filename: linker.cfg
4  *
5  * linker config file used for internal RAM or eeprom images at address 0.
6  *
7  * Revision information:
8  *
9  * 20AUG2004    kb_admin        initial creation
10  * 12JAN2005    kb_admin        move data to SDRAM
11  *
12  * BEGIN_KBDD_BLOCK
13  * No warranty, expressed or implied, is included with this software.  It is
14  * provided "AS IS" and no warranty of any kind including statutory or aspects
15  * relating to merchantability or fitness for any purpose is provided.  All
16  * intellectual property rights of others is maintained with the respective
17  * owners.  This software is not copyrighted and is intended for reference
18  * only.
19  * END_BLOCK
20  *
21  * $FreeBSD$
22  ******************************************************************************/
23 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
24               "elf32-littlearm")
25 OUTPUT_ARCH(arm)
26 ENTRY(start)
27 SECTIONS
28 {
29   /* Read-only sections, merged into text segment: */
30   . = 0;
31   .text      :
32   {
33     *(.text)
34     *(.text.*)
35     *(.stub)
36     /* .gnu.warning sections are handled specially by elf32.em.  */
37     *(.gnu.warning)
38     *(.gnu.linkonce.t.*)
39     *(.glue_7t) *(.glue_7)
40   }
41   .interp     : { *(.interp)    }
42   .hash          : { *(.hash)           }
43   .dynsym        : { *(.dynsym)         }
44   .dynstr        : { *(.dynstr)         }
45   .gnu.version   : { *(.gnu.version)    }
46   .gnu.version_d   : { *(.gnu.version_d)        }
47   .gnu.version_r   : { *(.gnu.version_r)        }
48   .rel.init      : { *(.rel.init)       }
49   .rela.init     : { *(.rela.init)      }
50   .rel.text      :
51     {
52       *(.rel.text)
53       *(.rel.text.*)
54       *(.rel.gnu.linkonce.t.*)
55     }
56   .rela.text     :
57     {
58       *(.rela.text)
59       *(.rela.text.*)
60       *(.rela.gnu.linkonce.t.*)
61     }
62   .rel.fini      : { *(.rel.fini)       }
63   .rela.fini     : { *(.rela.fini)      }
64   .rel.rodata    :
65     {
66       *(.rel.rodata)
67       *(.rel.rodata.*)
68       *(.rel.gnu.linkonce.r.*)
69     }
70   .rela.rodata   :
71     {
72       *(.rela.rodata)
73       *(.rela.rodata.*)
74       *(.rela.gnu.linkonce.r.*)
75     }
76   .rel.data      :
77     {
78       *(.rel.data)
79       *(.rel.data.*)
80       *(.rel.gnu.linkonce.d.*)
81     }
82   .rela.data     :
83     {
84       *(.rela.data)
85       *(.rela.data.*)
86       *(.rela.gnu.linkonce.d.*)
87     }
88   .rel.ctors     : { *(.rel.ctors)      }
89   .rela.ctors    : { *(.rela.ctors)     }
90   .rel.dtors     : { *(.rel.dtors)      }
91   .rela.dtors    : { *(.rela.dtors)     }
92   .rel.got       : { *(.rel.got)                }
93   .rela.got      : { *(.rela.got)               }
94   .rel.sdata     :
95     {
96       *(.rel.sdata)
97       *(.rel.sdata.*)
98       *(.rel.gnu.linkonce.s.*)
99     }
100   .rela.sdata     :
101     {
102       *(.rela.sdata)
103       *(.rela.sdata.*)
104       *(.rela.gnu.linkonce.s.*)
105     }
106   .rel.sbss      :
107     { 
108       *(.rel.sbss)
109       *(.rel.sbss.*)
110       *(.rel.gnu.linkonce.sb.*)
111     }
112   .rela.sbss     :
113     {
114       *(.rela.sbss)
115       *(.rela.sbss.*)
116       *(.rel.gnu.linkonce.sb.*)
117     }
118   .rel.sdata2    : 
119     { 
120       *(.rel.sdata2)
121       *(.rel.sdata2.*)
122       *(.rel.gnu.linkonce.s2.*)
123     }
124   .rela.sdata2   : 
125     {
126       *(.rela.sdata2)
127       *(.rela.sdata2.*)
128       *(.rela.gnu.linkonce.s2.*)
129     }
130   .rel.sbss2     : 
131     { 
132       *(.rel.sbss2)     
133       *(.rel.sbss2.*)
134       *(.rel.gnu.linkonce.sb2.*)
135     }
136   .rela.sbss2    : 
137     { 
138       *(.rela.sbss2)    
139       *(.rela.sbss2.*)
140       *(.rela.gnu.linkonce.sb2.*)
141     }
142   .rel.bss       : 
143     { 
144       *(.rel.bss)
145       *(.rel.bss.*)
146       *(.rel.gnu.linkonce.b.*)
147     }
148   .rela.bss      : 
149     { 
150       *(.rela.bss)
151       *(.rela.bss.*)
152       *(.rela.gnu.linkonce.b.*)
153     }
154   .rel.plt       : { *(.rel.plt)                }
155   .rela.plt      : { *(.rela.plt)               }
156   .init          : 
157   { 
158     KEEP (*(.init))
159   } =0
160   .plt      : { *(.plt) }
161   .fini      :
162   {
163     KEEP (*(.fini))
164   } =0
165   PROVIDE (__etext = .);
166   PROVIDE (_etext = .);
167   PROVIDE (etext = .);
168   .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) }
169   .rodata1   : { *(.rodata1) }
170   .sdata2   : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) }
171   .sbss2   : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
172   .data    :
173   {
174     __data_start = . ;
175     *(.data)
176     *(.data.*)
177     *(.gnu.linkonce.d.*)
178     SORT(CONSTRUCTORS)
179   }
180   .data1   : { *(.data1) }
181   . = 0x21200000;
182   .eh_frame : { KEEP (*(.eh_frame)) }
183   .gcc_except_table : { *(.gcc_except_table) }
184   .ctors   : 
185   {
186     /* gcc uses crtbegin.o to find the start of
187        the constructors, so we make sure it is
188        first.  Because this is a wildcard, it
189        doesn't matter if the user does not
190        actually link against crtbegin.o; the
191        linker won't look for a file to match a
192        wildcard.  The wildcard also means that it
193        doesn't matter which directory crtbegin.o
194        is in.  */
195     KEEP (*crtbegin.o(.ctors))
196     /* We don't want to include the .ctor section from
197        from the crtend.o file until after the sorted ctors.
198        The .ctor section from the crtend file contains the
199        end of ctors marker and it must be last */
200     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
201     KEEP (*(SORT(.ctors.*)))
202     KEEP (*(.ctors))
203   }
204    .dtors         :
205   {
206     KEEP (*crtbegin.o(.dtors))
207     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
208     KEEP (*(SORT(.dtors.*)))
209     KEEP (*(.dtors))
210   }
211   .got            : { *(.got.plt) *(.got) }
212   .dynamic       : { *(.dynamic) }
213   /* We want the small data sections together, so single-instruction offsets
214      can access them all, and initialized data all before uninitialized, so
215      we can shorten the on-disk segment size.  */
216   .sdata     : 
217   {
218     *(.sdata) 
219     *(.sdata.*)
220     *(.gnu.linkonce.s.*)
221   }
222   _edata = .;
223   PROVIDE (edata = .);
224   __bss_start = .;
225   __bss_start__ = .;
226   .sbss      :
227   {
228     PROVIDE (__sbss_start = .);
229     PROVIDE (___sbss_start = .);
230     *(.dynsbss)
231     *(.sbss)
232     *(.sbss.*)
233     *(.gnu.linkonce.sb.*)
234     *(.scommon)
235     PROVIDE (__sbss_end = .);
236     PROVIDE (___sbss_end = .);
237   }
238   .bss       :
239   {
240    *(.dynbss)
241    *(.bss)
242    *(.bss.*)
243    *(.gnu.linkonce.b.*)
244    *(COMMON)
245    /* Align here to ensure that the .bss section occupies space up to
246       _end.  Align after .bss to ensure correct alignment even if the
247       .bss section disappears because there are no input sections.  */
248    . = ALIGN(32 / 8);
249   }
250   . = ALIGN(32 / 8);
251   _end = .;
252   _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
253   PROVIDE (end = .);
254   /* Stabs debugging sections.  */
255   .stab 0 : { *(.stab) }
256   .stabstr 0 : { *(.stabstr) }
257   .stab.excl 0 : { *(.stab.excl) }
258   .stab.exclstr 0 : { *(.stab.exclstr) }
259   .stab.index 0 : { *(.stab.index) }
260   .stab.indexstr 0 : { *(.stab.indexstr) }
261   .comment 0 : { *(.comment) }
262   /* DWARF debug sections.
263      Symbols in the DWARF debugging sections are relative to the beginning
264      of the section so we begin them at 0.  */
265   /* DWARF 1 */
266   .debug          0 : { *(.debug) }
267   .line           0 : { *(.line) }
268   /* GNU DWARF 1 extensions */
269   .debug_srcinfo  0 : { *(.debug_srcinfo) }
270   .debug_sfnames  0 : { *(.debug_sfnames) }
271   /* DWARF 1.1 and DWARF 2 */
272   .debug_aranges  0 : { *(.debug_aranges) }
273   .debug_pubnames 0 : { *(.debug_pubnames) }
274   /* DWARF 2 */
275   .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
276   .debug_abbrev   0 : { *(.debug_abbrev) }
277   .debug_line     0 : { *(.debug_line) }
278   .debug_frame    0 : { *(.debug_frame) }
279   .debug_str      0 : { *(.debug_str) }
280   .debug_loc      0 : { *(.debug_loc) }
281   .debug_macinfo  0 : { *(.debug_macinfo) }
282   /* SGI/MIPS DWARF 2 extensions */
283   .debug_weaknames 0 : { *(.debug_weaknames) }
284   .debug_funcnames 0 : { *(.debug_funcnames) }
285   .debug_typenames 0 : { *(.debug_typenames) }
286   .debug_varnames  0 : { *(.debug_varnames) }
287   /* These must appear regardless of  .  */
288 }