about summary refs log tree commit diff
path: root/pkgs/stdenv/darwin
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-10-15 01:15:31 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-10-15 01:15:31 +0200
commit9a979af1d3bf92e7ebe85332852b2c95bdf0aa04 (patch)
tree80c416e12db1734f5ca36e80e3b9d255369b97b8 /pkgs/stdenv/darwin
parentd7abe3badad3df08e99ee63f11c8b9be62c57101 (diff)
downloadnixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.tar
nixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.tar.gz
nixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.tar.bz2
nixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.tar.lz
nixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.tar.xz
nixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.tar.zst
nixlib-9a979af1d3bf92e7ebe85332852b2c95bdf0aa04.zip
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").
Diffstat (limited to 'pkgs/stdenv/darwin')
-rw-r--r--pkgs/stdenv/darwin/default.nix2
1 files changed, 1 insertions, 1 deletions
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index 26114d2726e1..cbc9a38b77de 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -1,6 +1,6 @@
 { stdenv, pkgs, config
 , haveLibCxx ? true
-, useClang33 ? false }:
+, useClang33 ? true }:
 
 import ../generic rec {
   inherit config;