From c1913ef69cd76c449748f8f69f977b7b0a07c465 Mon Sep 17 00:00:00 2001 From: Tony Ambardar Date: Tue, 24 Nov 2020 14:15:09 -0800 Subject: [PATCH] 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 Signed-off-by: Felix Fietkau --- 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 686d5294d3..d7d1883584 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..2fa7469e37 --- /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.21 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/devel/pahole/pahole.git +PKG_MIRROR_HASH:=da617b5a6ef93e0a1dabd7e4b21212644a3797df2fa11c98e64533ce1358c042 +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.30.2