diff options
Diffstat (limited to 'pkgs/development/compilers/gcc/common/strip-attributes.nix')
-rw-r--r-- | pkgs/development/compilers/gcc/common/strip-attributes.nix | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/pkgs/development/compilers/gcc/common/strip-attributes.nix b/pkgs/development/compilers/gcc/common/strip-attributes.nix deleted file mode 100644 index f2f0efb1264a..000000000000 --- a/pkgs/development/compilers/gcc/common/strip-attributes.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ lib, stdenv, langJit }: - -{ - # Note [Cross-compiler stripping] - # gcc requires delicate stripping as it installs ELF files for both - # HOST and TARGET platforms. It requires according strip tool otherwise - # strip could remove sections it's not aware of. - # Example ARM breakage by x86_64 strip: https://bugs.gentoo.org/697428 - # - # Let's recap the file layout for directories with object files for a - # cross-compiler: - # - # $out (host != target) - # `- bin: HOST - # lib/*.{a,o}: HOST - # `- gcc/<TARGET>/<VERSION>/*.{a,o}: TARGET - # `- plugin/: HOST - # `- lib{,32,64,x32}: symlink to lib or identical layout - # `- libexec/: HOST - # `- <TARGET>/: TARGET - # - # $out (host == target) has identical directory layout. - # - # $lib (host != target): - # `- <TARGET>/lib/*.{la,so}: TARGET - # - # $lib (host == target): - # `- lib/*.{la,so}: HOST - - # The rest of stripDebugList{Host,Target} will be populated in - # postInstall to disambiguate lib/ object files. - stripDebugList = [ "bin" "libexec" ]; - stripDebugListTarget = [ stdenv.targetPlatform.config ]; - - preFixup = '' - # Populate most delicated lib/ part of stripDebugList{,Target} - updateDebugListPaths() { - local oldOpts - oldOpts="$(shopt -p nullglob)" || true - shopt -s nullglob - - pushd $out - local -ar outHostFiles=( - lib{,32,64}/*.{a,o,so*} - lib{,32,64}/gcc/${stdenv.targetPlatform.config}/*/plugin - ) - local -ar outTargetFiles=( - lib{,32,64}/gcc/${stdenv.targetPlatform.config}/*/*.{a,o,so*} - ) - popd - '' + lib.optionalString (!langJit) '' - ${/*keep indentation*/ ""} - pushd $lib - local -ar libHostFiles=( - lib{,32,64}/*.{a,o,so*} - ) - local -ar libTargetFiles=( - lib{,32,64}/${stdenv.targetPlatform.config}/*.{a,o,so*} - ) - popd - - '' + '' - eval "$oldOpts" - - stripDebugList="$stripDebugList ''${outHostFiles[*]} ''${libHostFiles[*]}" - stripDebugListTarget="$stripDebugListTarget ''${outTargetFiles[*]} ''${libTargetFiles[*]}" - } - updateDebugListPaths - ''; -} |