This v4 of my kallsyms base relative implementation is now a 3 piece series,
since it caused some problems due to the way absolute symbols are handled
by the absolute per cpu code. As it turns out, that code was probably wrong
in the sense that it caused non-relocated symbol addresses to be emitted
for values that are in fact relative to the address of the kernel text.
Patch #1 fixes the scripts/kallsyms invocation to only pass the x86_64
specific --absolute-percpu option if CONFIG_SMP is also set.
Patch #2 reworks the absolute percpu code to only emit those percpu symbols
as absolute, and not symbols that have been classified as 'A' (absolute) by
the linker, since that does not mean quite the same thing.
Patch #3 is the original kallsyms base relative patch, with some
modifications:
- folded the s/ULLONG_MAX/-1ULL? change made by Andrew
- ensured that the kallsyms_relative_base value itself is relocated as
required.
- dropped all of the acks and other tags, as they have become outdated with
the recent changes to this patch.
Ard Biesheuvel (3):
x86: kallsyms: disable absolute percpu symbols on !SMP
kallsyms: don't overload absolute symbol type for percpu symbols
kallsyms: add support for relative offsets in kallsyms address table
init/Kconfig | 16 +++
kernel/kallsyms.c | 38 ++++++--
scripts/kallsyms.c | 102 +++++++++++++++++---
scripts/link-vmlinux.sh | 6 +-
scripts/namespace.pl | 2 +
5 files changed, 142 insertions(+), 22 deletions(-)