| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | |
| 17 | |
| 18 | |
| 19 | |
| 20 | |
| 21 | |
| 22 | |
| 23 |
|
| 24 | (define-module (gnu packages debug)
|
| 25 | #:use-module (guix packages)
|
| 26 | #:use-module ((guix licenses) #:prefix license:)
|
| 27 | #:use-module (guix download)
|
| 28 | #:use-module (guix git-download)
|
| 29 | #:use-module (guix utils)
|
| 30 | #:use-module (guix build-system gnu)
|
| 31 | #:use-module (guix build-system cmake)
|
| 32 | #:use-module (gnu packages)
|
| 33 | #:use-module (gnu packages attr)
|
| 34 | #:use-module (gnu packages autotools)
|
| 35 | #:use-module (gnu packages base)
|
| 36 | #:use-module (gnu packages bash)
|
| 37 | #:use-module (gnu packages bison)
|
| 38 | #:use-module (gnu packages code)
|
| 39 | #:use-module (gnu packages compression)
|
| 40 | #:use-module (gnu packages flex)
|
| 41 | #:use-module (gnu packages gdb)
|
| 42 | #:use-module (gnu packages glib)
|
| 43 | #:use-module (gnu packages gtk)
|
| 44 | #:use-module (gnu packages golang)
|
| 45 | #:use-module (gnu packages image)
|
| 46 | #:use-module (gnu packages linux)
|
| 47 | #:use-module (gnu packages llvm)
|
| 48 | #:use-module (gnu packages ncurses)
|
| 49 | #:use-module (gnu packages ninja)
|
| 50 | #:use-module (gnu packages perl)
|
| 51 | #:use-module (gnu packages pkg-config)
|
| 52 | #:use-module (gnu packages pretty-print)
|
| 53 | #:use-module (gnu packages python)
|
| 54 | #:use-module (gnu packages python-xyz)
|
| 55 | #:use-module (gnu packages readline)
|
| 56 | #:use-module (gnu packages serialization)
|
| 57 | #:use-module (gnu packages virtualization)
|
| 58 | #:use-module (gnu packages xdisorg)
|
| 59 | #:use-module (ice-9 match)
|
| 60 | #:use-module (srfi srfi-1))
|
| 61 |
|
| 62 | (define-public delta
|
| 63 | (package
|
| 64 | (name "delta")
|
| 65 | (version "2006.08.03")
|
| 66 | (source
|
| 67 | (origin
|
| 68 | (method url-fetch)
|
| 69 | (uri (list
|
| 70 | (string-append "mirror://debian/pool/main/d/delta/"
|
| 71 | "delta_" version ".orig.tar.gz")
|
| 72 | |
| 73 | (string-append "http://delta.tigris.org/files/documents/3103/"
|
| 74 | "33566/delta-" version ".tar.gz")))
|
| 75 | (sha256
|
| 76 | (base32
|
| 77 | "184wh35pf2ddx97319s6sgkzpz48xxkbwzcjpycv009bm53lh61q"))))
|
| 78 | (build-system gnu-build-system)
|
| 79 | (inputs |
| 80 | `(("perl" ,perl)))
|
| 81 | (arguments
|
| 82 | `(#:phases
|
| 83 | (modify-phases %standard-phases
|
| 84 | (replace 'install
|
| 85 | (lambda* (#:key outputs #:allow-other-keys)
|
| 86 | |
| 87 | (let* ((out (assoc-ref outputs "out"))
|
| 88 | (bin (string-append out "/bin"))
|
| 89 | (doc (string-append out "/share/doc/delta-" ,version)))
|
| 90 | (begin
|
| 91 | (for-each (lambda (h)
|
| 92 | (install-file h doc))
|
| 93 | `("License.txt" ,@(find-files "www" ".*\\.html")))
|
| 94 | (for-each (lambda (b)
|
| 95 | (install-file b bin))
|
| 96 | `("delta" "multidelta" "topformflat"))))
|
| 97 | #t))
|
| 98 | (delete 'configure)))) |
| 99 | (home-page "http://delta.tigris.org/")
|
| 100 | (synopsis "Heuristical file minimizer")
|
| 101 | (description
|
| 102 | "Delta assists you in minimizing \"interesting\" files subject to a test
|
| 103 | of their interestingness. A common such situation is when attempting to
|
| 104 | isolate a small failure-inducing substring of a large input that causes your
|
| 105 | program to exhibit a bug.")
|
| 106 | |
| 107 | |
| 108 | (license license:bsd-3)))
|
| 109 |
|
| 110 | (define-public c-reduce
|
| 111 | (package
|
| 112 | (name "c-reduce")
|
| 113 | (version "2.10.0")
|
| 114 | (source
|
| 115 | (origin
|
| 116 | (method url-fetch)
|
| 117 | (uri (list
|
| 118 | (string-append "http://embed.cs.utah.edu/creduce/"
|
| 119 | "creduce-" version ".tar.gz")))
|
| 120 | (sha256
|
| 121 | (base32 "0qx0zq8jxzx2as2zf0740g7kvgq163ayn3041di4vwk77490y76v"))))
|
| 122 | (build-system gnu-build-system)
|
| 123 | (native-inputs `(("flex" ,flex)))
|
| 124 | (inputs
|
| 125 | `(("astyle" ,astyle)
|
| 126 | ("llvm" ,llvm)
|
| 127 | ("clang" ,clang)
|
| 128 | ("indent" ,indent)
|
| 129 | ("perl" ,perl)
|
| 130 | ("exporter-lite" ,perl-exporter-lite)
|
| 131 | ("file-which" ,perl-file-which)
|
| 132 | ("getopt-tabular" ,perl-getopt-tabular)
|
| 133 | ("regex-common" ,perl-regexp-common)
|
| 134 | ("term-readkey" ,perl-term-readkey)))
|
| 135 | (arguments
|
| 136 | `(#:phases
|
| 137 | (modify-phases %standard-phases
|
| 138 | (replace 'check
|
| 139 | (lambda _
|
| 140 | (with-directory-excursion "tests"
|
| 141 | |
| 142 | |
| 143 | (invoke "./run_tests" "1"))))
|
| 144 | (add-after 'install 'set-load-paths
|
| 145 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 146 | |
| 147 | (let* ((out (assoc-ref outputs "out"))
|
| 148 | (prog (string-append out "/bin/creduce")))
|
| 149 | (wrap-program
|
| 150 | prog
|
| 151 | `("PERL5LIB" ":" prefix
|
| 152 | ,(map (lambda (p)
|
| 153 | (string-append (assoc-ref inputs p)
|
| 154 | "/lib/perl5/site_perl/"
|
| 155 | ,(package-version perl)))
|
| 156 | '("term-readkey" "exporter-lite"
|
| 157 | "file-which" "getopt-tabular"
|
| 158 | "regex-common")))))
|
| 159 | #t)))))
|
| 160 | (home-page "https://embed.cs.utah.edu/creduce")
|
| 161 | (synopsis "Reducer for interesting code")
|
| 162 | (description
|
| 163 | "C-Reduce is a tool that takes a large C or C++ program that has a
|
| 164 | property of interest (such as triggering a compiler bug) and automatically
|
| 165 | produces a much smaller C/C++ program that has the same property. It is
|
| 166 | intended for use by people who discover and report bugs in compilers and other
|
| 167 | tools that process C/C++ code.")
|
| 168 | (license license:ncsa)))
|
| 169 |
|
| 170 | (define-public american-fuzzy-lop
|
| 171 | (let ((machine (match (or (%current-target-system)
|
| 172 | (%current-system))
|
| 173 | ("x86_64-linux" "x86_64")
|
| 174 | ("i686-linux" "i386")
|
| 175 | ("aarch64-linux" "aarch64")
|
| 176 | ("armhf-linux" "arm")
|
| 177 | ("mips64el-linux" "mips64el")
|
| 178 | |
| 179 | |
| 180 | (_ "UNSUPPORTED"))))
|
| 181 | (package
|
| 182 | (name "american-fuzzy-lop")
|
| 183 | (version "2.56b") |
| 184 | (source
|
| 185 | (origin
|
| 186 | (method git-fetch)
|
| 187 | (uri (git-reference
|
| 188 | (url "https://github.com/google/AFL")
|
| 189 | (commit (string-append "v" version))))
|
| 190 | (sha256
|
| 191 | (base32 "1q1g59gkm48aa4cg9h70jx4i2gapmypgp5rzs156b2avd95vwkn1"))
|
| 192 | (file-name (git-file-name name version))))
|
| 193 | (build-system gnu-build-system)
|
| 194 | (inputs
|
| 195 | `(("qemu" ,qemu-for-american-fuzzy-lop)))
|
| 196 | (arguments
|
| 197 | `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
|
| 198 | (string-append "DOC_PATH=$(PREFIX)/share/doc/"
|
| 199 | ,name "-" ,version)
|
| 200 | "CC=gcc")
|
| 201 | #:phases (modify-phases %standard-phases
|
| 202 | (add-after 'unpack 'make-git-checkout-writable
|
| 203 | (lambda _
|
| 204 | (for-each make-file-writable (find-files "."))
|
| 205 | #t))
|
| 206 | (delete 'configure)
|
| 207 | ,@(if (string=? (%current-system) (or "x86_64-linux"
|
| 208 | "i686-linux"))
|
| 209 | '()
|
| 210 | '((add-before 'build 'set-afl-flag
|
| 211 | (lambda _ (setenv "AFL_NO_X86" "1") #t))
|
| 212 | (add-after 'install 'remove-x86-programs
|
| 213 | (lambda* (#:key outputs #:allow-other-keys)
|
| 214 | (let* ((out (assoc-ref outputs "out"))
|
| 215 | (bin (string-append out "/bin/")))
|
| 216 | (delete-file (string-append bin "afl-gcc"))
|
| 217 | (delete-file (string-append bin "afl-g++"))
|
| 218 | (delete-file (string-append bin "afl-clang"))
|
| 219 | (delete-file (string-append bin "afl-clang++")))
|
| 220 | #t))))
|
| 221 | (add-after
|
| 222 | |
| 223 | 'install 'install-qemu
|
| 224 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 225 | (let ((qemu (assoc-ref inputs "qemu"))
|
| 226 | (out (assoc-ref outputs "out")))
|
| 227 | (symlink (string-append qemu "/bin/qemu-" ,machine)
|
| 228 | (string-append out "/bin/afl-qemu-trace"))
|
| 229 | #t)))
|
| 230 | (delete 'check)))) |
| 231 | (home-page "https://lcamtuf.coredump.cx/afl/")
|
| 232 | (synopsis "Security-oriented fuzzer")
|
| 233 | (description
|
| 234 | "American fuzzy lop is a security-oriented fuzzer that employs a novel
|
| 235 | type of compile-time instrumentation and genetic algorithms to automatically
|
| 236 | discover clean, interesting test cases that trigger new internal states in the
|
| 237 | targeted binary. This substantially improves the functional coverage for the
|
| 238 | fuzzed code. The compact synthesized corpora produced by the tool are also
|
| 239 | useful for seeding other, more labor- or resource-intensive testing regimes
|
| 240 | down the road.")
|
| 241 | (license license:asl2.0))))
|
| 242 |
|
| 243 | (define-public qemu-for-american-fuzzy-lop
|
| 244 | |
| 245 | |
| 246 | (let ((machine (match (or (%current-target-system)
|
| 247 | (%current-system))
|
| 248 | ("x86_64-linux" "x86_64")
|
| 249 | ("i686-linux" "i386")
|
| 250 | ("aarch64-linux" "aarch64")
|
| 251 | ("armhf-linux" "arm")
|
| 252 | ("mips64el-linux" "mips64el")
|
| 253 | |
| 254 | |
| 255 | (_ "UNSUPPORTED"))))
|
| 256 | (hidden-package
|
| 257 | (package
|
| 258 | (name "qemu")
|
| 259 | (version "2.10.2")
|
| 260 | (source (origin
|
| 261 | (method url-fetch)
|
| 262 | (uri (string-append "https://download.qemu.org/qemu-"
|
| 263 | version ".tar.xz"))
|
| 264 | (sha256
|
| 265 | (base32
|
| 266 | "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw"))
|
| 267 | (patches
|
| 268 | (search-patches "qemu-glibc-2.27.patch"))))
|
| 269 | (build-system gnu-build-system)
|
| 270 | (arguments
|
| 271 | `( |
| 272 | |
| 273 | #:parallel-tests? #f
|
| 274 | #:configure-flags
|
| 275 | (list (string-append "--target-list=" ,machine "-linux-user"))
|
| 276 | #:make-flags '("V=1")
|
| 277 | #:phases
|
| 278 | (modify-phases %standard-phases
|
| 279 | (replace 'configure
|
| 280 | (lambda* (#:key inputs outputs (configure-flags '())
|
| 281 | #:allow-other-keys)
|
| 282 | |
| 283 | |
| 284 | (let ((out (assoc-ref outputs "out")))
|
| 285 | (setenv "SHELL" (which "bash"))
|
| 286 |
|
| 287 | |
| 288 | (substitute* "tests/libqtest.c"
|
| 289 | (("/bin/sh") (which "sh")))
|
| 290 |
|
| 291 | |
| 292 | (setenv "LDFLAGS" "-lrt")
|
| 293 | (apply invoke
|
| 294 | `("./configure"
|
| 295 | ,(string-append "--cc=" (which "gcc"))
|
| 296 | |
| 297 | ,(string-append "--host-cc=" (which "gcc"))
|
| 298 | "--disable-debug-info" |
| 299 | "--enable-virtfs" |
| 300 | ,(string-append "--prefix=" out)
|
| 301 | ,(string-append "--sysconfdir=/etc")
|
| 302 | ,@configure-flags)))))
|
| 303 | (add-after
|
| 304 | 'unpack 'apply-afl-patches
|
| 305 | (lambda* (#:key inputs #:allow-other-keys)
|
| 306 | (let* ((afl-src (assoc-ref inputs "afl-source"))
|
| 307 | (patch-dir "qemu_mode/patches"))
|
| 308 | (copy-recursively (string-append afl-src "/"
|
| 309 | patch-dir)
|
| 310 | patch-dir)
|
| 311 | (install-file
|
| 312 | (string-append patch-dir
|
| 313 | "/afl-qemu-cpu-inl.h")
|
| 314 | ".")
|
| 315 | (copy-file (string-append afl-src "/config.h")
|
| 316 | "./afl-config.h")
|
| 317 | (install-file (string-append afl-src "/types.h")
|
| 318 | ".")
|
| 319 | (substitute* "afl-qemu-cpu-inl.h"
|
| 320 | (("\\.\\./\\.\\./config.h") "afl-config.h"))
|
| 321 | (substitute* (string-append patch-dir
|
| 322 | "/cpu-exec.diff")
|
| 323 | (("\\.\\./patches/") ""))
|
| 324 |
|
| 325 | |
| 326 | (for-each (lambda (obsolete-patch)
|
| 327 | (delete-file (string-append
|
| 328 | patch-dir "/"
|
| 329 | obsolete-patch)))
|
| 330 | (list "configure.diff"
|
| 331 | "memfd.diff"))
|
| 332 |
|
| 333 | (for-each (lambda (patch-file)
|
| 334 | (invoke "patch" "--force" "-p1"
|
| 335 | "--input" patch-file))
|
| 336 | (find-files patch-dir
|
| 337 | "\\.diff$"))
|
| 338 | #t)))
|
| 339 | (add-before 'check 'disable-unusable-tests
|
| 340 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 341 | (substitute* "tests/Makefile.include"
|
| 342 | |
| 343 | |
| 344 | (("check-unit-.* tests/test-qga" all)
|
| 345 | (string-append "# " all)))
|
| 346 | (substitute* "tests/Makefile.include"
|
| 347 | |
| 348 | |
| 349 | (("check-unit-.* tests/test-char" all)
|
| 350 | (string-append "# " all)))
|
| 351 | #t)))))
|
| 352 | (native-inputs
|
| 353 | `(("python-2" ,python-2) |
| 354 | ("glib:bin" ,glib "bin")
|
| 355 | ("perl" ,perl)
|
| 356 | ("flex" ,flex)
|
| 357 | ("bison" ,bison)
|
| 358 | ("pkg-config" ,pkg-config)))
|
| 359 | (inputs
|
| 360 | `(("afl-source" ,(package-source american-fuzzy-lop))
|
| 361 | ("alsa-lib" ,alsa-lib)
|
| 362 | ("attr" ,attr)
|
| 363 | ("glib" ,glib)
|
| 364 | ("libaio" ,libaio)
|
| 365 | ("libattr" ,attr)
|
| 366 | ("libcap" ,libcap)
|
| 367 | ("libjpeg" ,libjpeg-turbo)
|
| 368 | ("libpng" ,libpng)
|
| 369 | ("ncurses" ,ncurses)
|
| 370 | ("pixman" ,pixman)
|
| 371 | ("util-linux" ,util-linux)
|
| 372 | ("zlib" ,zlib)))
|
| 373 | (home-page "https://www.qemu.org")
|
| 374 | (synopsis "Machine emulator and virtualizer (without GUI) for american fuzzy lop")
|
| 375 | (description
|
| 376 | "QEMU is a generic machine emulator and virtualizer. This package
|
| 377 | of QEMU is used only by the american fuzzy lop package.
|
| 378 |
|
| 379 | When used as a machine emulator, QEMU can run OSes and programs made for one
|
| 380 | machine (e.g. an ARM board) on a different machine---e.g., your own PC. By
|
| 381 | using dynamic translation, it achieves very good performance.
|
| 382 |
|
| 383 | When used as a virtualizer, QEMU achieves near native performances by
|
| 384 | executing the guest code directly on the host CPU. QEMU supports
|
| 385 | virtualization when executing under the Xen hypervisor or using
|
| 386 | the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
|
| 387 | server and embedded PowerPC, and S390 guests.")
|
| 388 | |
| 389 | (license license:gpl2)
|
| 390 | |
| 391 | (supported-systems (delete "mips64el-linux" %supported-systems))))))
|
| 392 |
|
| 393 | (define-public stress-make
|
| 394 | (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100")
|
| 395 | (revision "1")) |
| 396 | (package
|
| 397 | (name "stress-make")
|
| 398 | (version (git-version "1.0" revision commit))
|
| 399 | (source
|
| 400 | (origin
|
| 401 | (method git-fetch)
|
| 402 | (uri (git-reference
|
| 403 | (url "https://github.com/lanl/stress-make.git")
|
| 404 | (commit commit)))
|
| 405 | (file-name (git-file-name name version))
|
| 406 | (sha256
|
| 407 | (base32
|
| 408 | "1z1yiwnqyzv3v6152fnjbfh2lr8q8fi5xxfdclnr8l8sd4c1rasp"))))
|
| 409 | (build-system gnu-build-system)
|
| 410 | (native-inputs
|
| 411 | `(("autoconf" ,autoconf)
|
| 412 | ("automake" ,automake)
|
| 413 | ("go" ,go)))
|
| 414 | (inputs
|
| 415 | `(("make-source" ,(package-source gnu-make))))
|
| 416 | (arguments
|
| 417 | |
| 418 | |
| 419 | |
| 420 | |
| 421 | (let ((make-dir (string-append "make-" (package-version gnu-make))))
|
| 422 | `(#:configure-flags '("--with-make-tar=./make.tar.xz"
|
| 423 | "make_cv_sys_gnu_glob=yes")
|
| 424 | #:phases
|
| 425 | (modify-phases %standard-phases
|
| 426 | (add-after 'unpack 'unpack-make
|
| 427 | (lambda* (#:key inputs #:allow-other-keys)
|
| 428 | (invoke "tar" "xf" (assoc-ref inputs "make-source"))))
|
| 429 | (add-after 'unpack-make 'set-default-shell
|
| 430 | (lambda _
|
| 431 | |
| 432 | (substitute* (string-append ,make-dir "/job.c")
|
| 433 | (("default_shell = .*$")
|
| 434 | (format #f "default_shell = \"~a\";\n"
|
| 435 | (which "sh"))))))
|
| 436 | (add-before 'configure 'repack-make
|
| 437 | (lambda _
|
| 438 | (invoke "tar" "cJf" "./make.tar.xz" ,make-dir)))
|
| 439 | (add-before 'build 'setup-go
|
| 440 | |
| 441 | |
| 442 | (lambda _ (setenv "GOCACHE" "/tmp/go-cache") #t))))))
|
| 443 | (home-page "https://github.com/lanl/stress-make")
|
| 444 | (synopsis "Expose race conditions in Makefiles")
|
| 445 | (description
|
| 446 | "Stress Make is a customized GNU Make that explicitly manages the order
|
| 447 | in which concurrent jobs are run to provoke erroneous behavior into becoming
|
| 448 | manifest. It can run jobs in the order in which they're launched, in backwards
|
| 449 | order, or in random order. The thought is that if code builds correctly with
|
| 450 | Stress Make, then it is likely that the @code{Makefile} contains no race
|
| 451 | conditions.")
|
| 452 | |
| 453 | |
| 454 | (license (list (license:non-copyleft "LICENSE.md")
|
| 455 | license:gpl3+)))))
|
| 456 |
|
| 457 | (define-public zzuf
|
| 458 | (package
|
| 459 | (name "zzuf")
|
| 460 | (version "0.15")
|
| 461 | (source
|
| 462 | (origin
|
| 463 | (method url-fetch)
|
| 464 | (uri (string-append
|
| 465 | "https://github.com/samhocevar/zzuf/releases/download/v"
|
| 466 | version "/" name "-" version ".tar.gz"))
|
| 467 | (file-name (string-append name "-" version ".tar.gz"))
|
| 468 | (sha256
|
| 469 | (base32
|
| 470 | "1mpzjaksc2qg2hzqflf39pl06p53qam2dn3hkhkcv6p00d2n4kx3"))))
|
| 471 | (build-system gnu-build-system)
|
| 472 | (home-page "https://github.com/samhocevar/zzuf")
|
| 473 | (synopsis "Transparent application input fuzzer")
|
| 474 | (description "Zzuf is a transparent application input fuzzer. It works by
|
| 475 | intercepting file operations and changing random bits in the program's
|
| 476 | input. Zzuf's behaviour is deterministic, making it easy to reproduce bugs.")
|
| 477 | (license license:wtfpl2)))
|
| 478 |
|
| 479 | (define-public scanmem
|
| 480 | (package
|
| 481 | (name "scanmem")
|
| 482 | (version "0.17")
|
| 483 | (source
|
| 484 | (origin
|
| 485 | (method git-fetch)
|
| 486 | (uri (git-reference
|
| 487 | (url "https://github.com/scanmem/scanmem")
|
| 488 | (commit (string-append "v" version))))
|
| 489 | (file-name (git-file-name name version))
|
| 490 | (sha256
|
| 491 | (base32
|
| 492 | "17p8sh0rj8yqz36ria5bp48c8523zzw3y9g8sbm2jwq7sc27i7s9"))))
|
| 493 | (build-system gnu-build-system)
|
| 494 | (arguments
|
| 495 | `(#:configure-flags '("--enable-gui")
|
| 496 | #:phases
|
| 497 | (modify-phases %standard-phases
|
| 498 | (add-before 'configure 'hardcode-python
|
| 499 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 500 | (substitute* "gui/GameConqueror.py"
|
| 501 | (("/usr/bin/env python")
|
| 502 | (string-append (assoc-ref %build-inputs
|
| 503 | "python-wrapper") "/bin/python")))
|
| 504 | #t))
|
| 505 | (add-after 'install 'wrap-gameconqueror
|
| 506 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 507 | (let ((out (assoc-ref outputs "out"))
|
| 508 | (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
|
| 509 | (python-path (getenv "PYTHONPATH")))
|
| 510 | (wrap-program (string-append out "/share/gameconqueror/GameConqueror.py")
|
| 511 | `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
|
| 512 | `("PYTHONPATH" ":" prefix (,python-path))))
|
| 513 | #t)))))
|
| 514 | (native-inputs
|
| 515 | `(("libtool" ,libtool)
|
| 516 | ("python-wrapper" ,python-wrapper)
|
| 517 | ("gobject-introspection" ,gobject-introspection)
|
| 518 | ("gtk+" ,gtk+)
|
| 519 | ("intltool" ,intltool)
|
| 520 | ("automake" ,automake)
|
| 521 | ("autoconf" ,autoconf)))
|
| 522 | (inputs
|
| 523 | `(("readline" ,readline)))
|
| 524 | (propagated-inputs
|
| 525 | `(("python-pygobject" ,python-pygobject)))
|
| 526 | (home-page "https://github.com/scanmem/scanmem")
|
| 527 | (synopsis "Memory scanner")
|
| 528 | (description "Scanmem is a debugging utility designed to isolate the
|
| 529 | address of an arbitrary variable in an executing process. Scanmem simply
|
| 530 | needs to be told the pid of the process and the value of the variable at
|
| 531 | several different times. After several scans of the process, scanmem isolates
|
| 532 | the position of the variable and allows you to modify its value.")
|
| 533 | |
| 534 | |
| 535 | (license (list license:lgpl3+ license:gpl3+))))
|
| 536 |
|
| 537 | (define-public rr
|
| 538 | (package
|
| 539 | (name "rr")
|
| 540 | (version "5.3.0")
|
| 541 | (source (origin
|
| 542 | (method git-fetch)
|
| 543 | (uri (git-reference
|
| 544 | (url "https://github.com/mozilla/rr")
|
| 545 | (commit version)))
|
| 546 | (sha256
|
| 547 | (base32
|
| 548 | "1x6l1xsdksnhz9v50p4r7hhmr077cq20kaywqy1jzdklvkjqzf64"))
|
| 549 | (file-name (git-file-name name version))))
|
| 550 | (build-system cmake-build-system)
|
| 551 | (arguments
|
| 552 | `(#:configure-flags
|
| 553 | |
| 554 | |
| 555 | |
| 556 | |
| 557 | |
| 558 | |
| 559 | (list "-DCMAKE_INSTALL_RPATH="
|
| 560 | ,@(if (and (not (%current-target-system))
|
| 561 | (member (%current-system)
|
| 562 | '("x86_64-linux" "aarch64-linux")))
|
| 563 | |
| 564 | '("-Ddisable32bit=ON")
|
| 565 | '()))
|
| 566 |
|
| 567 | |
| 568 | |
| 569 | |
| 570 | |
| 571 | |
| 572 | |
| 573 | #:tests? #f
|
| 574 |
|
| 575 | #:phases (modify-phases %standard-phases
|
| 576 | (add-before 'check 'set-home
|
| 577 | (lambda _
|
| 578 | |
| 579 | (setenv "HOME" (getcwd))
|
| 580 | #t)))))
|
| 581 | (native-inputs
|
| 582 | `(("pkg-config" ,pkg-config)
|
| 583 | ("ninja" ,ninja)
|
| 584 | ("which" ,which)))
|
| 585 | (inputs
|
| 586 | `(("gdb" ,gdb)
|
| 587 | ("cpanproto" ,capnproto)
|
| 588 | ("python" ,python)
|
| 589 | ("python-pexpect" ,python-pexpect)))
|
| 590 | (home-page "https://rr-project.org/")
|
| 591 | (synopsis "Record and reply debugging framework")
|
| 592 | (description
|
| 593 | "rr is a lightweight tool for recording, replaying and debugging
|
| 594 | execution of applications (trees of processes and threads). Debugging extends
|
| 595 | GDB with very efficient reverse-execution, which in combination with standard
|
| 596 | GDB/x86 features like hardware data watchpoints, makes debugging much more
|
| 597 | fun.")
|
| 598 | (license license:expat)))
|