btf, scripts: Exclude Rust CUs with pahole

Version 1.24 of pahole has the capability to exclude compilation units (CUs)
of specific languages [1] [2]. Rust, as of writing, is not currently supported
by pahole and if it's used with a build that has BTF debugging enabled it
results in malformed kernel and module binaries [3]. So it's better for pahole
to exclude Rust CUs until support for it arrives.

Co-developed-by: Eric Curtin <ecurtin@redhat.com>
Signed-off-by: Eric Curtin <ecurtin@redhat.com>
Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Eric Curtin <ecurtin@redhat.com>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Acked-by: Miguel Ojeda <ojeda@kernel.org>
Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?id=49358dfe2aaae4e90b072332c3e324019826783f [1]
Link: https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?id=8ee363790b7437283c53090a85a9fec2f0b0fbc4 [2]
Link: https://github.com/Rust-for-Linux/linux/issues/735 [3]
Link: https://lore.kernel.org/bpf/20230111152050.559334-1-yakoyoku@gmail.com
This commit is contained in:
Martin Rodriguez Reboredo 2023-01-11 12:20:50 -03:00 committed by Daniel Borkmann
parent dfff86f8eb
commit c1177979af
3 changed files with 14 additions and 1 deletions

View File

@ -1935,7 +1935,7 @@ config RUST
depends on !MODVERSIONS depends on !MODVERSIONS
depends on !GCC_PLUGINS depends on !GCC_PLUGINS
depends on !RANDSTRUCT depends on !RANDSTRUCT
depends on !DEBUG_INFO_BTF depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE
select CONSTRUCTORS select CONSTRUCTORS
help help
Enables Rust support in the kernel. Enables Rust support in the kernel.

View File

@ -389,6 +389,15 @@ config PAHOLE_HAS_BTF_TAG
btf_decl_tag) or not. Currently only clang compiler implements btf_decl_tag) or not. Currently only clang compiler implements
these attributes, so make the config depend on CC_IS_CLANG. these attributes, so make the config depend on CC_IS_CLANG.
config PAHOLE_HAS_LANG_EXCLUDE
def_bool PAHOLE_VERSION >= 124
help
Support for the --lang_exclude flag which makes pahole exclude
compilation units from the supplied language. Used in Kbuild to
omit Rust CUs which are not supported in version 1.24 of pahole,
otherwise it would emit malformed kernel and module binaries when
using DEBUG_INFO_BTF_MODULES.
config DEBUG_INFO_BTF_MODULES config DEBUG_INFO_BTF_MODULES
def_bool y def_bool y
depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF

View File

@ -19,5 +19,9 @@ fi
if [ "${pahole_ver}" -ge "122" ]; then if [ "${pahole_ver}" -ge "122" ]; then
extra_paholeopt="${extra_paholeopt} -j" extra_paholeopt="${extra_paholeopt} -j"
fi fi
if [ "${pahole_ver}" -ge "124" ]; then
# see PAHOLE_HAS_LANG_EXCLUDE
extra_paholeopt="${extra_paholeopt} --lang_exclude=rust"
fi
echo ${extra_paholeopt} echo ${extra_paholeopt}