mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 22:08:16 -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/dune-istl-fix-solver-playground.patch \
|
||||||
%D%/packages/patches/durden-shadow-arcan.patch \
|
%D%/packages/patches/durden-shadow-arcan.patch \
|
||||||
%D%/packages/patches/dvd+rw-tools-add-include.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/dynaconf-unvendor-deps.patch \
|
||||||
%D%/packages/patches/dyninst-fix-glibc-compatibility.patch \
|
%D%/packages/patches/dyninst-fix-glibc-compatibility.patch \
|
||||||
%D%/packages/patches/efivar-211.patch \
|
%D%/packages/patches/efivar-211.patch \
|
||||||
|
|
|
@ -2411,6 +2411,54 @@ (define-public dislocker
|
||||||
partitions. Write functionality is also provided but check the README.")
|
partitions. Write functionality is also provided but check the README.")
|
||||||
(license license:gpl2+)))
|
(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
|
(define-public fbset
|
||||||
(package
|
(package
|
||||||
(name "fbset")
|
(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