After switching to the kernel's default package scripts for our local kernel RPM builds, we noticed that module BTF entries were missing: $ ls /sys/kernel/btf/ vmlinux <<<< only vmlinux, no module BTF Root cause: find-debuginfo.sh (from the debugedit package) prefers eu-strip over strip when elfutils is installed, which is the common case on RHEL 9. eu-strip removes non-allocated ELF sections, including the .BTF section that contains BPF Type Format information for kernel modules. Without .BTF, BPF tools (bpftool, bcc, bpftrace) cannot resolve kernel types at runtime, and /sys/kernel/btf/ entries are not created when modules are loaded. Fix by passing --keep-section .BTF via _find_debuginfo_opts, which adds -K .BTF to the eu-strip/strip command, preserving the .BTF section while allowing normal debuginfo extraction to proceed. After this change, all module BTF files are properly generated: $ ls /sys/kernel/btf/ aesni_intel drm i2c_i801 mfd_core ahci drm_client_lib i2c_mux net_failover backlight drm_kms_helper i2c_smbus pcspkr ccp drm_shmem_helper input_leds qemu_fw_cfg dm_log failover intel_rapl_common sch_fq_codel dm_mirror fat intel_rapl_msr serio_raw dm_mod fuse irqbypass sunrpc dm_region_hash gf128mul iTCO_wdt vfat virtio_balloon virtio_console virtio_dma_buf virtio_gpu virtio_net virtio_rng virtio_blk vmlinux xfs Assisted-by: Comagic:DeepSeek-V4-Flash Signed-off-by: Yafang Shao --- scripts/package/kernel.spec | 2 +- scripts/package/mkspec | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) v1->v2: check if find-debuginfo.sh supports --keep-section (sashiko-bot) diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec index c732415662ef..2e16de54ed74 100644 --- a/scripts/package/kernel.spec +++ b/scripts/package/kernel.spec @@ -67,7 +67,7 @@ This package provides debug information for the kernel image and modules from th %undefine _unique_debug_srcs %undefine _debugsource_packages %undefine _debuginfo_subpackages -%global _find_debuginfo_opts -r +%global _find_debuginfo_opts -r%{?with_keep_section: --keep-section .BTF} %global _missing_build_ids_terminate_build 1 %global _no_recompute_build_ids 1 %{debug_package} diff --git a/scripts/package/mkspec b/scripts/package/mkspec index c604f8c174e2..00acef348ba8 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec @@ -65,6 +65,11 @@ fi echo "%define with_debuginfo_manual $with_debuginfo_manual" echo "%define with_debuginfo_rpm $with_debuginfo_rpm" +# Detect if find-debuginfo.sh supports --keep-section (RHEL 9+) +if find-debuginfo.sh --help 2>&1 | grep -q keep-section; then + echo "%global with_keep_section 1" +fi + cat<