From 2da2f359dba50aafef1202edda34374d99b77a14 Mon Sep 17 00:00:00 2001 From: Francis Laniel Date: Wed, 22 Dec 2021 18:49:05 +0100 Subject: [PATCH] linux: add BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE CONFIG_DEBUG_BTF_INFO relies on pahole, so kernel DWARF are converted to BTF. If CONFIG_DEBUG_BTF_INFO is set and BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE not, an error message is shown and .config is not written. Signed-off-by: Francis Laniel Signed-off-by: Thomas Petazzoni --- linux/Config.in | 12 ++++++++++++ linux/linux.mk | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/linux/Config.in b/linux/Config.in index 891e2cdcb6..582f37ba7c 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -470,6 +470,18 @@ config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel". +config BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE + bool "Needs host pahole" + help + Some Linux kernel configuration options (such as + CONFIG_DEBUG_INFO_BTF) require building a host program + called pahole. Enabling this option will ensure host-pahole + gets built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "BTF: .tmp_vmlinux.btf: pahole (pahole) is not + available". + # Linux extensions source "linux/Config.ext.in" diff --git a/linux/linux.mk b/linux/linux.mk index 61fdc0c76c..dd2eebd446 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -114,6 +114,17 @@ ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF),y) LINUX_DEPENDENCIES += host-elfutils host-pkgconf endif +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE),y) +LINUX_DEPENDENCIES += host-pahole +else +define LINUX_FIXUP_CONFIG_PAHOLE_CHECK + if grep -q "^CONFIG_DEBUG_INFO_BTF=y" $(KCONFIG_DOT_CONFIG); then \ + echo "To use CONFIG_DEBUG_INFO_BTF, enable host-pahole (BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE)" 1>&2; \ + exit 1; \ + fi +endef +endif + # If host-uboot-tools is selected by the user, assume it is needed to # create a custom image ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS),y) @@ -324,6 +335,7 @@ define LINUX_KCONFIG_FIXUP_CMDS $(call KCONFIG_DISABLE_OPT,$(opt)) ) $(LINUX_FIXUP_CONFIG_ENDIANNESS) + $(LINUX_FIXUP_CONFIG_PAHOLE_CHECK) $(if $(BR2_arm)$(BR2_armeb), $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI)) $(if $(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),