[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
09/16: gnu: Add dwarves.
From: |
guix-commits |
Subject: |
09/16: gnu: Add dwarves. |
Date: |
Wed, 29 May 2024 22:03:16 -0400 (EDT) |
apteryx pushed a commit to branch master
in repository guix.
commit e9e825387f1daefde91b0ba5c5ec3540b0b227fa
Author: Maxim Cournoyer <maxim.cournoyer@gmail.com>
AuthorDate: Wed May 8 10:02:36 2024 -0400
gnu: Add dwarves.
* gnu/packages/linux.scm (dwarves): New variable.
Change-Id: Ib2452868eae76bea95060a70e568dfb6e84b2a75
---
gnu/local.mk | 1 +
gnu/packages/linux.scm | 48 ++++++++++++++++++++++
.../dwarves-threading-reproducibility.patch | 23 +++++++++++
3 files changed, 72 insertions(+)
diff --git a/gnu/local.mk b/gnu/local.mk
index 6c50b315ed..cc07041ebc 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1128,6 +1128,7 @@ dist_patch_DATA =
\
%D%/packages/patches/dune-istl-fix-solver-playground.patch \
%D%/packages/patches/durden-shadow-arcan.patch \
%D%/packages/patches/dvd+rw-tools-add-include.patch \
+ %D%/packages/patches/dwarves-threading-reproducibility.patch \
%D%/packages/patches/dynaconf-unvendor-deps.patch \
%D%/packages/patches/dyninst-fix-glibc-compatibility.patch \
%D%/packages/patches/efivar-211.patch \
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 4177e1c97e..2ce2c27c93 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -2411,6 +2411,54 @@ by Robert Shea and Robert Anton Wilson.")
partitions. Write functionality is also provided but check the README.")
(license license:gpl2+)))
+(define-public dwarves
+ (package
+ (name "dwarves")
+ (version "1.26")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/acmel/dwarves")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0xfq0r3whc3dk922ss8i5vwyfcqhgc95dy27mm69j5niy7i5kzrd"))
+ (patches
+ (search-patches "dwarves-threading-reproducibility.patch"))))
+ (build-system cmake-build-system)
+ (arguments (list #:configure-flags #~(list "-D__LIB=lib"
+ "-DLIBBPF_EMBEDDED=OFF")
+ #:tests? #f)) ;no test suite
+ (native-inputs (list pkg-config))
+ (inputs (list libbpf))
+ (home-page "https://github.com/acmel/dwarves")
+ (synopsis "Debugging information processing library and utilities")
+ (description "Dwarves is a set of tools that use the debugging information
+inserted in ELF binaries by compilers such as GCC, used by well known
+debuggers such as GDB.
+
+Utilities in the Dwarves suite include @command{pahole}, that can be used to
+find alignment holes in structures and classes in languages such as C, C++,
+but not limited to these. These tools can also be used to encode and read the
+BTF type information format used with the kernel Linux @code{bpf} syscall.
+
+The @command{codiff} command can be used to compare the effects changes in
+source code generate on the resulting binaries.
+
+The @command{pfunct} command can be used to find all sorts of information
+about functions, inlines, decisions made by the compiler about inlining, etc.
+
+The @command{pahole} command can be used to use all this type information to
+pretty print raw data according to command line directions.
+
+Headers can have its data format described from debugging info and offsets from
+it can be used to further format a number of records.
+
+Finally, the @command{btfdiff} command can be used to compare the output of
+pahole from BTF and DWARF, to make sure they produce the same results. ")
+ (license license:gpl2+)))
+
(define-public fbset
(package
(name "fbset")
diff --git a/gnu/packages/patches/dwarves-threading-reproducibility.patch
b/gnu/packages/patches/dwarves-threading-reproducibility.patch
new file mode 100644
index 0000000000..8771ca6b0d
--- /dev/null
+++ b/gnu/packages/patches/dwarves-threading-reproducibility.patch
@@ -0,0 +1,23 @@
+Retrieved from nixpkgs.
+
+This causes pahole to use '-j1' (single thread) when SOURCE_DATE_EPOCH
+is set, to ensure it produces reproducible output.
+
+diff --git a/pahole.c b/pahole.c
+index 6fc4ed6..a4e306f 100644
+--- a/pahole.c
++++ b/pahole.c
+@@ -1687,8 +1687,11 @@ static error_t pahole__options_parser(int key, char
*arg,
+ class_name = arg; break;
+ case 'j':
+ #if _ELFUTILS_PREREQ(0, 178)
+- conf_load.nr_jobs = arg ? atoi(arg) :
+- sysconf(_SC_NPROCESSORS_ONLN) * 1.1;
++ // Force single thread if reproducibility is desirable.
++ if (!getenv("SOURCE_DATE_EPOCH")) {
++ conf_load.nr_jobs = arg ? atoi(arg) :
++
sysconf(_SC_NPROCESSORS_ONLN) * 1.1;
++ }
+ #else
+ fputs("pahole: Multithreading requires elfutils >= 0.178.
Continuing with a single thread...\n", stderr);
+ #endif
- branch master updated (a05c130435 -> 29a4514a34), guix-commits, 2024/05/29
- 01/16: gnu: nss/fixed: Hasten test suite., guix-commits, 2024/05/29
- 03/16: gnu: grpc: Propagate abseil-cpp-cxxstd11., guix-commits, 2024/05/29
- 04/16: gnu: Add valijson., guix-commits, 2024/05/29
- 05/16: gnu: libbpf: Use gexps., guix-commits, 2024/05/29
- 02/16: gnu: grpc: Modernize., guix-commits, 2024/05/29
- 07/16: gnu: Add falcosecurity-libs., guix-commits, 2024/05/29
- 08/16: gnu: Add sysdig., guix-commits, 2024/05/29
- 06/16: gnu: libbpf: Update to 1.4.1., guix-commits, 2024/05/29
- 09/16: gnu: Add dwarves.,
guix-commits <=
- 12/16: gnu: linux: Turn %default-extra-linux-options into a procedure., guix-commits, 2024/05/29
- 13/16: gnu: linux-libre: Enable BTF debug info., guix-commits, 2024/05/29
- 14/16: gnu: linux-libre: Enable Zstd compression of kernel modules., guix-commits, 2024/05/29
- 10/16: gnu: make-linux-libre*: Set KBUILD_BUILD_VERSION for reproducibility., guix-commits, 2024/05/29
- 11/16: gnu: make-linux-libre*: Run install targets in parallel., guix-commits, 2024/05/29
- 15/16: gnu: linux-libre-with-bpf: Deprecate in favor of linux-libre., guix-commits, 2024/05/29
- 16/16: gnu: cling: Update to 1.0., guix-commits, 2024/05/29