Skip to content

Commit

Permalink
tools/dwarves: add host package
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
guidosarducci authored and stintel committed May 18, 2022
1 parent 6300313 commit 02850d7
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
8 changes: 8 additions & 0 deletions toolchain/Config.in
Expand Up @@ -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

Expand Down
2 changes: 2 additions & 0 deletions tools/Makefile
Expand Up @@ -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

Expand Down
35 changes: 35 additions & 0 deletions 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))

0 comments on commit 02850d7

Please sign in to comment.