From 7a3aaf0dcbd861052d3731e029d9fab2e45e4068 Mon Sep 17 00:00:00 2001 From: Cole Leavitt Date: Tue, 17 Feb 2026 15:48:55 -0700 Subject: [PATCH] kernel-open: fix BTF generation on kernel 6.15+ Kernel 6.15+ replaced scripts/pahole-flags.sh with scripts/Makefile.btf and scripts/gen-btf.sh for BTF generation. The existing check only looks for pahole-flags.sh, causing the PAHOLE_AWK_PROGRAM wrapper to be used unnecessarily on newer kernels. This wrapper has shell quoting issues that result in awk parse errors during module build. Update the condition to also check for Makefile.btf, allowing the kernel's native BTF infrastructure to handle generation without the awk wrapper. Signed-off-by: Cole Leavitt --- kernel-open/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/kernel-open/Makefile b/kernel-open/Makefile index f7a8db69f..3a7eab54f 100644 --- a/kernel-open/Makefile +++ b/kernel-open/Makefile @@ -92,10 +92,11 @@ else # system(pahole_cmd) # } PAHOLE_AWK_PROGRAM = BEGIN { pahole_cmd = \"pahole\"; for (i = 1; i < ARGC; i++) { if (ARGV[i] ~ /--lang_exclude=/) { pahole_cmd = pahole_cmd sprintf(\" %s,c++\", ARGV[i]); } else { pahole_cmd = pahole_cmd sprintf(\" %s\", ARGV[i]); } } system(pahole_cmd); } - # If scripts/pahole-flags.sh is not present in the kernel tree, add PAHOLE and - # PAHOLE_AWK_PROGRAM assignments to PAHOLE_VARIABLES; otherwise assign the - # empty string to PAHOLE_VARIABLES. - PAHOLE_VARIABLES=$(if $(wildcard $(KERNEL_SOURCES)/scripts/pahole-flags.sh),,"PAHOLE=$(AWK) '$(PAHOLE_AWK_PROGRAM)'") + # If scripts/pahole-flags.sh or scripts/Makefile.btf is present in the kernel + # tree, the kernel handles BTF generation natively; otherwise add PAHOLE and + # PAHOLE_AWK_PROGRAM assignments to PAHOLE_VARIABLES. + # Kernel 6.15+ uses Makefile.btf + gen-btf.sh instead of pahole-flags.sh. + PAHOLE_VARIABLES=$(if $(or $(wildcard $(KERNEL_SOURCES)/scripts/pahole-flags.sh),$(wildcard $(KERNEL_SOURCES)/scripts/Makefile.btf)),,"PAHOLE=$(AWK) '$(PAHOLE_AWK_PROGRAM)'") ifndef ARCH ARCH := $(shell uname -m | sed -e 's/i.86/i386/' \