Back to home page

LXR

 
 

    


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

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