mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-11 23:27:42 +07:00

We do need to call the constructors for *modules*, and at least for KASAN in the future, we must call even the kernel constructors only later when the kernel has been initialized. Instead of relying on libc to call them, emit an empty section for libc and let the kernel's CONSTRUCTORS code do the rest of the job. Tested that it indeed doesn't work in modules, and does work after the fixes in both, with a few functions with __attribute__((constructor)) in both dynamic and static builds. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Richard Weinberger <richard@nod.at>
101 lines
1.7 KiB
ArmAsm
101 lines
1.7 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
|
|
.fini : { *(.fini) } =0x9090
|
|
_etext = .;
|
|
PROVIDE (etext = .);
|
|
|
|
. = ALIGN(4096);
|
|
_sdata = .;
|
|
PROVIDE (sdata = .);
|
|
|
|
RODATA
|
|
|
|
.unprotected : { *(.unprotected) }
|
|
. = ALIGN(4096);
|
|
PROVIDE (_unprotected_end = .);
|
|
|
|
. = ALIGN(4096);
|
|
NOTES
|
|
EXCEPTION_TABLE(0)
|
|
|
|
BUG_TABLE
|
|
|
|
.uml.setup.init : {
|
|
__uml_setup_start = .;
|
|
*(.uml.setup.init)
|
|
__uml_setup_end = .;
|
|
}
|
|
|
|
.uml.help.init : {
|
|
__uml_help_start = .;
|
|
*(.uml.help.init)
|
|
__uml_help_end = .;
|
|
}
|
|
|
|
.uml.postsetup.init : {
|
|
__uml_postsetup_start = .;
|
|
*(.uml.postsetup.init)
|
|
__uml_postsetup_end = .;
|
|
}
|
|
|
|
.init.setup : {
|
|
INIT_SETUP(0)
|
|
}
|
|
|
|
PERCPU_SECTION(32)
|
|
|
|
.initcall.init : {
|
|
INIT_CALLS
|
|
}
|
|
|
|
.con_initcall.init : {
|
|
CON_INITCALL
|
|
}
|
|
|
|
.exitcall : {
|
|
__exitcall_begin = .;
|
|
*(.exitcall.exit)
|
|
__exitcall_end = .;
|
|
}
|
|
|
|
.uml.exitcall : {
|
|
__uml_exitcall_begin = .;
|
|
*(.uml.exitcall.exit)
|
|
__uml_exitcall_end = .;
|
|
}
|
|
|
|
. = ALIGN(4);
|
|
.altinstructions : {
|
|
__alt_instructions = .;
|
|
*(.altinstructions)
|
|
__alt_instructions_end = .;
|
|
}
|
|
.altinstr_replacement : { *(.altinstr_replacement) }
|
|
/* .exit.text is discard at runtime, not link time, to deal with references
|
|
from .altinstructions and .eh_frame */
|
|
.exit.text : { EXIT_TEXT }
|
|
.exit.data : { *(.exit.data) }
|
|
|
|
.preinit_array : {
|
|
__preinit_array_start = .;
|
|
*(.preinit_array)
|
|
__preinit_array_end = .;
|
|
}
|
|
.init_array : {
|
|
/* dummy - we call this ourselves */
|
|
__init_array_start = .;
|
|
__init_array_end = .;
|
|
}
|
|
.fini_array : {
|
|
__fini_array_start = .;
|
|
*(.fini_array)
|
|
__fini_array_end = .;
|
|
}
|
|
|
|
. = ALIGN(4096);
|
|
.init.ramfs : {
|
|
INIT_RAM_FS
|
|
}
|
|
|