source: rtems/bsps/arm/shared/start/linkcmds.base @ 21a36ed1

Last change on this file since 21a36ed1 was 21a36ed1, checked in by Sebastian Huber <sebastian.huber@…>, on 08/12/22 at 07:44:07

bsps: Fix .data.rel.ro placement

The .data.rel.ro* linker input section pattern accidentally matches with
writeable data those symbol name starts with "ro".

Close #4701.

  • Property mode set to 100644
File size: 16.3 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup bsp_linker
5 *
6 * @brief Linker command base file.
7 */
8
9/*
10 * Copyright (c) 2008, 2016 embedded brains GmbH.  All rights reserved.
11 *
12 * The license and distribution terms for this file may be
13 * found in the file LICENSE in this distribution or at
14 * http://www.rtems.org/license/LICENSE.
15 */
16
17OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
18
19OUTPUT_ARCH (arm)
20
21ENTRY (_start)
22STARTUP (start.o)
23
24/*
25 * Global symbols that may be defined externally
26 */
27
28bsp_vector_table_size = DEFINED (bsp_vector_table_size) ? bsp_vector_table_size : 64;
29
30bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 1;
31bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1;
32bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1;
33
34bsp_stack_align = DEFINED (bsp_stack_align) ? bsp_stack_align : 8;
35
36bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 0;
37bsp_stack_abt_size = ALIGN (bsp_stack_abt_size, bsp_stack_align);
38
39bsp_stack_fiq_size = DEFINED (bsp_stack_fiq_size) ? bsp_stack_fiq_size : 0;
40bsp_stack_fiq_size = ALIGN (bsp_stack_fiq_size, bsp_stack_align);
41
42bsp_stack_und_size = DEFINED (bsp_stack_und_size) ? bsp_stack_und_size : 0;
43bsp_stack_und_size = ALIGN (bsp_stack_und_size, bsp_stack_align);
44
45bsp_stack_hyp_size = DEFINED (bsp_stack_hyp_size) ? bsp_stack_hyp_size : 0;
46bsp_stack_hyp_size = ALIGN (bsp_stack_hyp_size, bsp_stack_align);
47
48MEMORY {
49        UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0
50}
51
52SECTIONS {
53        .start : ALIGN_WITH_INPUT {
54                bsp_section_start_begin = .;
55                KEEP (*(.bsp_start_text))
56                KEEP (*(.bsp_start_data))
57                bsp_section_start_end = .;
58        } > REGION_START AT > REGION_START
59        bsp_section_start_size = bsp_section_start_end - bsp_section_start_begin;
60
61        .xbarrier : ALIGN_WITH_INPUT {
62                . = ALIGN (bsp_section_xbarrier_align);
63        } > REGION_VECTOR AT > REGION_VECTOR
64
65        .text : ALIGN_WITH_INPUT {
66                bsp_section_text_begin = .;
67                *(.text.unlikely .text.*_unlikely)
68                *(.text .stub .text.* .gnu.linkonce.t.*)
69                /* .gnu.warning sections are handled specially by elf32.em.  */
70                *(.gnu.warning)
71                *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
72        } > REGION_TEXT AT > REGION_TEXT_LOAD
73        .init : ALIGN_WITH_INPUT {
74                KEEP (*(.init))
75        } > REGION_TEXT AT > REGION_TEXT_LOAD
76        .fini : ALIGN_WITH_INPUT {
77                KEEP (*(.fini))
78
79                /*
80                 * If requested, align the size of the combined start and text
81                 * section to the next power of two to meet MPU region
82                 * alignment requirements.
83                 */
84                . = DEFINED (bsp_align_text_and_rodata_end_to_power_of_2) ?
85                    bsp_section_start_begin
86                    + ALIGN (. - bsp_section_start_begin,
87                    1 << LOG2CEIL (. - bsp_section_start_begin)) : .;
88
89                bsp_section_text_end = .;
90        } > REGION_TEXT AT > REGION_TEXT_LOAD
91        bsp_section_text_size = bsp_section_text_end - bsp_section_text_begin;
92        bsp_section_text_load_begin = LOADADDR (.text);
93        bsp_section_text_load_end = bsp_section_text_load_begin + bsp_section_text_size;
94
95        .robarrier : ALIGN_WITH_INPUT {
96                . = ALIGN (bsp_section_robarrier_align);
97        } > REGION_RODATA AT > REGION_RODATA
98
99        .rodata : ALIGN_WITH_INPUT {
100                bsp_section_rodata_begin = .;
101                *(.rodata .rodata.* .gnu.linkonce.r.*)
102        } > REGION_RODATA AT > REGION_RODATA_LOAD
103        .rodata1 : ALIGN_WITH_INPUT {
104                *(.rodata1)
105        } > REGION_RODATA AT > REGION_RODATA_LOAD
106        .ARM.extab : ALIGN_WITH_INPUT {
107                *(.ARM.extab* .gnu.linkonce.armextab.*)
108        } > REGION_RODATA AT > REGION_RODATA_LOAD
109        .ARM.exidx : ALIGN_WITH_INPUT {
110                __exidx_start = .;
111                *(.ARM.exidx* .gnu.linkonce.armexidx.*)
112                __exidx_end = .;
113        } > REGION_RODATA AT > REGION_RODATA_LOAD
114        .eh_frame : ALIGN_WITH_INPUT {
115                KEEP (*(.eh_frame))
116        } > REGION_RODATA AT > REGION_RODATA_LOAD
117        .gcc_except_table : ALIGN_WITH_INPUT {
118                *(.gcc_except_table .gcc_except_table.*)
119        } > REGION_RODATA AT > REGION_RODATA_LOAD
120        .tdata : ALIGN_WITH_INPUT {
121                _TLS_Data_begin = .;
122                *(.tdata .tdata.* .gnu.linkonce.td.*)
123                _TLS_Data_end = .;
124        } > REGION_RODATA AT > REGION_RODATA_LOAD
125        .tbss : ALIGN_WITH_INPUT {
126                _TLS_BSS_begin = .;
127                *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
128                _TLS_BSS_end = .;
129        } > REGION_RODATA AT > REGION_RODATA_LOAD
130        _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
131        _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
132        _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
133        _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
134        _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
135        _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
136        .preinit_array : ALIGN_WITH_INPUT {
137                PROVIDE_HIDDEN (__preinit_array_start = .);
138                KEEP (*(.preinit_array))
139                PROVIDE_HIDDEN (__preinit_array_end = .);
140        } > REGION_RODATA AT > REGION_RODATA_LOAD
141        .init_array : ALIGN_WITH_INPUT {
142                PROVIDE_HIDDEN (__init_array_start = .);
143                KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
144                KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
145                PROVIDE_HIDDEN (__init_array_end = .);
146        } > REGION_RODATA AT > REGION_RODATA_LOAD
147        .fini_array : ALIGN_WITH_INPUT {
148                PROVIDE_HIDDEN (__fini_array_start = .);
149                KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
150                KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
151                PROVIDE_HIDDEN (__fini_array_end = .);
152        } > REGION_RODATA AT > REGION_RODATA_LOAD
153        .data.rel.ro : ALIGN_WITH_INPUT {
154                *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*)
155                *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*)
156        } > REGION_RODATA AT > REGION_RODATA_LOAD
157        .jcr : ALIGN_WITH_INPUT {
158                KEEP (*(.jcr))
159        } > REGION_RODATA AT > REGION_RODATA_LOAD
160        .interp : ALIGN_WITH_INPUT {
161                *(.interp)
162        } > REGION_RODATA AT > REGION_RODATA_LOAD
163        .note.gnu.build-id : ALIGN_WITH_INPUT {
164                *(.note.gnu.build-id)
165        } > REGION_RODATA AT > REGION_RODATA_LOAD
166        .hash : ALIGN_WITH_INPUT {
167                *(.hash)
168        } > REGION_RODATA AT > REGION_RODATA_LOAD
169        .gnu.hash : ALIGN_WITH_INPUT {
170                *(.gnu.hash)
171        } > REGION_RODATA AT > REGION_RODATA_LOAD
172        .dynsym : ALIGN_WITH_INPUT {
173                *(.dynsym)
174        } > REGION_RODATA AT > REGION_RODATA_LOAD
175        .dynstr : ALIGN_WITH_INPUT {
176                *(.dynstr)
177        } > REGION_RODATA AT > REGION_RODATA_LOAD
178        .gnu.version : ALIGN_WITH_INPUT {
179                *(.gnu.version)
180        } > REGION_RODATA AT > REGION_RODATA_LOAD
181        .gnu.version_d : ALIGN_WITH_INPUT {
182                *(.gnu.version_d)
183        } > REGION_RODATA AT > REGION_RODATA_LOAD
184        .gnu.version_r : ALIGN_WITH_INPUT {
185                *(.gnu.version_r)
186        } > REGION_RODATA AT > REGION_RODATA_LOAD
187        .rel.dyn : ALIGN_WITH_INPUT {
188                *(.rel.init)
189                *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
190                *(.rel.fini)
191                *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
192                *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
193                *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
194                *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
195                *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
196                *(.rel.ctors)
197                *(.rel.dtors)
198                *(.rel.got)
199                *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
200                PROVIDE_HIDDEN (__rel_iplt_start = .);
201                *(.rel.iplt)
202                PROVIDE_HIDDEN (__rel_iplt_end = .);
203                PROVIDE_HIDDEN (__rela_iplt_start = .);
204                PROVIDE_HIDDEN (__rela_iplt_end = .);
205        } > REGION_RODATA AT > REGION_RODATA_LOAD
206        .rela.dyn : ALIGN_WITH_INPUT {
207                *(.rela.init)
208                *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
209                *(.rela.fini)
210                *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
211                *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
212                *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
213                *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
214                *(.rela.ctors)
215                *(.rela.dtors)
216                *(.rela.got)
217                *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
218                *(.rela.rtemsroset*)
219                *(.rela.rtemsrwset*)
220                PROVIDE_HIDDEN (__rel_iplt_start = .);
221                PROVIDE_HIDDEN (__rel_iplt_end = .);
222                PROVIDE_HIDDEN (__rela_iplt_start = .);
223                *(.rela.iplt)
224                PROVIDE_HIDDEN (__rela_iplt_end = .);
225        } > REGION_RODATA AT > REGION_RODATA_LOAD
226        .rel.plt : ALIGN_WITH_INPUT {
227                *(.rel.plt)
228        } > REGION_RODATA AT > REGION_RODATA_LOAD
229        .rela.plt : ALIGN_WITH_INPUT {
230                *(.rela.plt)
231        } > REGION_RODATA AT > REGION_RODATA_LOAD
232        .plt : ALIGN_WITH_INPUT {
233                *(.plt)
234        } > REGION_RODATA AT > REGION_RODATA_LOAD
235        .iplt : ALIGN_WITH_INPUT {
236                *(.iplt)
237        } > REGION_RODATA AT > REGION_RODATA_LOAD
238        .dynamic : ALIGN_WITH_INPUT {
239                *(.dynamic)
240        } > REGION_RODATA AT > REGION_RODATA_LOAD
241        .tm_clone_table : ALIGN_WITH_INPUT {
242                *(.tm_clone_table)
243        } > REGION_RODATA AT > REGION_RODATA_LOAD
244        .got : ALIGN_WITH_INPUT {
245                *(.got.plt) *(.igot.plt) *(.got) *(.igot)
246        } > REGION_RODATA AT > REGION_RODATA_LOAD
247        .rtemsroset : ALIGN_WITH_INPUT {
248                /* Special FreeBSD linker set sections */
249                __start_set_sysctl_set = .;
250                *(set_sysctl_*);
251                __stop_set_sysctl_set = .;
252                *(set_domain_*);
253                *(set_pseudo_*);
254
255                KEEP (*(SORT(.rtemsroset.*)))
256
257                /*
258                 * If requested, align the size of the rodata section to the
259                 * next power of two to meet MPU region alignment requirements.
260                 */
261                . = DEFINED (bsp_align_text_and_rodata_end_to_power_of_2) ?
262                    bsp_section_rodata_begin
263                    + ALIGN (. - bsp_section_rodata_begin,
264                    1 << LOG2CEIL (. - bsp_section_rodata_begin)) : .;
265
266                bsp_section_rodata_end = .;
267        } > REGION_RODATA AT > REGION_RODATA_LOAD
268        bsp_section_rodata_size = bsp_section_rodata_end - bsp_section_rodata_begin;
269        bsp_section_rodata_load_begin = LOADADDR (.rodata);
270        bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
271
272        .rwbarrier : ALIGN_WITH_INPUT {
273                . = ALIGN (bsp_section_rwbarrier_align);
274        } > REGION_DATA AT > REGION_DATA
275
276        .vector : ALIGN_WITH_INPUT {
277                bsp_section_vector_begin = .;
278                . = . + DEFINED (bsp_vector_table_in_start_section) ? 0 : bsp_vector_table_size;
279                bsp_section_vector_end = .;
280        } > REGION_VECTOR AT > REGION_VECTOR
281        bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_begin;
282        bsp_vector_table_begin = DEFINED (bsp_vector_table_in_start_section) ? bsp_section_start_begin : bsp_section_vector_begin;
283        bsp_vector_table_end = bsp_vector_table_begin + bsp_vector_table_size;
284
285        .fast_text : ALIGN_WITH_INPUT {
286                bsp_section_fast_text_begin = .;
287                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_fast_text*)))
288                bsp_section_fast_text_end = .;
289        } > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
290        bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
291        bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
292        bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
293
294        .fast_data : ALIGN_WITH_INPUT {
295                bsp_section_fast_data_begin = .;
296                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_fast_data*)))
297                bsp_section_fast_data_end = .;
298        } > REGION_FAST_DATA AT > REGION_FAST_DATA_LOAD
299        bsp_section_fast_data_size = bsp_section_fast_data_end - bsp_section_fast_data_begin;
300        bsp_section_fast_data_load_begin = LOADADDR (.fast_data);
301        bsp_section_fast_data_load_end = bsp_section_fast_data_load_begin + bsp_section_fast_data_size;
302
303        .data : ALIGN_WITH_INPUT {
304                bsp_section_data_begin = .;
305                *(.data .data.* .gnu.linkonce.d.*)
306                SORT(CONSTRUCTORS)
307        } > REGION_DATA AT > REGION_DATA_LOAD
308        .data1 : ALIGN_WITH_INPUT {
309                *(.data1)
310        } > REGION_DATA AT > REGION_DATA_LOAD
311        .rtemsrwset : ALIGN_WITH_INPUT {
312                KEEP (*(SORT(.rtemsrwset.*)))
313                bsp_section_data_end = .;
314        } > REGION_DATA AT > REGION_DATA_LOAD
315        bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
316        bsp_section_data_load_begin = LOADADDR (.data);
317        bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
318
319        .bss : ALIGN_WITH_INPUT {
320                bsp_section_bss_begin = .;
321                *(.dynbss)
322                *(.bss .bss.* .gnu.linkonce.b.*)
323                *(COMMON)
324                bsp_section_bss_end = .;
325        } > REGION_BSS AT > REGION_BSS
326        bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
327
328        .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT {
329                bsp_section_rtemsstack_begin = .;
330                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.rtemsstack*)))
331                bsp_section_rtemsstack_end = .;
332        } > REGION_STACK AT > REGION_STACK
333        bsp_section_rtemsstack_size = bsp_section_rtemsstack_end - bsp_section_rtemsstack_begin;
334
335        .noinit (NOLOAD) : ALIGN_WITH_INPUT {
336                bsp_section_noinit_begin = .;
337                *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
338                bsp_section_noinit_end = .;
339        } > REGION_WORK AT > REGION_WORK
340        bsp_section_noinit_size = bsp_section_noinit_end - bsp_section_noinit_begin;
341
342        .work : ALIGN_WITH_INPUT {
343                /*
344                 * The work section will occupy the remaining REGION_WORK region and
345                 * contains the RTEMS work space and heap.
346                 */
347                bsp_section_work_begin = .;
348                . += ORIGIN (REGION_WORK) + LENGTH (REGION_WORK) - ABSOLUTE (.);
349                bsp_section_work_end = .;
350        } > REGION_WORK AT > REGION_WORK
351        bsp_section_work_size = bsp_section_work_end - bsp_section_work_begin;
352
353        .stack : ALIGN_WITH_INPUT {
354                /*
355                 * The stack section will occupy the remaining REGION_STACK region and may
356                 * contain the task stacks.  Depending on the region distribution this
357                 * section may be of zero size.
358                 */
359                bsp_section_stack_begin = .;
360                . += ORIGIN (REGION_STACK) + LENGTH (REGION_STACK) - ABSOLUTE (.);
361                bsp_section_stack_end = .;
362        } > REGION_STACK AT > REGION_STACK
363        bsp_section_stack_size = bsp_section_stack_end - bsp_section_stack_begin;
364
365        .nocache : ALIGN_WITH_INPUT {
366                bsp_section_nocache_begin = .;
367                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_nocache*)))
368                bsp_section_nocache_end = .;
369        } > REGION_NOCACHE AT > REGION_NOCACHE_LOAD
370        bsp_section_nocache_size = bsp_section_nocache_end - bsp_section_nocache_begin;
371        bsp_section_nocache_load_begin = LOADADDR (.nocache);
372        bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
373
374        .nocachenoload (NOLOAD) : ALIGN_WITH_INPUT {
375                bsp_section_nocachenoload_begin = .;
376                *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_noload_nocache*)))
377                bsp_section_nocacheheap_begin = .;
378                . += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.);
379                bsp_section_nocacheheap_end = .;
380                bsp_section_nocachenoload_end = .;
381        } > REGION_NOCACHE AT > REGION_NOCACHE
382        bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin;
383        bsp_section_nocachenoload_size = bsp_section_nocachenoload_end - bsp_section_nocachenoload_begin;
384
385        /* FIXME */
386        RamBase = ORIGIN (REGION_WORK);
387        RamSize = LENGTH (REGION_WORK);
388        RamEnd = RamBase + RamSize;
389        WorkAreaBase = bsp_section_work_begin;
390        HeapSize = 0;
391
392        /* Stabs debugging sections.  */
393        .stab          0 : { *(.stab) }
394        .stabstr       0 : { *(.stabstr) }
395        .stab.excl     0 : { *(.stab.excl) }
396        .stab.exclstr  0 : { *(.stab.exclstr) }
397        .stab.index    0 : { *(.stab.index) }
398        .stab.indexstr 0 : { *(.stab.indexstr) }
399        .comment       0 : { *(.comment) }
400        /* DWARF debug sections.
401           Symbols in the DWARF debugging sections are relative to the beginning
402           of the section so we begin them at 0.  */
403        /* DWARF 1.  */
404        .debug          0 : { *(.debug) }
405        .line           0 : { *(.line) }
406        /* GNU DWARF 1 extensions.  */
407        .debug_srcinfo  0 : { *(.debug_srcinfo) }
408        .debug_sfnames  0 : { *(.debug_sfnames) }
409        /* DWARF 1.1 and DWARF 2.  */
410        .debug_aranges  0 : { *(.debug_aranges) }
411        .debug_pubnames 0 : { *(.debug_pubnames) }
412        /* DWARF 2.  */
413        .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
414        .debug_abbrev   0 : { *(.debug_abbrev) }
415        .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
416        .debug_frame    0 : { *(.debug_frame) }
417        .debug_str      0 : { *(.debug_str) }
418        .debug_loc      0 : { *(.debug_loc) }
419        .debug_macinfo  0 : { *(.debug_macinfo) }
420        /* SGI/MIPS DWARF 2 extensions.  */
421        .debug_weaknames 0 : { *(.debug_weaknames) }
422        .debug_funcnames 0 : { *(.debug_funcnames) }
423        .debug_typenames 0 : { *(.debug_typenames) }
424        .debug_varnames  0 : { *(.debug_varnames) }
425        /* DWARF 3.  */
426        .debug_pubtypes 0 : { *(.debug_pubtypes) }
427        .debug_ranges   0 : { *(.debug_ranges) }
428        /* DWARF 5.  */
429        .debug_addr     0 : { *(.debug_addr) }
430        .debug_line_str 0 : { *(.debug_line_str) }
431        .debug_loclists 0 : { *(.debug_loclists) }
432        .debug_macro    0 : { *(.debug_macro) }
433        .debug_names    0 : { *(.debug_names) }
434        .debug_rnglists 0 : { *(.debug_rnglists) }
435        .debug_str_offsets 0 : { *(.debug_str_offsets) }
436        .debug_sup      0 : { *(.debug_sup) }
437        .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
438        .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
439        /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
440
441        /*
442         * This is a RTEMS specific section to catch all unexpected input
443         * sections.  In case you get an error like
444         *   "section `.unexpected_sections' will not fit in region
445         *   `UNEXPECTED_SECTIONS'"
446         * you have to figure out the offending input section and add it to the
447         * appropriate output section definition above.
448         */
449        .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS
450}
Note: See TracBrowser for help on using the repository browser.