mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
x86-32, relocs: Whitelist more symbols for ld bug workaround
As noted in checkin:a3e854d95
x86, relocs: Workaround for binutils 2.22.52.0.1 section bug ld version 2.22.52.0.[12] can incorrectly promote relative symbols to absolute, if the output section they appear in is otherwise empty. Since checkin:6520fe55
x86, realmode: 16-bit real-mode code support for relocs tool we actually check for this and error out rather than silently creating a kernel which will malfunction if relocated. Ingo found a configuration in which __start_builtin_fw triggered the warning. Go through the linker script sources and look for more symbols that could plausibly get bogusly promoted to absolute, and add them to the whitelist. In general, if the following error triggers: Invalid absolute R_386_32 relocation: <symbol> ... then we should verify that <symbol> is really meant to be relocated, and add it and any related symbols manually to the S_REL regexp. Please note that6520fe55
does not introduce the error, only the check for the error -- without6520fe55
this version of ld will simply produce a corrupt kernel if CONFIG_RELOCATABLE is set on x86-32. Reported-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: <stable@vger.kernel.org> v3.4
This commit is contained in:
parent
b2d668da93
commit
fd95281530
1 changed files with 11 additions and 0 deletions
|
@ -60,6 +60,17 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
|
|||
"__x86_cpu_dev_(start|end)|"
|
||||
"(__parainstructions|__alt_instructions)(|_end)|"
|
||||
"(__iommu_table|__apicdrivers|__smp_locks)(|_end)|"
|
||||
"__(start|end)_pci_.*|"
|
||||
"__(start|end)_builtin_fw|"
|
||||
"__(start|stop)___ksymtab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
|
||||
"__(start|stop)___kcrctab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
|
||||
"__(start|stop)___param|"
|
||||
"__(start|stop)___modver|"
|
||||
"__(start|stop)___bug_table|"
|
||||
"__tracedata_(start|end)|"
|
||||
"__(start|stop)_notes|"
|
||||
"__end_rodata|"
|
||||
"__initramfs_start|"
|
||||
"_end)$"
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue