Back to home page

LXR

 
 

    


Warning, /bsps/arm/shared/start/linkcmds.base is written in an unsupported language. File is not indexed.

0001 /**
0002  * @file
0003  *
0004  * @ingroup bsp_linker
0005  *
0006  * @brief Linker command base file.
0007  */
0008 
0009 /*
0010  * Copyright (C) 2008, 2016 embedded brains GmbH & Co. KG
0011  *
0012  * The license and distribution terms for this file may be
0013  * found in the file LICENSE in this distribution or at
0014  * http://www.rtems.org/license/LICENSE.
0015  */
0016 
0017 OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
0018 
0019 OUTPUT_ARCH (arm)
0020 
0021 ENTRY (_start)
0022 STARTUP (start.o)
0023 
0024 /*
0025  * Global symbols that may be defined externally
0026  */
0027 
0028 bsp_vector_table_size = DEFINED (bsp_vector_table_size) ? bsp_vector_table_size : 64;
0029 
0030 bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 1;
0031 bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1;
0032 bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1;
0033 
0034 bsp_stack_align = DEFINED (bsp_stack_align) ? bsp_stack_align : 8;
0035 
0036 bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 0;
0037 bsp_stack_abt_size = ALIGN (bsp_stack_abt_size, bsp_stack_align);
0038 
0039 bsp_stack_fiq_size = DEFINED (bsp_stack_fiq_size) ? bsp_stack_fiq_size : 0;
0040 bsp_stack_fiq_size = ALIGN (bsp_stack_fiq_size, bsp_stack_align);
0041 
0042 bsp_stack_und_size = DEFINED (bsp_stack_und_size) ? bsp_stack_und_size : 0;
0043 bsp_stack_und_size = ALIGN (bsp_stack_und_size, bsp_stack_align);
0044 
0045 bsp_stack_hyp_size = DEFINED (bsp_stack_hyp_size) ? bsp_stack_hyp_size : 0;
0046 bsp_stack_hyp_size = ALIGN (bsp_stack_hyp_size, bsp_stack_align);
0047 
0048 MEMORY {
0049         UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0
0050 }
0051 
0052 SECTIONS {
0053         .start : ALIGN_WITH_INPUT {
0054                 bsp_section_start_begin = .;
0055                 KEEP (*(.bsp_start_text))
0056                 KEEP (*(.bsp_start_data))
0057                 bsp_section_start_end = .;
0058         } > REGION_START AT > REGION_START
0059         bsp_section_start_size = bsp_section_start_end - bsp_section_start_begin;
0060 
0061         .xbarrier : ALIGN_WITH_INPUT {
0062                 . = ALIGN (bsp_section_xbarrier_align);
0063         } > REGION_VECTOR AT > REGION_VECTOR
0064 
0065         .text : ALIGN_WITH_INPUT {
0066                 bsp_section_text_begin = .;
0067                 *(.text.unlikely .text.*_unlikely)
0068                 *(.text .stub .text.* .gnu.linkonce.t.*)
0069                 /* .gnu.warning sections are handled specially by elf32.em.  */
0070                 *(.gnu.warning)
0071                 *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
0072         } > REGION_TEXT AT > REGION_TEXT_LOAD
0073         .init : ALIGN_WITH_INPUT {
0074                 KEEP (*(.init))
0075         } > REGION_TEXT AT > REGION_TEXT_LOAD
0076         .fini : ALIGN_WITH_INPUT {
0077                 KEEP (*(.fini))
0078 
0079                 /*
0080                  * If requested, align the size of the combined start and text
0081                  * section to the next power of two to meet MPU region
0082                  * alignment requirements.
0083                  */
0084                 . = DEFINED (bsp_align_text_and_rodata_end_to_power_of_2) ?
0085                     bsp_section_start_begin
0086                     + ALIGN (. - bsp_section_start_begin,
0087                     1 << LOG2CEIL (. - bsp_section_start_begin)) : .;
0088 
0089                 bsp_section_text_end = .;
0090         } > REGION_TEXT AT > REGION_TEXT_LOAD
0091         bsp_section_text_size = bsp_section_text_end - bsp_section_text_begin;
0092         bsp_section_text_load_begin = LOADADDR (.text);
0093         bsp_section_text_load_end = bsp_section_text_load_begin + bsp_section_text_size;
0094 
0095         .robarrier : ALIGN_WITH_INPUT {
0096                 . = ALIGN (bsp_section_robarrier_align);
0097         } > REGION_RODATA AT > REGION_RODATA
0098 
0099         .rodata : ALIGN_WITH_INPUT {
0100                 bsp_section_rodata_begin = .;
0101                 *(.rodata .rodata.* .gnu.linkonce.r.*)
0102         } > REGION_RODATA AT > REGION_RODATA_LOAD
0103         .rodata1 : ALIGN_WITH_INPUT {
0104                 *(.rodata1)
0105         } > REGION_RODATA AT > REGION_RODATA_LOAD
0106         .ARM.extab : ALIGN_WITH_INPUT {
0107                 *(.ARM.extab* .gnu.linkonce.armextab.*)
0108         } > REGION_RODATA AT > REGION_RODATA_LOAD
0109         .ARM.exidx : ALIGN_WITH_INPUT {
0110                 __exidx_start = .;
0111                 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
0112                 __exidx_end = .;
0113         } > REGION_RODATA AT > REGION_RODATA_LOAD
0114         .eh_frame : ALIGN_WITH_INPUT {
0115                 KEEP (*(.eh_frame))
0116         } > REGION_RODATA AT > REGION_RODATA_LOAD
0117         .gcc_except_table : ALIGN_WITH_INPUT {
0118                 *(.gcc_except_table .gcc_except_table.*)
0119         } > REGION_RODATA AT > REGION_RODATA_LOAD
0120         .tdata : ALIGN_WITH_INPUT {
0121                 _TLS_Data_begin = .;
0122                 *(.tdata .tdata.* .gnu.linkonce.td.*)
0123                 _TLS_Data_end = .;
0124         } > REGION_RODATA AT > REGION_RODATA_LOAD
0125         .tbss : ALIGN_WITH_INPUT {
0126                 _TLS_BSS_begin = .;
0127                 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0128                 _TLS_BSS_end = .;
0129         } > REGION_RODATA AT > REGION_RODATA_LOAD
0130         _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0131         _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0132         _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0133         _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0134         _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0135         _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0136         .preinit_array : ALIGN_WITH_INPUT {
0137                 PROVIDE_HIDDEN (__preinit_array_start = .);
0138                 KEEP (*(.preinit_array))
0139                 PROVIDE_HIDDEN (__preinit_array_end = .);
0140         } > REGION_RODATA AT > REGION_RODATA_LOAD
0141         .init_array : ALIGN_WITH_INPUT {
0142                 PROVIDE_HIDDEN (__init_array_start = .);
0143                 KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
0144                 KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
0145                 PROVIDE_HIDDEN (__init_array_end = .);
0146         } > REGION_RODATA AT > REGION_RODATA_LOAD
0147         .fini_array : ALIGN_WITH_INPUT {
0148                 PROVIDE_HIDDEN (__fini_array_start = .);
0149                 KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
0150                 KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
0151                 PROVIDE_HIDDEN (__fini_array_end = .);
0152         } > REGION_RODATA AT > REGION_RODATA_LOAD
0153         .data.rel.ro : ALIGN_WITH_INPUT {
0154                 *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*)
0155                 *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*)
0156         } > REGION_RODATA AT > REGION_RODATA_LOAD
0157         .jcr : ALIGN_WITH_INPUT {
0158                 KEEP (*(.jcr))
0159         } > REGION_RODATA AT > REGION_RODATA_LOAD
0160         .interp : ALIGN_WITH_INPUT {
0161                 *(.interp)
0162         } > REGION_RODATA AT > REGION_RODATA_LOAD
0163         .note.gnu.build-id : ALIGN_WITH_INPUT {
0164                 *(.note.gnu.build-id)
0165         } > REGION_RODATA AT > REGION_RODATA_LOAD
0166         .hash : ALIGN_WITH_INPUT {
0167                 *(.hash)
0168         } > REGION_RODATA AT > REGION_RODATA_LOAD
0169         .gnu.hash : ALIGN_WITH_INPUT {
0170                 *(.gnu.hash)
0171         } > REGION_RODATA AT > REGION_RODATA_LOAD
0172         .dynsym : ALIGN_WITH_INPUT {
0173                 *(.dynsym)
0174         } > REGION_RODATA AT > REGION_RODATA_LOAD
0175         .dynstr : ALIGN_WITH_INPUT {
0176                 *(.dynstr)
0177         } > REGION_RODATA AT > REGION_RODATA_LOAD
0178         .gnu.version : ALIGN_WITH_INPUT {
0179                 *(.gnu.version)
0180         } > REGION_RODATA AT > REGION_RODATA_LOAD
0181         .gnu.version_d : ALIGN_WITH_INPUT {
0182                 *(.gnu.version_d)
0183         } > REGION_RODATA AT > REGION_RODATA_LOAD
0184         .gnu.version_r : ALIGN_WITH_INPUT {
0185                 *(.gnu.version_r)
0186         } > REGION_RODATA AT > REGION_RODATA_LOAD
0187         .rel.dyn : ALIGN_WITH_INPUT {
0188                 *(.rel.init)
0189                 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
0190                 *(.rel.fini)
0191                 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
0192                 *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
0193                 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
0194                 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
0195                 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
0196                 *(.rel.ctors)
0197                 *(.rel.dtors)
0198                 *(.rel.got)
0199                 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
0200                 PROVIDE_HIDDEN (__rel_iplt_start = .);
0201                 *(.rel.iplt)
0202                 PROVIDE_HIDDEN (__rel_iplt_end = .);
0203                 PROVIDE_HIDDEN (__rela_iplt_start = .);
0204                 PROVIDE_HIDDEN (__rela_iplt_end = .);
0205         } > REGION_RODATA AT > REGION_RODATA_LOAD
0206         .rela.dyn : ALIGN_WITH_INPUT {
0207                 *(.rela.init)
0208                 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
0209                 *(.rela.fini)
0210                 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
0211                 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
0212                 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
0213                 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
0214                 *(.rela.ctors)
0215                 *(.rela.dtors)
0216                 *(.rela.got)
0217                 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
0218                 *(.rela.rtemsroset*)
0219                 *(.rela.rtemsrwset*)
0220                 PROVIDE_HIDDEN (__rel_iplt_start = .);
0221                 PROVIDE_HIDDEN (__rel_iplt_end = .);
0222                 PROVIDE_HIDDEN (__rela_iplt_start = .);
0223                 *(.rela.iplt)
0224                 PROVIDE_HIDDEN (__rela_iplt_end = .);
0225         } > REGION_RODATA AT > REGION_RODATA_LOAD
0226         .rel.plt : ALIGN_WITH_INPUT {
0227                 *(.rel.plt)
0228         } > REGION_RODATA AT > REGION_RODATA_LOAD
0229         .rela.plt : ALIGN_WITH_INPUT {
0230                 *(.rela.plt)
0231         } > REGION_RODATA AT > REGION_RODATA_LOAD
0232         .plt : ALIGN_WITH_INPUT {
0233                 *(.plt)
0234         } > REGION_RODATA AT > REGION_RODATA_LOAD
0235         .iplt : ALIGN_WITH_INPUT {
0236                 *(.iplt)
0237         } > REGION_RODATA AT > REGION_RODATA_LOAD
0238         .dynamic : ALIGN_WITH_INPUT {
0239                 *(.dynamic)
0240         } > REGION_RODATA AT > REGION_RODATA_LOAD
0241         .tm_clone_table : ALIGN_WITH_INPUT {
0242                 *(.tm_clone_table)
0243         } > REGION_RODATA AT > REGION_RODATA_LOAD
0244         .got : ALIGN_WITH_INPUT {
0245                 *(.got.plt) *(.igot.plt) *(.got) *(.igot)
0246         } > REGION_RODATA AT > REGION_RODATA_LOAD
0247         .rtemsroset : ALIGN_WITH_INPUT {
0248                 /* Special FreeBSD linker set sections */
0249                 __start_set_sysctl_set = .;
0250                 *(set_sysctl_*);
0251                 __stop_set_sysctl_set = .;
0252                 *(set_domain_*);
0253                 *(set_pseudo_*);
0254 
0255                 KEEP (*(SORT(.rtemsroset.*)))
0256 
0257                 /*
0258                  * If requested, align the size of the rodata section to the
0259                  * next power of two to meet MPU region alignment requirements.
0260                  */
0261                 . = DEFINED (bsp_align_text_and_rodata_end_to_power_of_2) ?
0262                     bsp_section_rodata_begin
0263                     + ALIGN (. - bsp_section_rodata_begin,
0264                     1 << LOG2CEIL (. - bsp_section_rodata_begin)) : .;
0265 
0266                 bsp_section_rodata_end = .;
0267         } > REGION_RODATA AT > REGION_RODATA_LOAD
0268         bsp_section_rodata_size = bsp_section_rodata_end - bsp_section_rodata_begin;
0269         bsp_section_rodata_load_begin = LOADADDR (.rodata);
0270         bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
0271 
0272         .rwbarrier : ALIGN_WITH_INPUT {
0273                 . = ALIGN (bsp_section_rwbarrier_align);
0274         } > REGION_DATA AT > REGION_DATA
0275 
0276         .vector : ALIGN_WITH_INPUT {
0277                 bsp_section_vector_begin = .;
0278                 . = . + DEFINED (bsp_vector_table_in_start_section) ? 0 : bsp_vector_table_size;
0279                 bsp_section_vector_end = .;
0280         } > REGION_VECTOR AT > REGION_VECTOR
0281         bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_begin;
0282         bsp_vector_table_begin = DEFINED (bsp_vector_table_in_start_section) ? bsp_section_start_begin : bsp_section_vector_begin;
0283         bsp_vector_table_end = bsp_vector_table_begin + bsp_vector_table_size;
0284 
0285         .fast_text : ALIGN_WITH_INPUT {
0286                 bsp_section_fast_text_begin = .;
0287                 *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_fast_text*)))
0288                 bsp_section_fast_text_end = .;
0289         } > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
0290         bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
0291         bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
0292         bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
0293 
0294         .fast_data : ALIGN_WITH_INPUT {
0295                 bsp_section_fast_data_begin = .;
0296                 *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_fast_data*)))
0297                 bsp_section_fast_data_end = .;
0298         } > REGION_FAST_DATA AT > REGION_FAST_DATA_LOAD
0299         bsp_section_fast_data_size = bsp_section_fast_data_end - bsp_section_fast_data_begin;
0300         bsp_section_fast_data_load_begin = LOADADDR (.fast_data);
0301         bsp_section_fast_data_load_end = bsp_section_fast_data_load_begin + bsp_section_fast_data_size;
0302 
0303         .data : ALIGN_WITH_INPUT {
0304                 bsp_section_data_begin = .;
0305                 *(.data .data.* .gnu.linkonce.d.*)
0306                 SORT(CONSTRUCTORS)
0307         } > REGION_DATA AT > REGION_DATA_LOAD
0308         .data1 : ALIGN_WITH_INPUT {
0309                 *(.data1)
0310         } > REGION_DATA AT > REGION_DATA_LOAD
0311         .rtemsrwset : ALIGN_WITH_INPUT {
0312                 KEEP (*(SORT(.rtemsrwset.*)))
0313                 bsp_section_data_end = .;
0314         } > REGION_DATA AT > REGION_DATA_LOAD
0315         bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
0316         bsp_section_data_load_begin = LOADADDR (.data);
0317         bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
0318 
0319         .bss : ALIGN_WITH_INPUT {
0320                 bsp_section_bss_begin = .;
0321                 *(.dynbss)
0322                 *(.bss .bss.* .gnu.linkonce.b.*)
0323                 *(COMMON)
0324                 bsp_section_bss_end = .;
0325         } > REGION_BSS AT > REGION_BSS
0326         bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
0327 
0328         .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT {
0329                 bsp_section_rtemsstack_begin = .;
0330                 *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.rtemsstack*)))
0331                 bsp_section_rtemsstack_end = .;
0332         } > REGION_STACK AT > REGION_STACK
0333         bsp_section_rtemsstack_size = bsp_section_rtemsstack_end - bsp_section_rtemsstack_begin;
0334 
0335         .noinit (NOLOAD) : ALIGN_WITH_INPUT {
0336                 bsp_section_noinit_begin = .;
0337                 *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0338                 bsp_section_noinit_end = .;
0339         } > REGION_WORK AT > REGION_WORK
0340         bsp_section_noinit_size = bsp_section_noinit_end - bsp_section_noinit_begin;
0341 
0342         .work : ALIGN_WITH_INPUT {
0343                 /*
0344                  * The work section will occupy the remaining REGION_WORK region and
0345                  * contains the RTEMS work space and heap.
0346                  */
0347                 bsp_section_work_begin = .;
0348                 . += ORIGIN (REGION_WORK) + LENGTH (REGION_WORK) - ABSOLUTE (.);
0349                 bsp_section_work_end = .;
0350         } > REGION_WORK AT > REGION_WORK
0351         bsp_section_work_size = bsp_section_work_end - bsp_section_work_begin;
0352 
0353         .stack : ALIGN_WITH_INPUT {
0354                 /*
0355                  * The stack section will occupy the remaining REGION_STACK region and may
0356                  * contain the task stacks.  Depending on the region distribution this
0357                  * section may be of zero size.
0358                  */
0359                 bsp_section_stack_begin = .;
0360                 . += ORIGIN (REGION_STACK) + LENGTH (REGION_STACK) - ABSOLUTE (.);
0361                 bsp_section_stack_end = .;
0362         } > REGION_STACK AT > REGION_STACK
0363         bsp_section_stack_size = bsp_section_stack_end - bsp_section_stack_begin;
0364 
0365         .nocache : ALIGN_WITH_INPUT {
0366                 bsp_section_nocache_begin = .;
0367                 *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_nocache*)))
0368                 bsp_section_nocache_end = .;
0369         } > REGION_NOCACHE AT > REGION_NOCACHE_LOAD
0370         bsp_section_nocache_size = bsp_section_nocache_end - bsp_section_nocache_begin;
0371         bsp_section_nocache_load_begin = LOADADDR (.nocache);
0372         bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
0373 
0374         .nocachenoload (NOLOAD) : ALIGN_WITH_INPUT {
0375                 bsp_section_nocachenoload_begin = .;
0376                 *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.bsp_noload_nocache*)))
0377                 bsp_section_nocacheheap_begin = .;
0378                 . += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.);
0379                 bsp_section_nocacheheap_end = .;
0380                 bsp_section_nocachenoload_end = .;
0381         } > REGION_NOCACHE AT > REGION_NOCACHE
0382         bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin;
0383         bsp_section_nocachenoload_size = bsp_section_nocachenoload_end - bsp_section_nocachenoload_begin;
0384 
0385         /* FIXME */
0386         RamBase = ORIGIN (REGION_WORK);
0387         RamSize = LENGTH (REGION_WORK);
0388         RamEnd = RamBase + RamSize;
0389         WorkAreaBase = bsp_section_work_begin;
0390         HeapSize = 0;
0391 
0392         /* Stabs debugging sections.  */
0393         .stab          0 : { *(.stab) }
0394         .stabstr       0 : { *(.stabstr) }
0395         .stab.excl     0 : { *(.stab.excl) }
0396         .stab.exclstr  0 : { *(.stab.exclstr) }
0397         .stab.index    0 : { *(.stab.index) }
0398         .stab.indexstr 0 : { *(.stab.indexstr) }
0399         .comment       0 : { *(.comment) }
0400         /* DWARF debug sections.
0401            Symbols in the DWARF debugging sections are relative to the beginning
0402            of the section so we begin them at 0.  */
0403         /* DWARF 1.  */
0404         .debug          0 : { *(.debug) }
0405         .line           0 : { *(.line) }
0406         /* GNU DWARF 1 extensions.  */
0407         .debug_srcinfo  0 : { *(.debug_srcinfo) }
0408         .debug_sfnames  0 : { *(.debug_sfnames) }
0409         /* DWARF 1.1 and DWARF 2.  */
0410         .debug_aranges  0 : { *(.debug_aranges) }
0411         .debug_pubnames 0 : { *(.debug_pubnames) }
0412         /* DWARF 2.  */
0413         .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
0414         .debug_abbrev   0 : { *(.debug_abbrev) }
0415         .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
0416         .debug_frame    0 : { *(.debug_frame) }
0417         .debug_str      0 : { *(.debug_str) }
0418         .debug_loc      0 : { *(.debug_loc) }
0419         .debug_macinfo  0 : { *(.debug_macinfo) }
0420         /* SGI/MIPS DWARF 2 extensions.  */
0421         .debug_weaknames 0 : { *(.debug_weaknames) }
0422         .debug_funcnames 0 : { *(.debug_funcnames) }
0423         .debug_typenames 0 : { *(.debug_typenames) }
0424         .debug_varnames  0 : { *(.debug_varnames) }
0425         /* DWARF 3.  */
0426         .debug_pubtypes 0 : { *(.debug_pubtypes) }
0427         .debug_ranges   0 : { *(.debug_ranges) }
0428         /* DWARF 5.  */
0429         .debug_addr     0 : { *(.debug_addr) }
0430         .debug_line_str 0 : { *(.debug_line_str) }
0431         .debug_loclists 0 : { *(.debug_loclists) }
0432         .debug_macro    0 : { *(.debug_macro) }
0433         .debug_names    0 : { *(.debug_names) }
0434         .debug_rnglists 0 : { *(.debug_rnglists) }
0435         .debug_str_offsets 0 : { *(.debug_str_offsets) }
0436         .debug_sup      0 : { *(.debug_sup) }
0437         .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
0438         .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
0439 
0440         /* Addition to let linker know about custom section for GDB pretty-printing support. */
0441         .debug_gdb_scripts 0 : { *(.debug_gdb_scripts) }
0442         
0443         /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
0444 
0445         /*
0446          * This is a RTEMS specific section to catch all unexpected input
0447          * sections.  In case you get an error like
0448          *   "section `.unexpected_sections' will not fit in region
0449          *   `UNEXPECTED_SECTIONS'"
0450          * you have to figure out the offending input section and add it to the
0451          * appropriate output section definition above.
0452          */
0453         .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS
0454 }