[PATCH 2/6] tools/dwarves: add host package
Ansuel Smith
ansuelsmth at gmail.com
Sun Feb 27 07:20:13 PST 2022
>
> From: Tony Ambardar <itugrok at yahoo.com>
>
> 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.
BTW this fails to build if libdw-dev is not installed with
-- Checking availability of DWARF and ELF development libraries
-- Could NOT find dwarf include dir
-- Could NOT find libdw include dir
-- Could NOT find libdw library
CMake Error at cmake/modules/FindDWARF.cmake:93 (message):
Could NOT find some ELF and DWARF libraries, please install the missing
packages
Call Stack (most recent call first):
CMakeLists.txt:60 (find_package)
ERROR: tools/dwarves failed to build.
Should we add it to the build prereq?
>
> Signed-off-by: Tony Ambardar <itugrok at yahoo.com>
> Signed-off-by: Felix Fietkau <nbd at nbd.name>
> [bump to 1.23]
> Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
> ---
> 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 681344a014..9eefcaf393 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..b02a2398a1
> --- /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.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 += \
> + -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.34.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list