On Fri, Mar 21, 2025 at 8:28 AM Sami Tolvanen <samitolva...@google.com> wrote: > > With CONFIG_GENDWARFKSYMS, __gendwarfksyms_ptr variables are added > to the kernel in EXPORT_SYMBOL() to ensure DWARF type information > is available for exported symbols in the TUs where they're actually > exported. These symbols are dropped when linking vmlinux, but > dangling references to them remain in DWARF. > > With CONFIG_DEBUG_INFO_BTF enabled on X86, pahole versions > before commit 9810758003ce ("btf_encoder: Verify 0 address > DWARF variables are in ELF section") place these symbols in the > .data..percpu section, which results in an "Invalid offset" error in > btf_datasec_check_meta() during boot, as all the variables are at > zero offset and have non-zero size. If CONFIG_DEBUG_INFO_BTF_MODULES > is enabled, this also results in a failure to load modules with: > > failed to validate module [$module] BTF: -22 > > The pahole commit that adds 0 address DWARF variable verification > was merged after v1.29 was released, so later versions of pahole > shouldn't have this issue. Require pahole >v1.29 when GENDWARFKSYMS > is enabled with DEBUG_INFO_BTF on X86. > > Reported-by: Paolo Pisati <paolo.pis...@canonical.com> > Signed-off-by: Sami Tolvanen <samitolva...@google.com>
The issue occurs with 47dcb534e253 ("btf_encoder: Stop indexing symbols for VARs"), then fixed by 9810758003ce ("btf_encoder: Verify 0 address DWARF variables are in ELF section") Perhaps, does it make sense to do this? depends on !X86 || !DEBUG_INFO_BTF || (PAHOLE_VERSION > 129 || PAHOLE_VERSION < 128) > --- > kernel/module/Kconfig | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/kernel/module/Kconfig b/kernel/module/Kconfig > index d7762ef5949a..7c75832aa1af 100644 > --- a/kernel/module/Kconfig > +++ b/kernel/module/Kconfig > @@ -192,6 +192,10 @@ config GENDWARFKSYMS > depends on !DEBUG_INFO_REDUCED && !DEBUG_INFO_SPLIT > # Requires ELF object files. > depends on !LTO > + # Requires pahole commit 9810758003ce ("btf_encoder: Verify 0 address > + # DWARF variables are in ELF section") on X86 to avoid conflicts with > + # __gendwarfksyms_ptr symbols. > + depends on !X86 || !DEBUG_INFO_BTF || PAHOLE_VERSION > 129 > help > Calculate symbol versions from DWARF debugging information using > gendwarfksyms. Requires DEBUG_INFO to be enabled. > > base-commit: 4701f33a10702d5fc577c32434eb62adde0a1ae1 > -- > 2.49.0.395.g12beb8f557-goog > -- Best Regards Masahiro Yamada