From: Martin Rodriguez Reboredo <yakoyoku@xxxxxxxxx> After the release of pahole 1.24 some people in the dwarves mailing list notified issues related to building the kernel with the BTF_DEBUG_INFO option toggled. They seem to be happenning due to the kernel and resolve_btfids interpreting btf types erroneously. In the dwarves list I've proposed a change to the scripts that I've written while testing the Rust kernel, it simply passes the --skip_encoding_btf_enum64 to pahole if it has version 1.24, but it might be desirable to have the option to pass said flag. Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@xxxxxxxxx> --- lib/Kconfig.debug | 14 ++++++++++++++ scripts/pahole-flags.sh | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 072e4b289c13..638a33cf9e57 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -356,6 +356,20 @@ 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_SKIP_ENCODING_BTF_ENUM64 + def_bool PAHOLE_VERSION >= 124 + help + Encoding BTF enum64s can be skipped with the + --skip_encoding_btf_enum64 pahole option. + +config DEBUG_INFO_BTF_SKIP_ENCODING_ENUM64 + def_bool n + depends on DEBUG_INFO_BTF && PAHOLE_HAS_SKIP_ENCODING_BTF_ENUM64 + help + Omit the encoding of 64 bits enum values with pahole. With certain + kernel configurations having ENUM64s enabled may result in malformed + output binaries. + config DEBUG_INFO_BTF_MODULES def_bool y depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh index 0d99ef17e4a5..e44bc2a947ce 100755 --- a/scripts/pahole-flags.sh +++ b/scripts/pahole-flags.sh @@ -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" @@ -19,5 +23,8 @@ fi if [ "${pahole_ver}" -ge "122" ]; then extra_paholeopt="${extra_paholeopt} -j" fi +if is_enabled DEBUG_INFO_BTF_SKIP_ENCODING_ENUM64; then + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" +fi echo ${extra_paholeopt} -- 2.37.2