diff --git a/pkgs/build-support/cc-wrapper/ld-wrapper.sh b/pkgs/build-support/cc-wrapper/ld-wrapper.sh index 6ef06eb70348..449a86459045 100644 --- a/pkgs/build-support/cc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/ld-wrapper.sh @@ -146,11 +146,26 @@ if [ "$NIX_DONT_SET_RPATH" != 1 ]; then # Finally, add `-rpath' switches. for i in $rpath; do - extra=(${extra[@]} -rpath $i) + extra+=(-rpath $i) done fi +# Only add --build-id if this is a final link. FIXME: should build gcc +# with --enable-linker-build-id instead? +if [ "$NIX_SET_BUILD_ID" = 1 ]; then + for p in "${params[@]}"; do + if [ "$p" = "-r" -o "$p" = "--relocatable" -o "$p" = "-i" ]; then + relocatable=1 + break + fi + done + if [ -z "$relocatable" ]; then + extra+=(--build-id) + fi +fi + + # Optionally print debug info. if [ -n "$NIX_DEBUG" ]; then echo "original flags to @prog@:" >&2 diff --git a/pkgs/build-support/setup-hooks/separate-debug-info.sh b/pkgs/build-support/setup-hooks/separate-debug-info.sh index d2d8386c92dc..518be9647334 100644 --- a/pkgs/build-support/setup-hooks/separate-debug-info.sh +++ b/pkgs/build-support/setup-hooks/separate-debug-info.sh @@ -1,4 +1,5 @@ -export NIX_LDFLAGS+=" --build-id --compress-debug-sections" +export NIX_SET_BUILD_ID=1 +export NIX_LDFLAGS+=" --compress-debug-sections=zlib" export NIX_CFLAGS_COMPILE+=" -ggdb -Wa,--compress-debug-sections" dontStrip=1 diff --git a/pkgs/development/libraries/glibc/builder.sh b/pkgs/development/libraries/glibc/builder.sh index d0684d6194d0..d60b143a1eca 100644 --- a/pkgs/development/libraries/glibc/builder.sh +++ b/pkgs/development/libraries/glibc/builder.sh @@ -37,6 +37,10 @@ postInstall() { # Get rid of more unnecessary stuff. rm -rf $out/var $out/sbin/sln + + for i in $out/lib/*.a; do + strip -S "$i" + done } genericBuild diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index 5e25c2dc8bc8..2630cdb127f7 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -2,7 +2,6 @@ , installLocales ? true , profilingLibraries ? false , gccCross ? null -, debugSymbols ? false , withGd ? false, gd ? null, libpng ? null }: @@ -13,9 +12,7 @@ let cross = if gccCross != null then gccCross.target else null; in build cross ({ - name = "glibc" - + lib.optionalString debugSymbols "-debug" - + lib.optionalString withGd "-gd"; + name = "glibc" + lib.optionalString withGd "-gd"; inherit lib stdenv fetchurl linuxHeaders installLocales profilingLibraries gccCross withGd gd libpng; @@ -38,23 +35,13 @@ in fi ''; + separateDebugInfo = true; + meta.description = "The GNU C Library"; } // - (if debugSymbols - then { - # Build with debugging symbols, but leave optimizations on and don't - # attempt to keep the build tree. - dontStrip = true; - dontCrossStrip = true; - NIX_STRIP_DEBUG = 0; - } - else {}) - - // - (if cross != null then { preConfigure = ''