mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-22 03:04:34 +01:00
3e76d05231
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
144 lines
3.8 KiB
Plaintext
144 lines
3.8 KiB
Plaintext
OUTPUT_ARCH(arm)
|
|
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*)
|
|
}
|
|
.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. */
|
|
.sdata : { *(.sdata) }
|
|
_edata = .;
|
|
PROVIDE (edata = .);
|
|
__bss_start = .;
|
|
.sbss : { *(.sbss) *(.scommon) }
|
|
.bss :
|
|
{
|
|
*(.dynbss)
|
|
*(.bss)
|
|
*(COMMON)
|
|
. = ALIGN(32 / 8);
|
|
_ebss = .;
|
|
/* 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)
|
|
}
|
|
. = ALIGN(32 / 8);
|
|
_end = . ;
|
|
PROVIDE (end = .);
|
|
|
|
/* Debug */
|
|
INCLUDE debuginfo.ldscript
|
|
|
|
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
/DISCARD/ : { *(.note.GNU-stack) }
|
|
}
|