gnu: qemu-for-american-fuzzy-lop: Fix build.
[jackhill/guix/guix.git] / gnu / packages / debug.scm
index 4a26442..f67f32a 100644 (file)
@@ -1,10 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2016, 2017, 2018, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +37,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages code)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages flex)
@@ -43,6 +46,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages ncurses)
@@ -265,7 +269,8 @@ down the road.")
               (base32
                "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw"))
              (patches
-              (search-patches "qemu-glibc-2.27.patch"))))
+              (search-patches "qemu-glibc-2.27.patch"
+                              "qemu-glibc-2.30.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Running tests in parallel can occasionally lead to failures, like:
@@ -391,8 +396,8 @@ server and embedded PowerPC, and S390 guests.")
     (supported-systems (delete "mips64el-linux" %supported-systems))))))
 
 (define-public stress-make
-  (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100")
-        (revision "1"))                 ;No official source distribution
+  (let ((commit "97815bed8060de33952475b3498767c91f59ffd9")
+        (revision "2"))                 ;No official source distribution
     (package
       (name "stress-make")
       (version (git-version "1.0" revision commit))
@@ -400,12 +405,12 @@ server and embedded PowerPC, and S390 guests.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/lanl/stress-make.git")
+               (url "https://github.com/lanl/stress-make")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1z1yiwnqyzv3v6152fnjbfh2lr8q8fi5xxfdclnr8l8sd4c1rasp"))))
+           "0k55cy7x0hlc6rgpascl6ibhcfxaash3p9r9r8kwvbm3zag1rmac"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -429,7 +434,7 @@ server and embedded PowerPC, and S390 guests.")
              (add-after 'unpack-make 'set-default-shell
                (lambda _
                  ;; Taken mostly directly from (@ (gnu packages base) gnu-make)
-                 (substitute* (string-append ,make-dir "/job.c")
+                 (substitute* (string-append ,make-dir "/src/job.c")
                    (("default_shell = .*$")
                     (format #f "default_shell = \"~a\";\n"
                             (which "sh"))))))
@@ -534,10 +539,35 @@ the position of the variable and allows you to modify its value.")
     ;; by GPLv3 or later.
     (license (list license:lgpl3+ license:gpl3+))))
 
+(define-public remake
+  (package (inherit gnu-make)
+    (name "remake")
+    (version "4.3-1.5")
+    (source (origin
+              (method url-fetch)
+              (uri (let ((upstream-version
+                          (match (string-split version #\-)
+                            ((ver sub) (string-append ver "%2Bdbg-" sub)))))
+                     (string-append "mirror://sourceforge/bashdb/"
+                                    "remake/" upstream-version "/"
+                                    "remake-" upstream-version ".tar.gz")))
+              (file-name (string-append "remake-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0xlx2485y0israv2pfghmv74lxcv9i5y65agy69mif76yc4vfvif"))
+              (patches (search-patches "remake-impure-dirs.patch"))))
+    (inputs
+     `(("readline" ,readline)
+       ,@(package-inputs gnu-make)))
+    (home-page "http://bashdb.sourceforge.net/remake/")
+    (description "Remake is an enhanced version of GNU Make that adds improved
+error reporting, better tracing, profiling, and a debugger.")
+    (license license:gpl3+)))
+
 (define-public rr
   (package
     (name "rr")
-    (version "5.3.0")
+    (version "5.4.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -545,18 +575,19 @@ the position of the variable and allows you to modify its value.")
                     (commit version)))
               (sha256
                (base32
-                "1x6l1xsdksnhz9v50p4r7hhmr077cq20kaywqy1jzdklvkjqzf64"))
+                "1sfldgkkmsdyaqa28i5agcykc63gwm3zjihd64g86i852w8al2w6"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
        ;; The 'rr_exec_stub' is a static binary, which leads CMake to fail
-       ;; with:
-       ;;
-       ;;   file RPATH_CHANGE could not write new RPATH:
-       ;;
+       ;; with ‘file RPATH_CHANGE could not write new RPATH: ...’.
        ;; Clear CMAKE_INSTALL_RPATH to avoid that problem.
        (list "-DCMAKE_INSTALL_RPATH="
+             ;; Satisfy the ‘validate-runpath’ phase.  This isn't a direct
+             ;; consequence of clearing CMAKE_INSTALL_RPATH.
+             (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
+                            (assoc-ref %build-inputs "capnproto") "/lib")
              ,@(if (and (not (%current-target-system))
                         (member (%current-system)
                                 '("x86_64-linux" "aarch64-linux")))
@@ -584,7 +615,7 @@ the position of the variable and allows you to modify its value.")
        ("which" ,which)))
     (inputs
      `(("gdb" ,gdb)
-       ("cpanproto" ,capnproto)
+       ("capnproto" ,capnproto)
        ("python" ,python)
        ("python-pexpect" ,python-pexpect)))
     (home-page "https://rr-project.org/")
@@ -596,3 +627,109 @@ GDB with very efficient reverse-execution, which in combination with standard
 GDB/x86 features like hardware data watchpoints, makes debugging much more
 fun.")
     (license license:expat)))
+
+(define-public libbacktrace
+  ;; There are no releases nor tags.
+  (let ((revision "1")
+        (commit "5009c113981431ae1843ebd29d6ad24eb32fc1b2"))
+    (package
+      (name "libbacktrace")
+      (version (git-version "1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ianlancetaylor/libbacktrace")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0663zjpfpnsyv9h3pbp7cgmg9gz79n68bqpdl97y6i0jsx93v1zg"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags '("CFLAGS=-fPIC")))
+      (home-page "https://github.com/ianlancetaylor/libbacktrace")
+      (synopsis "C library for producing symbolic backtraces")
+      (description "The @code{libbacktrace} library can be linked into a C/C++
+program to produce symbolic backtraces.")
+      (license license:bsd-3))))
+
+(define-public libleak
+  (package
+    (name "libleak")
+    (version "0.3.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/WuBingzheng/libleak")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1p8mb0hcfp8hdv1klv6rrpkn2zlhjxgkxbbjsk8kszxv7ijln87d"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test suite
+       #:parallel-build? #f             ;jobserver unavailable
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'unbundle-libwuya
+                    (lambda _
+                      (substitute* "Makefile"
+                        ((".*make -C libwuya.*") ""))
+                      #t))
+                  (add-before 'build 'set-CC
+                    (lambda _
+                      (setenv "CC" "gcc")
+                      #t))
+                  (delete 'configure)   ;no configure script
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out")))
+                        (install-file "libleak.so" (string-append out "/lib"))
+                        #t))))))
+    (inputs `(("libbacktrace" ,libbacktrace)
+              ("libwuya" ,libwuya)))
+    (home-page "https://github.com/WuBingzheng/libleak")
+    (synopsis "Memory leaks detection tool")
+    (description "The libleak tool detects memory leaks by hooking memory
+functions such as @code{malloc}.  It comes as a shared object to be pre-loaded
+via @code{LD_PRELOAD} when launching the application.  It prints the full call
+stack at suspicious memory leak points.  Modifying or recompiling the target
+program is not required, and the detection can be enabled or disabled while
+the target application is running.  The overhead incurred by libleak is
+smaller than that of other tools such as Valgrind, and it aims to be easier to
+use than similar tools like @command{mtrace}.")
+    (license license:gpl2+)))
+
+(define-public mspdebug
+  (package
+    (name "mspdebug")
+    (version "0.25")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dlbeer/mspdebug")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0prgwb5vx6fd4bj12ss1bbb6axj2kjyriyjxqrzd58s5jyyy8d3c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                         ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))              ; no configure script
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             "INSTALL=install"
+             (string-append "PREFIX=" %output))))
+  (inputs
+     `(("libusb-compat" ,libusb-compat)
+       ("readline" ,readline)))
+    (synopsis "Debugging tool for MSP430 MCUs")
+    (description "MspDebug supports FET430UIF, eZ430, RF2500 and Olimex
+MSP430-JTAG-TINY programmers, as well as many other compatible
+devices.  It can be used as a proxy for gdb or as an independent
+debugger with support for programming, disassembly and reverse
+engineering.")
+    (home-page "https://github.com/dlbeer/mspdebug")
+    (license license:gpl2+)))