From 0a996c8ef31eb5ffb55d24dc4703fe0fe29589ff Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Sat, 15 Dec 2018 12:26:11 -0600 Subject: [PATCH] =?UTF-8?q?darwin:=20use=20llvm=E2=80=99s=20dsymutil=20ins?= =?UTF-8?q?tead=20of=20dummy=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We were previously using a dummy wrapper for dsymutil. This meant that debug symbols were not getting generated when dsymutil was otherwise available. This should fix that issue & provide a real dsymutil from llvm. Fixes #52148. --- pkgs/os-specific/darwin/binutils/default.nix | 12 ++++++------ pkgs/os-specific/darwin/cctools/port.nix | 7 ------- pkgs/top-level/darwin-packages.nix | 1 + 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/pkgs/os-specific/darwin/binutils/default.nix b/pkgs/os-specific/darwin/binutils/default.nix index bd10dde5572c..db33b78a4aba 100644 --- a/pkgs/os-specific/darwin/binutils/default.nix +++ b/pkgs/os-specific/darwin/binutils/default.nix @@ -1,5 +1,4 @@ -{ stdenv, binutils-unwrapped, cctools -}: +{ stdenv, binutils-unwrapped, cctools, llvm }: # Make sure both underlying packages claim to have prepended their binaries # with the same targetPrefix. @@ -8,12 +7,12 @@ assert binutils-unwrapped.targetPrefix == cctools.targetPrefix; let inherit (binutils-unwrapped) targetPrefix; cmds = [ - "ar" "ranlib" "as" "dsymutil" "install_name_tool" + "ar" "ranlib" "as" "install_name_tool" "ld" "strip" "otool" "lipo" "nm" "strings" "size" ]; in -# TODO loop over targetPrefixed binaries too +# TODO: loop over targetPrefixed binaries too stdenv.mkDerivation { name = "${targetPrefix}cctools-binutils-darwin"; outputs = [ "out" "info" "man" ]; @@ -25,9 +24,8 @@ stdenv.mkDerivation { # We specifically need: # - ld: binutils doesn't provide it on darwin # - as: as above - # - ar: the binutils one prodices .a files that the cctools ld doesn't like + # - ar: the binutils one produces .a files that the cctools ld doesn't like # - ranlib: for compatibility with ar - # - dsymutil: soon going away once it goes into LLVM (this one is fake anyway) # - otool: we use it for some of our name mangling # - install_name_tool: we use it to rewrite stuff in our bootstrap tools # - strip: the binutils one seems to break mach-o files @@ -37,6 +35,8 @@ stdenv.mkDerivation { ln -sf "${cctools}/bin/$i" "$out/bin/$i" done + ln -s ${llvm}/bin/llvm-dsymutil $out/bin/dsymutil + ln -s ${binutils-unwrapped.out}/share $out/share ln -s ${cctools}/libexec $out/libexec diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix index 2bca1bcc1d75..6753c98239da 100644 --- a/pkgs/os-specific/darwin/cctools/port.nix +++ b/pkgs/os-specific/darwin/cctools/port.nix @@ -92,13 +92,6 @@ let popd ''; - postInstall = '' - cat >$out/bin/dsymutil << EOF - #!${stdenv.shell} - EOF - chmod +x $out/bin/dsymutil - ''; - passthru = { inherit targetPrefix; }; diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index b52afe98f7fa..1fc36139ac07 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -15,6 +15,7 @@ in binutils-unwrapped = callPackage ../os-specific/darwin/binutils { inherit (darwin) cctools; inherit (pkgs) binutils-unwrapped; + inherit (pkgs.llvmPackages_5) llvm; }; binutils = pkgs.wrapBintoolsWith {