mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 05:48:07 -05:00
gnu: Add dwarves.
* gnu/packages/linux.scm (dwarves): New variable. Change-Id: Ib2452868eae76bea95060a70e568dfb6e84b2a75
This commit is contained in:
parent
3528d888ee
commit
e9e825387f
3 changed files with 72 additions and 0 deletions
|
@ -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 \
|
||||
|
|
|
@ -2411,6 +2411,54 @@ (define-public dislocker
|
|||
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")
|
||||
|
|
23
gnu/packages/patches/dwarves-threading-reproducibility.patch
Normal file
23
gnu/packages/patches/dwarves-threading-reproducibility.patch
Normal file
|
@ -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
|
Loading…
Reference in a new issue