Skip to content

Commit

Permalink
scripts: Exclude Rust CUs with pahole
Browse files Browse the repository at this point in the history
Version 1.24 of pahole has the capability to exclude compilation units
(CUs) of specific languages. 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 (see
Rust-for-Linux#735). So it's better for pahole to exclude Rust
CUs until support for it arrives.

Reviewed-by: Eric Curtin <ecurtin@redhat.com>
Tested-by: Eric Curtin <ecurtin@redhat.com>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Tested-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
  • Loading branch information
YakoYakoYokuYoku authored and intel-lab-lkp committed Dec 21, 2022
1 parent 54c3f1a commit 24aac5f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
2 changes: 1 addition & 1 deletion init/Kconfig
Expand Up @@ -1926,7 +1926,7 @@ config RUST
depends on !MODVERSIONS
depends on !GCC_PLUGINS
depends on !RANDSTRUCT
depends on !DEBUG_INFO_BTF
depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE
select CONSTRUCTORS
help
Enables Rust support in the kernel.
Expand Down
9 changes: 9 additions & 0 deletions lib/Kconfig.debug
Expand Up @@ -364,6 +364,15 @@ config PAHOLE_HAS_BTF_TAG
btf_decl_tag) or not. Currently only clang compiler implements
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
def_bool y
depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
Expand Down
8 changes: 8 additions & 0 deletions scripts/pahole-flags.sh
Expand Up @@ -9,6 +9,10 @@ fi

pahole_ver=$($(dirname $0)/pahole-version.sh ${PAHOLE})

is_enabled() {
grep -q "^$1=y" include/config/auto.conf
}

if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then
# pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars
extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars"
Expand All @@ -19,5 +23,9 @@ fi
if [ "${pahole_ver}" -ge "122" ]; then
extra_paholeopt="${extra_paholeopt} -j"
fi
if is_enabled CONFIG_RUST; then
# see PAHOLE_HAS_LANG_EXCLUDE
extra_paholeopt="${extra_paholeopt} --lang_exclude=rust"
fi

echo ${extra_paholeopt}

0 comments on commit 24aac5f

Please sign in to comment.