aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Ambardar <itugrok@yahoo.com>2020-11-24 14:15:09 -0800
committerStijn Tintel <stijn@linux-ipv6.be>2022-05-18 13:32:06 +0300
commit02850d7c9cd077c4e890550bf5867aafd7c2542a (patch)
treeaba498b174fcf80ecbf8e3db34ef16dfbfad888c
parent6300313deed3688c86cf5633ada439f09e8bcbfd (diff)
downloadupstream-02850d7c9cd077c4e890550bf5867aafd7c2542a.tar.gz
upstream-02850d7c9cd077c4e890550bf5867aafd7c2542a.tar.bz2
upstream-02850d7c9cd077c4e890550bf5867aafd7c2542a.zip
tools/dwarves: add host package
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@yahoo.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> [bump to 1.23, add elfutils dep, drop host lib usage, drop cmake release target, use RM macro] Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
-rw-r--r--toolchain/Config.in8
-rw-r--r--tools/Makefile2
-rw-r--r--tools/dwarves/Makefile35
3 files changed, 45 insertions, 0 deletions
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 416039cf38..507971c6d5 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -84,7 +84,9 @@ endif
ifeq ($(HOST_OS),Darwin)
tools-y += bash
else
+ $(curdir)/dwarves/compile += $(curdir)/elfutils/compile
$(curdir)/elfutils/compile := $(curdir)/zlib/compile
+ tools-$(CONFIG_DWARVES) += dwarves
tools-y += elfutils
endif
diff --git a/tools/dwarves/Makefile b/tools/dwarves/Makefile
new file mode 100644
index 0000000000..41f0532701
--- /dev/null
+++ b/tools/dwarves/Makefile
@@ -0,0 +1,35 @@
+# 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 += \
+ -D__LIB=lib \
+ -DCMAKE_INSTALL_RPATH="$(STAGING_DIR_HOST)/lib" \
+ -DCMAKE_SKIP_RPATH=FALSE
+
+define Host/Clean
+ $(RM) $(STAGING_DIR_HOST)/bin/{codiff,ctracer,dtagnames,pahole,pdwtags}
+ $(RM) $(STAGING_DIR_HOST)/bin/{pfunct,pglobal,prefcnt,scncopy,syscse}
+ $(RM) $(STAGING_DIR_HOST)/bin/{ostra-cg,btfdiff,fullcircle}
+ $(RM) $(STAGING_DIR_HOST)/lib/libdwarves*.so*
+ $(RM) $(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))