diff mbox series

[v2,2/2] linux: add BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE

Message ID 20211222174905.71902-3-flaniel@linux.microsoft.com
State Accepted
Headers show
Series Enable BTF headers for Linux kernel | expand

Commit Message

Francis Laniel Dec. 22, 2021, 5:49 p.m. UTC
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>
---
 linux/Config.in               | 12 ++++++++++++
 linux/linux.mk                | 12 ++++++++++++
 package/pahole/Config.in.host |  2 ++
 3 files changed, 26 insertions(+)

Comments

Thomas Petazzoni Jan. 13, 2022, 9:41 p.m. UTC | #1
Hello,

On Wed, 22 Dec 2021 18:49:05 +0100
Francis Laniel <flaniel@linux.microsoft.com> wrote:

> 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>

Thanks, applied, with one change.

> diff --git a/package/pahole/Config.in.host b/package/pahole/Config.in.host
> index e427629632..521874961b 100644
> --- a/package/pahole/Config.in.host
> +++ b/package/pahole/Config.in.host
> @@ -3,4 +3,6 @@ config BR2_PACKAGE_HOST_PAHOLE
>  	help
>  	  Pahole and other DWARF utils.
>  
> +	  Select this if you want to build a kernel with CONFIG_DEBUG_INFO_BTF set.
> +

I've dropped this, because it's not really this option that should be
enabled if the kernel is configured with CONFIG_DEBUG_INFO_BTF, but the
BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE option.

Thanks for your contribution!

Best regards,

Thomas
Francis Laniel Jan. 17, 2022, 1:51 p.m. UTC | #2
Hi.


Le jeudi 13 janvier 2022, 22:41:26 CET Thomas Petazzoni a écrit :
> Hello,
> 
> On Wed, 22 Dec 2021 18:49:05 +0100
> 
> Francis Laniel <flaniel@linux.microsoft.com> wrote:
> > 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>
> 
> Thanks, applied, with one change.
> 
> > diff --git a/package/pahole/Config.in.host b/package/pahole/Config.in.host
> > index e427629632..521874961b 100644
> > --- a/package/pahole/Config.in.host
> > +++ b/package/pahole/Config.in.host
> > @@ -3,4 +3,6 @@ config BR2_PACKAGE_HOST_PAHOLE
> > 
> >  	help
> >  	
> >  	  Pahole and other DWARF utils.
> > 
> > +	  Select this if you want to build a kernel with CONFIG_DEBUG_INFO_BTF
> > set. +
> 
> I've dropped this, because it's not really this option that should be
> enabled if the kernel is configured with CONFIG_DEBUG_INFO_BTF, but the
> BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE option.

Your modification made the thing clearer, thank you for it!

> Thanks for your contribution!

You are welcome! I thank you for the merge!

> Best regards,

Best regards.
 
> Thomas
diff mbox series

Patch

diff --git a/linux/Config.in b/linux/Config.in
index 6c30100921..ef86cbc021 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..acb2464e8d 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),
diff --git a/package/pahole/Config.in.host b/package/pahole/Config.in.host
index e427629632..521874961b 100644
--- a/package/pahole/Config.in.host
+++ b/package/pahole/Config.in.host
@@ -3,4 +3,6 @@  config BR2_PACKAGE_HOST_PAHOLE
 	help
 	  Pahole and other DWARF utils.
 
+	  Select this if you want to build a kernel with CONFIG_DEBUG_INFO_BTF set.
+
 	  https://git.kernel.org/pub/scm/devel/pahole/pahole.git