[PATCH 2/6] tools/dwarves: add host package

Stijn Tintel stijn at linux-ipv6.be
Sun Feb 27 03:57:22 PST 2022


From: Tony Ambardar <itugrok at yahoo.com>

dwarves is a set of tools that use the debugging information inserted in
ELF binaries by compilers such as GCC. Utilities in the dwarves suite
include pahole, which can be used to find alignment holes in structs and
classes, and also extracts other information such as CPU cacheline
alignment, helping pack those structures to achieve more cache hits.

These tools are also used to encode and read the BTF type information
format used with the bpf syscall, making this a Linux build dependency
when using kernel BTF information.

Signed-off-by: Tony Ambardar <itugrok at yahoo.com>
Signed-off-by: Felix Fietkau <nbd at nbd.name>
[bump to 1.23]
Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
---
 toolchain/Config.in    |  8 ++++++++
 tools/Makefile         |  1 +
 tools/dwarves/Makefile | 38 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+)
 create mode 100644 tools/dwarves/Makefile

diff --git a/toolchain/Config.in b/toolchain/Config.in
index 366f5c8b48..fb14006055 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -247,6 +247,14 @@ comment "Binary tools"
 
 source "toolchain/binutils/Config.in"
 
+config DWARVES
+	bool
+	prompt "Build pahole" if TOOLCHAINOPTS
+	depends on !HOST_OS_MACOS
+	default n
+	help
+	  Enable if you want to build pahole and the dwarves tools.
+
 comment "Compiler"
 	depends on TOOLCHAINOPTS
 
diff --git a/tools/Makefile b/tools/Makefile
index 681344a014..9eefcaf393 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -36,6 +36,7 @@ tools-$(CONFIG_TARGET_tegra) += cbootimage cbootimage-configs
 tools-$(CONFIG_USES_MINOR) += kernel2minor
 tools-$(CONFIG_USE_SPARSE) += sparse
 tools-$(CONFIG_USE_LLVM_BUILD) += llvm-bpf
+tools-$(CONFIG_DWARVES) += dwarves
 
 # builddir dependencies
 $(curdir)/autoconf/compile := $(curdir)/m4/compile
diff --git a/tools/dwarves/Makefile b/tools/dwarves/Makefile
new file mode 100644
index 0000000000..b02a2398a1
--- /dev/null
+++ b/tools/dwarves/Makefile
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=dwarves
+
+PKG_SOURCE_VERSION:=v1.23
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/devel/pahole/pahole.git
+PKG_MIRROR_HASH:=6ab1bb1dbdf6c73ffcf485d909229dc1da1a3d24efd213e92c56489b58d6a4bd
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+
+HOST_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+CMAKE_HOST_OPTIONS += \
+	-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \
+	-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH \
+	-DCMAKE_BUILD_TYPE=Release \
+	-D__LIB=lib \
+	-DCMAKE_INSTALL_RPATH="$(STAGING_DIR_HOST)/lib" \
+	-DCMAKE_SKIP_RPATH=FALSE
+
+define Host/Clean
+	rm -f $(STAGING_DIR_HOST)/bin/{codiff,ctracer,dtagnames,pahole,pdwtags}
+	rm -f $(STAGING_DIR_HOST)/bin/{pfunct,pglobal,prefcnt,scncopy,syscse}
+	rm -f $(STAGING_DIR_HOST)/bin/{ostra-cg,btfdiff,fullcircle}
+	rm -f $(STAGING_DIR_HOST)/lib/libdwarves*.so*
+	rm -f $(STAGING_DIR_HOST)/share/man/man1/pahole.1
+	rm -rf $(STAGING_DIR_HOST)/include/dwarves
+	rm -rf $(STAGING_DIR_HOST)/share/dwarves
+	$(call Host/Clean/Default)
+endef
+
+$(eval $(call HostBuild))
-- 
2.34.1




More information about the openwrt-devel mailing list