gdb: wrap, making libstdc++ plugin safe to load

This commit is contained in:
Tmplt 2019-11-17 18:46:52 +01:00
parent 00c866bf62
commit 800f280696
2 changed files with 35 additions and 1 deletions

View File

@ -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;
}

View File

@ -10473,7 +10473,9 @@ in
bashdb = callPackage ../development/tools/misc/bashdb { };
gdb = callPackage ../development/tools/misc/gdb {
gdb = callPackage ../development/tools/misc/gdb/wrapper.nix { safePaths = [ stdenv.cc.cc.lib ]; };
gdb-unwrapped = callPackage ../development/tools/misc/gdb {
guile = null;
};