@ -16,32 +16,45 @@ let
echo - n $ ( basename $ ( patchelf - - print-interpreter " ${ gdb } / b i n / g d b " ) ) > $ out
echo - n $ ( basename $ ( patchelf - - print-interpreter " ${ gdb } / b i n / g d b " ) ) > $ out
''
''
) ;
) ;
ldLoader = if pkgs . stdenv . is Darwin then " " else " \" $ d i r / l i b / ${ ldName } \ "" ;
ldLoader = if pkgs . stdenv . is Linux then " \" $ d i r / l i b / ${ ldName } \ "" else "" ;
linuxLldb Envs = pkgs . lib . optionalString ( pkgs . stdenv . isLinux && isLLDB ) ''
common Envs = pkgs . lib . optionalString ( pkgs . stdenv . isLinux && isLLDB ) ''
export LLDB_DEBUGSERVER_PATH = " $ d i r / b i n / l l d b - s e r v e r "
export LLDB_DEBUGSERVER_PATH = " $ d i r / b i n / l l d b - s e r v e r "
'' + p k g s . l i b . o p t i o n a l S t r i n g p k g s . s t d e n v . i s L i n u x ''
export TERMINFO_DIRS = $ { pkgs . lib . concatStringsSep " : " [
# Fix issue Linux https://github.com/pwndbg/pwndbg/issues/2531
" / e t c / t e r m i n f o " # Debian, Fedora, Gentoo
" / l i b / t e r m i n f o " # Debian
" / u s r / s h a r e / t e r m i n f o " # upstream default, probably all FHS-based distros
" / r u n / c u r r e n t - s y s t e m / s w / s h a r e / t e r m i n f o " # NixOS
] }
'' + p k g s . l i b . o p t i o n a l S t r i n g p k g s . s t d e n v . i s D a r w i n ''
export TERMINFO_DIRS = $ { pkgs . lib . concatStringsSep " : " [
# Fix issue Darwin https://github.com/pwndbg/pwndbg/issues/2531
" / u s r / s h a r e / t e r m i n f o " # upstream default, probably all FHS-based distros
] }
'' + ''
export PYTHONNOUSERSITE = 1
export PYTHONHOME = " $ d i r "
export PATH = " $ d i r / b i n / : $ P A T H "
'' ;
'' ;
wrapperBinPwndbgGdbinit = pkgs . writeScript " p w n d b g - w r a p p e r - b i n - g d b i n i t " ''
wrapperBinPwndbgGdbinit = pkgs . writeScript " p w n d b g - w r a p p e r - b i n - g d b i n i t " ''
#!/bin/sh
#!/bin/sh
dir = " $ ( c d - - " $ ( dirname " $ ( d i r n a m e " $ ( realpath " $ 0 " ) " ) " ) " > / d e v / n u l l 2 > & 1 ; p w d - P ) "
dir = " $ ( c d - - " $ ( dirname " $ ( d i r n a m e " $ ( realpath " $ 0 " ) " ) " ) " > / d e v / n u l l 2 > & 1 ; p w d - P ) "
export PYTHONHOME = " $ d i r "
$ { commonEnvs }
export PATH = " $ d i r / b i n / : $ P A T H "
exec $ { ldLoader } " $ d i r / e x e / g d b " - - quiet - - early-init-eval-command = " s e t a u t o - l o a d s a f e - p a t h / " - - command = $ dir/exe/gdbinit.py " $ @ "
exec $ { ldLoader } " $ d i r / e x e / g d b " - - quiet - - early-init-eval-command = " s e t a u t o - l o a d s a f e - p a t h / " - - command = $ dir/exe/gdbinit.py " $ @ "
'' ;
'' ;
wrapperBinPy = file : pkgs . writeScript " p w n d b g - w r a p p e r - b i n - p y " ''
wrapperBinPy = file : pkgs . writeScript " p w n d b g - w r a p p e r - b i n - p y " ''
#!/bin/sh
#!/bin/sh
dir = " $ ( c d - - " $ ( dirname " $ ( d i r n a m e " $ ( realpath " $ 0 " ) " ) " ) " > / d e v / n u l l 2 > & 1 ; p w d - P ) "
dir = " $ ( c d - - " $ ( dirname " $ ( d i r n a m e " $ ( realpath " $ 0 " ) " ) " ) " > / d e v / n u l l 2 > & 1 ; p w d - P ) "
export PYTHONHOME = " $ d i r "
$ { commonEnvs }
export PATH = " $ d i r / b i n / : $ P A T H "
$ { linuxLldbEnvs }
exec $ { ldLoader } " $ d i r / e x e / p y t h o n 3 " " $ d i r / ${ file } " " $ @ "
exec $ { ldLoader } " $ d i r / e x e / p y t h o n 3 " " $ d i r / ${ file } " " $ @ "
'' ;
'' ;
wrapperBin = file : pkgs . writeScript " p w n d b g - w r a p p e r - b i n " ''
wrapperBin = file : pkgs . writeScript " p w n d b g - w r a p p e r - b i n " ''
#!/bin/sh
#!/bin/sh
dir = " $ ( c d - - " $ ( dirname " $ ( d i r n a m e " $ ( realpath " $ 0 " ) " ) " ) " > / d e v / n u l l 2 > & 1 ; p w d - P ) "
dir = " $ ( c d - - " $ ( dirname " $ ( d i r n a m e " $ ( realpath " $ 0 " ) " ) " ) " > / d e v / n u l l 2 > & 1 ; p w d - P ) "
export PATH = " $ d i r / b i n / : $ P A T H "
$ { commonEnvs }
export PYTHONHOME = " $ d i r "
$ { linuxLldbEnvs }
exec $ { ldLoader } " $ d i r / ${ file } " " $ @ "
exec $ { ldLoader } " $ d i r / ${ file } " " $ @ "
'' ;
'' ;
skipVenv = pkgs . writeScript " p w n d b g - s k i p - v e n v " " " ;
skipVenv = pkgs . writeScript " p w n d b g - s k i p - v e n v " " " ;