[LLVMdev] [libcxx] Linking against just-built libcxxabi

Greg Fitzgerald
2015-02-03T22:55:16Z

On OS X 10.9.5, I can only get all libcxx tests to pass if I link
against the system libcxxabi.  If instead, I link against the
just-built libcxxabi (using Apple LLVM version 6.0 based on LLVM 3.5),
I see the following test failures:

Failing Tests (9):
    libc++ ::
std/language.support/support.dynamic/new.delete/new.delete.array/new_array.pass.cpp
    libc++ ::
std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow.pass.cpp
    libc++ ::
std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp
    libc++ ::
std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow.pass.cpp
    libc++ ::
std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp
    libc++ ::
std/localization/locales/locale.global.templates/use_facet.pass.cpp
    libc++ :: std/localization/locales/locale/locale.cons/char_pointer.pass.cpp
    libc++ :: std/strings/basic.string/string.capacity/max_size.pass.cpp
    libc++ ::
std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp

Error messages include:

libc++abi.dylib: terminating
libc++abi.dylib: terminating with uncaught exception of type
std::bad_cast: std::bad_cast
libc++abi.dylib: terminating with uncaught exception of type
std::runtime_error: locale constructed with null
libc++abi.dylib: terminating with uncaught exception of type std::bad_alloc
Assertion failed: (false), function main, file
std/language.support/support.dynamic/new.delete/new.delete.array/new_array.pass.cpp,
line 50.
Assertion failed: (new_handler_called == 1), function main, file
std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow.pass.cpp,
line 42.



To link against the just-built library, I'm adding the following CMake
define:

    -DLIBCXX_CXX_ABI_LIBRARY_PATH=../libcxxabi_install/lib

Am I building libcxxabi correctly?  All tests in its own test suite
pass.  Or perhaps is libcxxabi only supported for certain OS X
versions?

Thanks,
Greg