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 }