Skip to content

Commit

Permalink
Backport buildroot patch to add BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE.
Browse files Browse the repository at this point in the history
This config option permits indicating the Linux kernel needs pahole to be
compiled.
Thus, host-pahole will be built before the kernel.
This is mandatory when using CONFIG_DEBUG_INFO_BTF.

Signed-off-by: Francis Laniel <flaniel@microsoft.com>
  • Loading branch information
eiffel-fl committed Jun 10, 2022
1 parent 5a9a4b1 commit ca1f05e
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,9 @@ minikube-iso-%: deploy/iso/minikube-iso/board/minikube/%/rootfs-overlay/usr/bin/
perl -pi -e 's@\s+source "package/sysdig/Config\.in"\n@@;' $(BUILD_DIR)/buildroot/package/Config.in; \
rm -r $(BUILD_DIR)/buildroot/package/sysdig; \
cp deploy/iso/minikube-iso/go.hash $(BUILD_DIR)/buildroot/package/go/go.hash; \
git --git-dir=$(BUILD_DIR)/buildroot/.git config user.email "dev@random.com"; \
git --git-dir=$(BUILD_DIR)/buildroot/.git config user.name "Random developer"; \
git --git-dir=$(BUILD_DIR)/buildroot/.git --work-tree=$(BUILD_DIR)/buildroot am ../../deploy/iso/minikube-iso/0001-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE.patch; \
fi;
$(MAKE) -C $(BUILD_DIR)/buildroot $(BUILDROOT_OPTIONS) O=$(BUILD_DIR)/buildroot/output-$* minikube_$*_defconfig
$(MAKE) -C $(BUILD_DIR)/buildroot $(BUILDROOT_OPTIONS) O=$(BUILD_DIR)/buildroot/output-$* host-python
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
From 2da2f359dba50aafef1202edda34374d99b77a14 Mon Sep 17 00:00:00 2001
From: Francis Laniel <flaniel@linux.microsoft.com>
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 <flaniel@linux.microsoft.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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),
--
2.25.1

0 comments on commit ca1f05e

Please sign in to comment.