diff options
Diffstat (limited to '0005-pahole-flags.patch')
-rw-r--r-- | 0005-pahole-flags.patch | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/0005-pahole-flags.patch b/0005-pahole-flags.patch new file mode 100644 index 000000000000..ca59086ea29d --- /dev/null +++ b/0005-pahole-flags.patch @@ -0,0 +1,133 @@ +diff --git a/Makefile b/Makefile +index 437ccc66a1c281..8f24bceec62d7d 100644 +--- a/Makefile ++++ b/Makefile +@@ -480,6 +480,8 @@ LZ4 = lz4c + XZ = xz + ZSTD = zstd + ++PAHOLE_FLAGS = $(shell PAHOLE=$(PAHOLE) $(srctree)/scripts/pahole-flags.sh) ++ + CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ + -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF) + NOSTDINC_FLAGS := +@@ -534,6 +536,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE + export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE + export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE + export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL ++export PAHOLE_FLAGS + + # Files to ignore in find ... statements + +diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal +index ff805777431c..ce9661d968a3 100644 +--- a/scripts/Makefile.modfinal ++++ b/scripts/Makefile.modfinal +@@ -40,7 +40,7 @@ quiet_cmd_ld_ko_o = LD [M] $@ + quiet_cmd_btf_ko = BTF [M] $@ + cmd_btf_ko = \ + if [ -f vmlinux ]; then \ +- LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J --btf_base vmlinux $@; \ ++ LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J $(PAHOLE_FLAGS) --btf_base vmlinux $@; \ + else \ + printf "Skipping BTF generation for %s due to unavailability of vmlinux\n" $@ 1>&2; \ + fi; +diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh +index d74cee5c4326..57ef6accbb40 100755 +--- a/scripts/link-vmlinux.sh ++++ b/scripts/link-vmlinux.sh +@@ -120,6 +120,9 @@ objtool_link() + + if [ -n "${CONFIG_VMLINUX_VALIDATION}" ]; then + objtoolopt="${objtoolopt} --noinstr" ++ if is_enabled CONFIG_CPU_UNRET_ENTRY; then ++ objtoolopt="${objtoolopt} --unret" ++ fi + fi + + if [ -n "${objtoolopt}" ]; then +@@ -139,6 +142,9 @@ objtool_link() + if [ -n "${CONFIG_X86_SMAP}" ]; then + objtoolopt="${objtoolopt} --uaccess" + fi ++ if [ -n "${CONFIG_SLS}" ]; then ++ objtoolopt="${objtoolopt} --sls" ++ fi + info OBJTOOL ${1} + tools/objtool/objtool ${objtoolcmd} ${objtoolopt} ${1} + fi +@@ -205,7 +211,6 @@ vmlinux_link() + gen_btf() + { + local pahole_ver +- local extra_paholeopt= + + if ! [ -x "$(command -v ${PAHOLE})" ]; then + echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" +@@ -220,16 +225,8 @@ gen_btf() + + vmlinux_link ${1} + +- 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" +- fi +- if [ "${pahole_ver}" -ge "121" ]; then +- extra_paholeopt="${extra_paholeopt} --btf_gen_floats" +- fi +- + info "BTF" ${2} +- LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1} ++ LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${PAHOLE_FLAGS} ${1} + + # Create ${2} which contains just .BTF section but no symbols. Add + # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all +diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh +new file mode 100755 +index 000000000000..d38fa6d84d62 +--- /dev/null ++++ b/scripts/pahole-flags.sh +@@ -0,0 +1,24 @@ ++#!/bin/sh ++# SPDX-License-Identifier: GPL-2.0 ++ ++extra_paholeopt= ++ ++if ! [ -x "$(command -v ${PAHOLE})" ]; then ++ exit 0 ++fi ++ ++pahole_ver=$($(dirname $0)/pahole-version.sh ${PAHOLE}) ++ ++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" ++fi ++if [ "${pahole_ver}" -ge "121" ]; then ++ extra_paholeopt="${extra_paholeopt} --btf_gen_floats" ++fi ++ ++if [ "${pahole_ver}" -ge "124" ]; then ++ extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" ++fi ++ ++echo ${extra_paholeopt} +diff --git a/scripts/pahole-version.sh b/scripts/pahole-version.sh +new file mode 100755 +index 000000000000..f8a32ab93ad1 +--- /dev/null ++++ b/scripts/pahole-version.sh +@@ -0,0 +1,13 @@ ++#!/bin/sh ++# SPDX-License-Identifier: GPL-2.0 ++# ++# Usage: $ ./pahole-version.sh pahole ++# ++# Prints pahole's version in a 3-digit form, such as 119 for v1.19. ++ ++if [ ! -x "$(command -v "$@")" ]; then ++ echo 0 ++ exit 1 ++fi ++ ++"$@" --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/' |