forked from mirrors/nixpkgs
stdenv-darwin: Revert to clang 3.3
In 3.3, a C++ class defined in a header will get a typeinfo symbol like this (e.g. in Nix's src/libutil/util.o): (__DATA,__datacoal_nt) weak external typeinfo for nix::BaseError But in 3.4, this has changed to: (__DATA,__datacoal_nt) weak external automatically hidden typeinfo for nix::BaseError This causes the linker to change the symbol to: (__DATA,__data) non-external (was signed char private external) typeinfo for nix::BaseError i.e. losing its weak linkage. But without weak linkage, dynamic_cast and other RTTI-based mechanisms (such as catching an exception of a certain type) don't work across shared libraries / executables. The clang compiler in the SDK doesn't have this behaviour, but it's not clear exactly which version it is (it just says "based on LLVM 3.4svn").
This commit is contained in:
parent
d7abe3bada
commit
9a979af1d3
|
@ -1,6 +1,6 @@
|
|||
{ stdenv, pkgs, config
|
||||
, haveLibCxx ? true
|
||||
, useClang33 ? false }:
|
||||
, useClang33 ? true }:
|
||||
|
||||
import ../generic rec {
|
||||
inherit config;
|
||||
|
|
|
@ -11856,7 +11856,6 @@ let
|
|||
};
|
||||
|
||||
nixUnstable = callPackage ../tools/package-management/nix/unstable.nix {
|
||||
stdenv = if stdenv.isDarwin then allStdenvs.stdenvDarwin33 else stdenv;
|
||||
storeDir = config.nix.storeDir or "/nix/store";
|
||||
stateDir = config.nix.stateDir or "/nix/var";
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue