diff options
author | Tmplt <tmplt@dragons.rocks> | 2019-11-17 18:46:52 +0100 |
---|---|---|
committer | Tmplt <tmplt@dragons.rocks> | 2019-11-17 18:51:54 +0100 |
commit | 800f280696d54d718ec78684fd517cce472dedca (patch) | |
tree | 2797cef1cf981b94932698a2aec11c832794f158 /pkgs/development/tools/misc/gdb | |
parent | 00c866bf6278b33ef1988d292aedb0379973abd4 (diff) | |
download | nixpkgs-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.nix | 32 |
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; + } |