mirror of
https://github.com/opnsense/src.git
synced 2026-02-19 02:30:08 -05:00
Currently these sections are not used but defined only for amd64 and i386. Added them for all other platforms to keep all platforms in sync. There should be no functional change. This change is extracted from a bigger patch [1] of hselasky, with additional fix for the order of .fini_array section. 1. https://reviews.freebsd.org/D40467 Obtained from: hselasky MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D45214 (cherry picked from commit 3e76d05231b0aa77d922bdbc9abf62d9747a91ab)
187 lines
5.3 KiB
Text
187 lines
5.3 KiB
Text
OUTPUT_ARCH(aarch64)
|
|
ENTRY(_start)
|
|
|
|
SEARCH_DIR(/usr/lib);
|
|
SECTIONS
|
|
{
|
|
/* Read-only sections, merged into text segment: */
|
|
. = text_start; /* This is set using --defsym= on the command line. */
|
|
.text :
|
|
{
|
|
*(.text)
|
|
*(.stub)
|
|
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
*(.gnu.warning)
|
|
*(.gnu.linkonce.t*)
|
|
} =0x9090
|
|
_etext = .;
|
|
PROVIDE (etext = .);
|
|
.fini : { *(.fini) } =0x9090
|
|
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) }
|
|
.rodata1 : { *(.rodata1) }
|
|
.interp : { *(.interp) }
|
|
.hash : { *(.hash) }
|
|
.dynsym : { *(.dynsym) }
|
|
.dynstr : { *(.dynstr) }
|
|
.gnu.version : { *(.gnu.version) }
|
|
.gnu.version_d : { *(.gnu.version_d) }
|
|
.gnu.version_r : { *(.gnu.version_r) }
|
|
.note.gnu.build-id : {
|
|
PROVIDE (__build_id_start = .);
|
|
*(.note.gnu.build-id)
|
|
PROVIDE (__build_id_end = .);
|
|
}
|
|
.rel.text :
|
|
{ *(.rel.text) *(.rel.gnu.linkonce.t*) }
|
|
.rela.text :
|
|
{ *(.rela.text) *(.rela.gnu.linkonce.t*) }
|
|
.rel.data :
|
|
{ *(.rel.data) *(.rel.gnu.linkonce.d*) }
|
|
.rela.data :
|
|
{ *(.rela.data) *(.rela.gnu.linkonce.d*) }
|
|
.rel.rodata :
|
|
{ *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
|
|
.rela.rodata :
|
|
{ *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
|
|
.rel.got : { *(.rel.got) }
|
|
.rela.got : { *(.rela.got) }
|
|
.rel.ctors : { *(.rel.ctors) }
|
|
.rela.ctors : { *(.rela.ctors) }
|
|
.rel.dtors : { *(.rel.dtors) }
|
|
.rela.dtors : { *(.rela.dtors) }
|
|
.rel.init : { *(.rel.init) }
|
|
.rela.init : { *(.rela.init) }
|
|
.rel.fini : { *(.rel.fini) }
|
|
.rela.fini : { *(.rela.fini) }
|
|
.rel.bss : { *(.rel.bss) }
|
|
.rela.bss : { *(.rela.bss) }
|
|
.rel.plt : { *(.rel.plt) }
|
|
.rela.plt : { *(.rela.plt) }
|
|
.init : { *(.init) } =0x9090
|
|
.plt : { *(.plt) }
|
|
|
|
. = ALIGN(4);
|
|
_extab_start = .;
|
|
PROVIDE(extab_start = .);
|
|
.ARM.extab : { *(.ARM.extab) }
|
|
_extab.end = .;
|
|
PROVIDE(extab_end = .);
|
|
|
|
_exidx_start = .;
|
|
PROVIDE(exidx_start = .);
|
|
.ARM.exidx : { *(.ARM.exidx) }
|
|
_exidx_end = .;
|
|
PROVIDE(exidx_end = .);
|
|
|
|
/* Adjust the address for the data segment. We want to adjust up to
|
|
the same address within the page on the next page up. */
|
|
. = ALIGN(0x1000) + (. & (0x1000 - 1)) ;
|
|
.data :
|
|
{
|
|
*(.data)
|
|
*(.gnu.linkonce.d*)
|
|
}
|
|
. = ALIGN(128);
|
|
.data.read_frequently :
|
|
{
|
|
*(SORT_BY_ALIGNMENT(.data.read_frequently))
|
|
}
|
|
.data.read_mostly :
|
|
{
|
|
*(.data.read_mostly)
|
|
}
|
|
. = ALIGN(128);
|
|
.data.exclusive_cache_line :
|
|
{
|
|
*(.data.exclusive_cache_line)
|
|
}
|
|
. = ALIGN(128);
|
|
.data1 : { *(.data1) }
|
|
. = ALIGN(32 / 8);
|
|
.init_array :
|
|
{
|
|
PROVIDE_HIDDEN (__init_array_start = .);
|
|
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*)))
|
|
KEEP (*(.init_array))
|
|
PROVIDE_HIDDEN (__init_array_end = .);
|
|
}
|
|
.fini_array :
|
|
{
|
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
|
KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*)))
|
|
KEEP (*(.fini_array))
|
|
PROVIDE_HIDDEN (__fini_array_end = .);
|
|
}
|
|
_start_ctors = .;
|
|
PROVIDE (start_ctors = .);
|
|
.ctors :
|
|
{
|
|
*(.ctors)
|
|
}
|
|
_stop_ctors = .;
|
|
PROVIDE (stop_ctors = .);
|
|
.dtors :
|
|
{
|
|
*(.dtors)
|
|
}
|
|
.got : { *(.got.plt) *(.got) }
|
|
.dynamic : { *(.dynamic) }
|
|
/* We want the small data sections together, so single-instruction offsets
|
|
can access them all, and initialized data all before uninitialized, so
|
|
we can shorten the on-disk segment size. */
|
|
. = ALIGN(8);
|
|
.sdata : { *(.sdata) }
|
|
_edata = .;
|
|
PROVIDE (edata = .);
|
|
. = ALIGN(16);
|
|
__bss_start = .;
|
|
.sbss : { *(.sbss) *(.scommon) }
|
|
.bss :
|
|
{
|
|
*(.dynbss)
|
|
*(.bss)
|
|
*(COMMON)
|
|
. = ALIGN(16);
|
|
__bss_end = .;
|
|
/* A section for the initial page table, it doesn't need to be in the
|
|
kernel file, however unlike normal .bss entries should not be zeroed
|
|
out as we use it before the .bss section is cleared. */
|
|
*(.init_pagetable)
|
|
}
|
|
_end = . ;
|
|
PROVIDE (end = .);
|
|
/* Stabs debugging sections. */
|
|
.stab 0 : { *(.stab) }
|
|
.stabstr 0 : { *(.stabstr) }
|
|
.stab.excl 0 : { *(.stab.excl) }
|
|
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
.stab.index 0 : { *(.stab.index) }
|
|
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
.comment 0 : { *(.comment) }
|
|
/* DWARF debug sections.
|
|
Symbols in the DWARF debugging sections are relative to the beginning
|
|
of the section so we begin them at 0. */
|
|
/* DWARF 1 */
|
|
.debug 0 : { *(.debug) }
|
|
.line 0 : { *(.line) }
|
|
/* GNU DWARF 1 extensions */
|
|
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
/* DWARF 1.1 and DWARF 2 */
|
|
.debug_aranges 0 : { *(.debug_aranges) }
|
|
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
/* DWARF 2 */
|
|
.debug_info 0 : { *(.debug_info) }
|
|
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
.debug_line 0 : { *(.debug_line) }
|
|
.debug_frame 0 : { *(.debug_frame) }
|
|
.debug_str 0 : { *(.debug_str) }
|
|
.debug_loc 0 : { *(.debug_loc) }
|
|
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
/* SGI/MIPS DWARF 2 extensions */
|
|
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
.debug_typenames 0 : { *(.debug_typenames) }
|
|
.debug_varnames 0 : { *(.debug_varnames) }
|
|
/* These must appear regardless of . */
|
|
}
|