tools/dwarves: add host package
authorTony Ambardar <itugrok@yahoo.com>
Tue, 24 Nov 2020 22:15:09 +0000 (14:15 -0800)
committerStijn Tintel <stijn@linux-ipv6.be>
Mon, 28 Mar 2022 11:58:33 +0000 (14:58 +0300)
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, depend on elfutils/host, drop host lib usage, drop cmake
release target, use RM macro]
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
toolchain/Config.in
tools/Makefile
tools/dwarves/Makefile [new file with mode: 0644]

index 366f5c8b486c462372ae3f1f187a363c249c531e..fb14006055582e051840c21ed0c07d1d4aa0ca86 100644 (file)
@@ -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
 
index ec382b41225244a6c0edef9c5dfce02252e4b6d9..a64de29a4e4b48f682dca19362241c1b814031d7 100644 (file)
@@ -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 (file)
index 0000000..b248022
--- /dev/null
@@ -0,0 +1,36 @@
+# 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_DEPENDS:=elfutils/host
+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))