source: rtems/bsps/powerpc/shared/start/linkcmds.base @ 5ed00353

Last change on this file since 5ed00353 was 5ed00353, checked in by Sebastian Huber <sebastian.huber@…>, on 07/14/22 at 12:41:03

bsps: Sort .noinit* sections

Sort the .noinit* input sections by name first, then by alignment if two
sections have the same name. This allows the placement of begin/end symbols to
initialize some areas with a special value.

Update #4678.

  • Property mode set to 100644
File size: 17.2 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/**
4 * @file
5 *
6 * @ingroup bsp_linker
7 *
8 * @brief Linker command base file.
9 */
10
11/*
12 * Copyright (c) 2011, 2016 embedded brains GmbH.  All rights reserved.
13 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions
16 * are met:
17 * 1. Redistributions of source code must retain the above copyright
18 *    notice, this list of conditions and the following disclaimer.
19 * 2. Redistributions in binary form must reproduce the above copyright
20 *    notice, this list of conditions and the following disclaimer in the
21 *    documentation and/or other materials provided with the distribution.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGE.
34 */
35
36ENTRY (_start)
37STARTUP (start.o)
38
39/*
40 * The upper layer linker command file may optionally define the symbol
41 * bsp_section_small_data_area_size.  By default, the small data area is
42 * defined by the .sdata and .sbss input sections.  Define
43 * bsp_section_small_data_area_size, if you want to make space available for
44 * dynamically loaded libraries (libdl).  Small memory targets which do not use
45 * libdl, should not define this symbol.
46 */
47
48/*
49 * Global symbols that may be defined externally
50 */
51
52bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 1;
53bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1;
54bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1;
55
56MEMORY {
57        UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0
58}
59
60SECTIONS {
61        .start : ALIGN_WITH_INPUT {
62                bsp_section_start_begin = .;
63                KEEP (*(.bsp_start_text))
64                KEEP (*(.bsp_start_data))
65                bsp_section_start_end = .;
66        } > REGION_START AT > REGION_START
67        bsp_section_start_size = bsp_section_start_end - bsp_section_start_begin;
68
69        .xbarrier : ALIGN_WITH_INPUT {
70                . = ALIGN (bsp_section_xbarrier_align);
71        } > REGION_TEXT AT > REGION_TEXT
72
73        .text : ALIGN_WITH_INPUT {
74                bsp_section_text_begin = .;
75                *(SORT(.bsp_text*))
76                *(.text.unlikely .text.*_unlikely)
77                *(.text .stub .text.* .gnu.linkonce.t.*)
78                *(.gnu.warning)
79                *(.sfpr .glink)
80        } > REGION_TEXT AT > REGION_TEXT_LOAD
81        .init : ALIGN_WITH_INPUT {
82                KEEP (*(.init))
83        } > REGION_TEXT AT > REGION_TEXT_LOAD
84        .fini : ALIGN_WITH_INPUT {
85                PROVIDE (_fini = .);
86                KEEP (*(.fini))
87                bsp_section_text_end = .;
88        } > REGION_TEXT AT > REGION_TEXT_LOAD
89        bsp_section_text_size = bsp_section_text_end - bsp_section_text_begin;
90        bsp_section_text_load_begin = LOADADDR (.text);
91        bsp_section_text_load_end = bsp_section_text_load_begin + bsp_section_text_size;
92
93        .fast_text : ALIGN_WITH_INPUT {
94                bsp_section_fast_text_begin = .;
95                *(.bsp_fast_text)
96                bsp_section_fast_text_end = .;
97        } > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
98        bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
99        bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
100        bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
101
102        .robarrier : ALIGN_WITH_INPUT {
103                . = ALIGN (bsp_section_robarrier_align);
104        } > REGION_RODATA AT > REGION_RODATA
105
106        .rodata : ALIGN_WITH_INPUT {
107                bsp_section_rodata_begin = .;
108                *(SORT(.bsp_rodata*))
109                *(.rodata .rodata.* .gnu.linkonce.r.*)
110        } > REGION_RODATA AT > REGION_RODATA_LOAD
111        .rodata1 : ALIGN_WITH_INPUT {
112                *(.rodata1)
113        } > REGION_RODATA AT > REGION_RODATA_LOAD
114        .sdata2 : ALIGN_WITH_INPUT {
115                PROVIDE (_SDA2_BASE_ = 32768);
116                *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
117        } > REGION_RODATA AT > REGION_RODATA_LOAD
118        .sbss2 : ALIGN_WITH_INPUT {
119                *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
120        } > REGION_RODATA AT > REGION_RODATA_LOAD
121        .eh_frame_hdr : ALIGN_WITH_INPUT {
122                *(.eh_frame_hdr)
123        } > REGION_RODATA AT > REGION_RODATA_LOAD
124        .eh_frame : ALIGN_WITH_INPUT {
125                KEEP (*(.eh_frame))
126        } > REGION_RODATA AT > REGION_RODATA_LOAD
127        .gcc_except_table : ALIGN_WITH_INPUT {
128                *(.gcc_except_table .gcc_except_table.*)
129        } > REGION_RODATA AT > REGION_RODATA_LOAD
130        .tdata : ALIGN_WITH_INPUT {
131                _TLS_Data_begin = .;
132                *(.tdata .tdata.* .gnu.linkonce.td.*)
133                _TLS_Data_end = .;
134        } > REGION_RODATA AT > REGION_RODATA_LOAD
135        .tbss : ALIGN_WITH_INPUT {
136                _TLS_BSS_begin = .;
137                *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
138                _TLS_BSS_end = .;
139        } > REGION_RODATA AT > REGION_RODATA_LOAD
140        _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
141        _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
142        _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
143        _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
144        _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
145        _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
146        .preinit_array : ALIGN_WITH_INPUT {
147                PROVIDE_HIDDEN (__preinit_array_start = .);
148                KEEP (*(.preinit_array))
149                PROVIDE_HIDDEN (__preinit_array_end = .);
150        } > REGION_RODATA AT > REGION_RODATA_LOAD
151        .init_array : ALIGN_WITH_INPUT {
152                PROVIDE_HIDDEN (__init_array_start = .);
153                KEEP (*(SORT(.init_array.*)))
154                KEEP (*(.init_array))
155                PROVIDE_HIDDEN (__init_array_end = .);
156        } > REGION_RODATA AT > REGION_RODATA_LOAD
157        .fini_array : ALIGN_WITH_INPUT {
158                PROVIDE_HIDDEN (__fini_array_start = .);
159                KEEP (*(SORT(.fini_array.*)))
160                KEEP (*(.fini_array))
161                PROVIDE_HIDDEN (__fini_array_end = .);
162        } > REGION_RODATA AT > REGION_RODATA_LOAD
163        .ctors : ALIGN_WITH_INPUT {
164                KEEP (*ecrti.o(.ctors))
165                KEEP (*crtbegin.o(.ctors))
166                KEEP (*crtbegin?.o(.ctors))
167                KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *ecrtn.o) .ctors))
168                KEEP (*(SORT(.ctors.*)))
169                KEEP (*(.ctors))
170        } > REGION_RODATA AT > REGION_RODATA_LOAD
171        .dtors : ALIGN_WITH_INPUT {
172                KEEP (*ecrti.o(.dtors))
173                KEEP (*crtbegin.o(.dtors))
174                KEEP (*crtbegin?.o(.dtors))
175                KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *ecrtn.o) .dtors))
176                KEEP (*(SORT(.dtors.*)))
177                KEEP (*(.dtors))
178        } > REGION_RODATA AT > REGION_RODATA_LOAD
179        .jcr : ALIGN_WITH_INPUT {
180                KEEP (*(.jcr))
181        } > REGION_RODATA AT > REGION_RODATA_LOAD
182        .data.rel.ro : ALIGN_WITH_INPUT {
183                *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*)
184        } > REGION_RODATA AT > REGION_RODATA_LOAD
185        .fixup : ALIGN_WITH_INPUT {
186                *(.fixup)
187        } > REGION_RODATA AT > REGION_RODATA_LOAD
188        .dynamic : ALIGN_WITH_INPUT {
189                *(.dynamic)
190        } > REGION_RODATA AT > REGION_RODATA_LOAD
191        .opd : ALIGN_WITH_INPUT {
192                KEEP (*(.opd))
193        } > REGION_RODATA AT > REGION_RODATA_LOAD
194        .tm_clone_table : ALIGN_WITH_INPUT {
195                *(.tm_clone_table)
196        } > REGION_RODATA AT > REGION_RODATA_LOAD
197        .toc1 : ALIGN_WITH_INPUT {
198                *(.toc1)
199        } > REGION_RODATA AT > REGION_RODATA_LOAD
200        .branch_lt : ALIGN_WITH_INPUT {
201                *(.branch_lt)
202        } > REGION_RODATA AT > REGION_RODATA_LOAD
203        .got1 : ALIGN_WITH_INPUT {
204                *(.got1)
205        } > REGION_RODATA AT > REGION_RODATA_LOAD
206        .got2 : ALIGN_WITH_INPUT {
207                *(.got2)
208        } > REGION_RODATA AT > REGION_RODATA_LOAD
209        .got : ALIGN_WITH_INPUT {
210                *(.got)
211        } > REGION_RODATA AT > REGION_RODATA_LOAD
212        .toc : ALIGN_WITH_INPUT {
213                *(.toc)
214        } > REGION_RODATA AT > REGION_RODATA_LOAD
215        .plt : ALIGN_WITH_INPUT {
216                *(.plt)
217        } > REGION_RODATA AT > REGION_RODATA_LOAD
218        .iplt : ALIGN_WITH_INPUT {
219                *(.iplt)
220        } > REGION_RODATA AT > REGION_RODATA_LOAD
221        .interp : ALIGN_WITH_INPUT {
222                *(.interp)
223        } > REGION_RODATA AT > REGION_RODATA_LOAD
224        .note.gnu.build-id : ALIGN_WITH_INPUT {
225                *(.note.gnu.build-id)
226        } > REGION_RODATA AT > REGION_RODATA_LOAD
227        .hash : ALIGN_WITH_INPUT {
228                *(.hash)
229        } > REGION_RODATA AT > REGION_RODATA_LOAD
230        .gnu.hash : ALIGN_WITH_INPUT {
231                *(.gnu.hash)
232        } > REGION_RODATA AT > REGION_RODATA_LOAD
233        .dynsym : ALIGN_WITH_INPUT {
234                *(.dynsym)
235        } > REGION_RODATA AT > REGION_RODATA_LOAD
236        .dynstr : ALIGN_WITH_INPUT {
237                *(.dynstr)
238        } > REGION_RODATA AT > REGION_RODATA_LOAD
239        .gnu.version : ALIGN_WITH_INPUT {
240                *(.gnu.version)
241        } > REGION_RODATA AT > REGION_RODATA_LOAD
242        .gnu.version_d : ALIGN_WITH_INPUT {
243                *(.gnu.version_d)
244        } > REGION_RODATA AT > REGION_RODATA_LOAD
245        .gnu.version_r : ALIGN_WITH_INPUT {
246                *(.gnu.version_r)
247        } > REGION_RODATA AT > REGION_RODATA_LOAD
248        .rela.dyn : ALIGN_WITH_INPUT {
249                *(.rela.init)
250                *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
251                *(.rela.fini)
252                *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
253                *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
254                *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
255                *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
256                *(.rela.ctors)
257                *(.rela.dtors)
258                *(.rela.got)
259                *(.rela.got1)
260                *(.rela.got2)
261                *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
262                *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
263                *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
264                *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
265                *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
266                *(.rela.rtemsroset*)
267                *(.rela.rtemsrwset*)
268                PROVIDE_HIDDEN (__rel_iplt_start = .);
269                PROVIDE_HIDDEN (__rel_iplt_end = .);
270                PROVIDE_HIDDEN (__rela_iplt_start = .);
271                *(.rela.iplt)
272                PROVIDE_HIDDEN (__rela_iplt_end = .);
273        } > REGION_RODATA AT > REGION_RODATA_LOAD
274        .rela.plt : ALIGN_WITH_INPUT {
275                *(.rela.plt)
276        } > REGION_RODATA AT > REGION_RODATA_LOAD
277        .rtemsroset : ALIGN_WITH_INPUT {
278                /* Special FreeBSD linker set sections */
279                __start_set_sysctl_set = .;
280                *(set_sysctl_*);
281                __stop_set_sysctl_set = .;
282                *(set_domain_*);
283                *(set_pseudo_*);
284
285                KEEP (*(SORT(.rtemsroset.*)))
286                bsp_section_rodata_end = .;
287        } > REGION_RODATA AT > REGION_RODATA_LOAD
288        bsp_section_rodata_size = bsp_section_rodata_end - bsp_section_rodata_begin;
289        bsp_section_rodata_load_begin = LOADADDR (.rodata);
290        bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
291
292        .rwbarrier : ALIGN_WITH_INPUT {
293                . = ALIGN (bsp_section_rwbarrier_align);
294        } > REGION_DATA AT > REGION_DATA
295
296        .fast_data : ALIGN_WITH_INPUT {
297                bsp_section_fast_data_begin = .;
298                *(SORT(.bsp_fast_data*))
299                bsp_section_fast_data_end = .;
300        } > REGION_FAST_DATA AT > REGION_FAST_DATA_LOAD
301        bsp_section_fast_data_size = bsp_section_fast_data_end - bsp_section_fast_data_begin;
302        bsp_section_fast_data_load_begin = LOADADDR (.fast_data);
303        bsp_section_fast_data_load_end = bsp_section_fast_data_load_begin + bsp_section_fast_data_size;
304
305        .data : ALIGN_WITH_INPUT {
306                bsp_section_data_begin = .;
307                *(SORT(.bsp_data*))
308                *(.data .data.* .gnu.linkonce.d.*)
309                SORT(CONSTRUCTORS)
310        } > REGION_DATA AT > REGION_DATA_LOAD
311        .data1 : ALIGN_WITH_INPUT {
312                *(.data1)
313        } > REGION_DATA AT > REGION_DATA_LOAD
314        .rtemsrwset : ALIGN_WITH_INPUT {
315                KEEP (*(SORT(.rtemsrwset.*)))
316        } > REGION_DATA AT > REGION_DATA_LOAD
317        .sdata : ALIGN_WITH_INPUT {
318                bsp_section_sdata_begin = .;
319                PROVIDE (_SDA_BASE_ = 32768);
320                *(.sdata .sdata.* .gnu.linkonce.s.*)
321                bsp_section_sdata_end = .;
322                bsp_section_data_end = .;
323        } > REGION_DATA AT > REGION_DATA_LOAD
324        bsp_section_sdata_size = bsp_section_sdata_end - bsp_section_sdata_begin;
325        bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
326        bsp_section_data_load_begin = LOADADDR (.data);
327        bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
328
329        .sbss : ALIGN_WITH_INPUT {
330                bsp_section_sbss_begin = .;
331                *(.dynsbss)
332                *(.sbss .sbss.* .gnu.linkonce.sb.*)
333                *(.scommon)
334                bsp_section_sbss_end = .;
335                bsp_section_sdata_libdl_begin = .;
336                . = DEFINED(bsp_section_small_data_area_size) ?
337                        bsp_section_sdata_begin + bsp_section_small_data_area_size : .;
338                bsp_section_sdata_libdl_end = .;
339        } > REGION_DATA AT > REGION_DATA
340        bsp_section_sbss_size = bsp_section_sbss_end - bsp_section_sbss_begin;
341        bsp_section_sdata_libdl_size = bsp_section_sdata_libdl_end - bsp_section_sdata_libdl_begin;
342
343        .bss : ALIGN_WITH_INPUT {
344                bsp_section_bss_begin = .;
345                *(.dynbss)
346                *(.bss .bss.* .gnu.linkonce.b.*)
347                *(COMMON)
348                bsp_section_bss_end = .;
349        } > REGION_BSS AT > REGION_BSS
350        bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
351
352        .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT {
353                bsp_section_rtemsstack_begin = .;
354                *(SORT(.rtemsstack.*))
355                bsp_section_rtemsstack_end = .;
356        } > REGION_RTEMSSTACK AT > REGION_RTEMSSTACK
357        bsp_section_rtemsstack_size = bsp_section_rtemsstack_end - bsp_section_rtemsstack_begin;
358
359        .noinit (NOLOAD) : ALIGN_WITH_INPUT {
360                bsp_section_noinit_begin = .;
361                *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
362                bsp_section_noinit_end = .;
363        } > REGION_WORK AT > REGION_WORK
364        bsp_section_noinit_size = bsp_section_noinit_end - bsp_section_noinit_begin;
365
366        .work : ALIGN_WITH_INPUT {
367                /*
368                 * The work section will occupy the remaining REGION_WORK region and
369                 * contains the RTEMS work space and heap.
370                 */
371                bsp_section_work_begin = .;
372                . += ORIGIN (REGION_WORK) + LENGTH (REGION_WORK) - ABSOLUTE (.);
373                bsp_section_work_end = .;
374        } > REGION_WORK AT > REGION_WORK
375        bsp_section_work_size = bsp_section_work_end - bsp_section_work_begin;
376
377        .stack : ALIGN_WITH_INPUT {
378                /*
379                 * The stack section will occupy the remaining REGION_STACK region and may
380                 * contain the task stacks.  Depending on the region distribution this
381                 * section may be of zero size.
382                 */
383                bsp_section_stack_begin = .;
384                . += ORIGIN (REGION_STACK) + LENGTH (REGION_STACK) - ABSOLUTE (.);
385                bsp_section_stack_end = .;
386        } > REGION_STACK AT > REGION_STACK
387        bsp_section_stack_size = bsp_section_stack_end - bsp_section_stack_begin;
388
389        .nocache : ALIGN_WITH_INPUT {
390                bsp_section_nocache_begin = .;
391                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_nocache*)))
392                bsp_section_nocache_end = .;
393        } > REGION_NOCACHE AT > REGION_NOCACHE_LOAD
394        bsp_section_nocache_size = bsp_section_nocache_end - bsp_section_nocache_begin;
395        bsp_section_nocache_load_begin = LOADADDR (.nocache);
396        bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
397
398        .nocachenoload (NOLOAD) : ALIGN_WITH_INPUT {
399                bsp_section_nocachenoload_begin = .;
400                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_noload_nocache*)))
401                bsp_section_nocacheheap_begin = .;
402                . += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.);
403                bsp_section_nocacheheap_end = .;
404                bsp_section_nocachenoload_end = .;
405        } > REGION_NOCACHE AT > REGION_NOCACHE
406        bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin;
407        bsp_section_nocachenoload_size = bsp_section_nocachenoload_end - bsp_section_nocachenoload_begin;
408
409        .nvram (NOLOAD) : ALIGN_WITH_INPUT {
410                bsp_section_nvram_begin = .;
411                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_nvram*)))
412                bsp_section_nvram_end = .;
413        } > REGION_NVRAM AT > REGION_NVRAM
414        bsp_section_nvram_size = bsp_section_nvram_end - bsp_section_nvram_begin;
415
416        /* FIXME */
417        RamBase = ORIGIN (REGION_WORK);
418        RamSize = LENGTH (REGION_WORK);
419        RamEnd = RamBase + RamSize;
420        WorkAreaBase = bsp_section_work_begin;
421        HeapSize = 0;
422
423        /* Stabs debugging sections.  */
424        .stab          0 : { *(.stab) }
425        .stabstr       0 : { *(.stabstr) }
426        .stab.excl     0 : { *(.stab.excl) }
427        .stab.exclstr  0 : { *(.stab.exclstr) }
428        .stab.index    0 : { *(.stab.index) }
429        .stab.indexstr 0 : { *(.stab.indexstr) }
430        .comment       0 : { *(.comment) }
431        /* DWARF debug sections.
432           Symbols in the DWARF debugging sections are relative to the beginning
433           of the section so we begin them at 0.  */
434        /* DWARF 1.  */
435        .debug          0 : { *(.debug) }
436        .line           0 : { *(.line) }
437        /* GNU DWARF 1 extensions.  */
438        .debug_srcinfo  0 : { *(.debug_srcinfo) }
439        .debug_sfnames  0 : { *(.debug_sfnames) }
440        /* DWARF 1.1 and DWARF 2.  */
441        .debug_aranges  0 : { *(.debug_aranges) }
442        .debug_pubnames 0 : { *(.debug_pubnames) }
443        /* DWARF 2.  */
444        .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
445        .debug_abbrev   0 : { *(.debug_abbrev) }
446        .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
447        .debug_frame    0 : { *(.debug_frame) }
448        .debug_str      0 : { *(.debug_str) }
449        .debug_loc      0 : { *(.debug_loc) }
450        .debug_macinfo  0 : { *(.debug_macinfo) }
451        /* SGI/MIPS DWARF 2 extensions.  */
452        .debug_weaknames 0 : { *(.debug_weaknames) }
453        .debug_funcnames 0 : { *(.debug_funcnames) }
454        .debug_typenames 0 : { *(.debug_typenames) }
455        .debug_varnames  0 : { *(.debug_varnames) }
456        /* DWARF 3.  */
457        .debug_pubtypes 0 : { *(.debug_pubtypes) }
458        .debug_ranges   0 : { *(.debug_ranges) }
459        /* DWARF 5.  */
460        .debug_addr     0 : { *(.debug_addr) }
461        .debug_line_str 0 : { *(.debug_line_str) }
462        .debug_loclists 0 : { *(.debug_loclists) }
463        .debug_macro    0 : { *(.debug_macro) }
464        .debug_names    0 : { *(.debug_names) }
465        .debug_rnglists 0 : { *(.debug_rnglists) }
466        .debug_str_offsets 0 : { *(.debug_str_offsets) }
467        .debug_sup      0 : { *(.debug_sup) }
468        .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
469        .PPC.EMB.apuinfo 0 : { *(.PPC.EMB.apuinfo) }
470        /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
471
472        /*
473         * This is a RTEMS specific section to catch all unexpected input
474         * sections.  In case you get an error like
475         *   "section `.unexpected_sections' will not fit in region
476         *   `UNEXPECTED_SECTIONS'"
477         * you have to figure out the offending input section and add it to the
478         * appropriate output section definition above.
479         */
480        .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS
481}
Note: See TracBrowser for help on using the repository browser.