[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNAQ8t-O2Y-47MEQA2cPYKq2NB+FURbZ8zJKWgT0grG90rQ@mail.gmail.com>
Date: Sun, 6 Apr 2025 22:21:13 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Sami Tolvanen <samitolvanen@...gle.com>
Cc: Luis Chamberlain <mcgrof@...nel.org>, Petr Pavlu <petr.pavlu@...e.com>,
Daniel Gomez <da.gomez@...sung.com>, linux-modules@...r.kernel.org,
linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org,
Paolo Pisati <paolo.pisati@...onical.com>
Subject: Re: [PATCH] kbuild: Require pahole >v1.29 with GENDWARFKSYMS and BTF
on X86
On Fri, Mar 21, 2025 at 8:28 AM Sami Tolvanen <samitolvanen@...gle.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.pisati@...onical.com>
> Signed-off-by: Sami Tolvanen <samitolvanen@...gle.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
Powered by blists - more mailing lists