[openwrt/openwrt] tools/dwarves: add host package

LEDE Commits lede-commits at lists.infradead.org
Wed May 18 04:32:46 PDT 2022


stintel pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/02850d7c9cd077c4e890550bf5867aafd7c2542a

commit 02850d7c9cd077c4e890550bf5867aafd7c2542a
Author: Tony Ambardar <itugrok at yahoo.com>
AuthorDate: Tue Nov 24 14:15:09 2020 -0800

    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 at yahoo.com>
    Signed-off-by: Felix Fietkau <nbd at 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 at linux-ipv6.be>
---
 toolchain/Config.in    |  8 ++++++++
 tools/Makefile         |  2 ++
 tools/dwarves/Makefile | 35 +++++++++++++++++++++++++++++++++++
 3 files changed, 45 insertions(+)

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




More information about the lede-commits mailing list