gdb: wrap, making libstdc++ plugin safe to load
This commit is contained in:
parent
00c866bf62
commit
800f280696
32
pkgs/development/tools/misc/gdb/wrapper.nix
Normal file
32
pkgs/development/tools/misc/gdb/wrapper.nix
Normal 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;
|
||||||
|
}
|
@ -10473,7 +10473,9 @@ in
|
|||||||
|
|
||||||
bashdb = callPackage ../development/tools/misc/bashdb { };
|
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;
|
guile = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user