summary refs log tree commit diff
path: root/pkgs/development/tools/misc/gdb
diff options
context:
space:
mode:
authorTmplt <tmplt@dragons.rocks>2019-11-17 18:46:52 +0100
committerTmplt <tmplt@dragons.rocks>2019-11-17 18:51:54 +0100
commit800f280696d54d718ec78684fd517cce472dedca (patch)
tree2797cef1cf981b94932698a2aec11c832794f158 /pkgs/development/tools/misc/gdb
parent00c866bf6278b33ef1988d292aedb0379973abd4 (diff)
downloadnixpkgs-800f280696d54d718ec78684fd517cce472dedca.tar
nixpkgs-800f280696d54d718ec78684fd517cce472dedca.tar.gz
nixpkgs-800f280696d54d718ec78684fd517cce472dedca.tar.bz2
nixpkgs-800f280696d54d718ec78684fd517cce472dedca.tar.lz
nixpkgs-800f280696d54d718ec78684fd517cce472dedca.tar.xz
nixpkgs-800f280696d54d718ec78684fd517cce472dedca.tar.zst
nixpkgs-800f280696d54d718ec78684fd517cce472dedca.zip
gdb: wrap, making libstdc++ plugin safe to load
Diffstat (limited to 'pkgs/development/tools/misc/gdb')
-rw-r--r--pkgs/development/tools/misc/gdb/wrapper.nix32
1 files changed, 32 insertions, 0 deletions
diff --git a/pkgs/development/tools/misc/gdb/wrapper.nix b/pkgs/development/tools/misc/gdb/wrapper.nix
new file mode 100644
index 00000000000..7eccba74747
--- /dev/null
+++ b/pkgs/development/tools/misc/gdb/wrapper.nix
@@ -0,0 +1,32 @@
+{ stdenv, lib, makeWrapper, gdb-unwrapped, safePaths }:
+
+let
+  gdb = gdb-unwrapped;
+in
+  stdenv.mkDerivation {
+    name = gdb.name;
+    buildInputs = [ makeWrapper ];
+    propagatedBuildInputs = [ gdb ];
+    propagatedUserEnvPkgs = [ gdb ];
+    phases = "installPhase fixupPhase";
+
+    # Find all gdb plugins in `safePaths` and
+    # mark these files as safe to load.
+    installPhase = ''
+      mkdir -p $out/share/gdb
+      initScript=$out/share/gdb/gdbinit
+      touch $initScript
+
+      for safePath in ${lib.concatStringsSep " " safePaths}; do
+        for plugin in $(find $safePath | grep -- '.*-gdb.*'); do
+          echo add-auto-load-safe-path $plugin >> $initScript
+        done
+      done
+
+      makeWrapper "${gdb}/bin/gdb" \
+        "$out/bin/gdb" \
+        --add-flags "-x $initScript"
+    '';
+
+    meta = gdb.meta;
+  }