[libcxx] r249339 - [libcxx] Reexport std::bad_array_length symbols from libc++abi on OS X.

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 5 12:28:48 PDT 2015


Author: ericwf
Date: Mon Oct  5 14:28:48 2015
New Revision: 249339

URL: http://llvm.org/viewvc/llvm-project?rev=249339&view=rev
Log:
[libcxx] Reexport std::bad_array_length symbols from libc++abi on OS X.

Summary:
On OS X libc++ needs to reexport libc++abi's symbols in order for them to be provided. We explicitly list the symbols to reexport it libcxx/lib/libc++abi2.exp. This patch adds the symbols required by std::bad_array_length which have been missing for some time.

However there is a problem. std::bad_array_length was add to libc++abi in September of 2013 by commit r190479, about a year after everything else. Therefore I think older OS X version  have libc++abi versions without std::bad_array_length. On those systems
libc++ won't build with this change because we will try and export undefined symbols.

The workaround I would write to support older systems depends on the amount of people who would need it.   If only a small number of developers are affected it might be sufficient to provide a CMake switch like `LIBCPP_LIBCPPABI_HAS_BAD_ARRAY_LENGTH` which is
ON by default and can be disabled by those who need it. Otherwise I think we should try to automatically detect if the symbols are present in `/usr/lib/libc++abi.dylib` and configure accordingly. I would prefer the first solution because writing CMake sucks.




Reviewers: mclow.lists, aprantl

Subscribers: aprantl, cfe-commits

Differential Revision: http://reviews.llvm.org/D13445

Modified:
    libcxx/trunk/lib/CMakeLists.txt
    libcxx/trunk/lib/libc++abi2.exp

Modified: libcxx/trunk/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=249339&r1=249338&r2=249339&view=diff
==============================================================================
--- libcxx/trunk/lib/CMakeLists.txt (original)
+++ libcxx/trunk/lib/CMakeLists.txt Mon Oct  5 14:28:48 2015
@@ -107,7 +107,7 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME S
           "-Wl,-reexport_library,${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib")
       endif()
     else()
-      set (OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp")
+      set(OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp")
     endif()
 
     add_link_flags(

Modified: libcxx/trunk/lib/libc++abi2.exp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/libc%2B%2Babi2.exp?rev=249339&r1=249338&r2=249339&view=diff
==============================================================================
--- libcxx/trunk/lib/libc++abi2.exp (original)
+++ libcxx/trunk/lib/libc++abi2.exp Mon Oct  5 14:28:48 2015
@@ -290,6 +290,16 @@ __ZTISt16invalid_argument
 __ZTSSt16invalid_argument
 __ZTVSt16invalid_argument
 
+__ZNKSt16bad_array_length4whatEv
+__ZNSt16bad_array_lengthC1Ev
+__ZNSt16bad_array_lengthC2Ev
+__ZNSt16bad_array_lengthD0Ev
+__ZNSt16bad_array_lengthD1Ev
+__ZNSt16bad_array_lengthD2Ev
+__ZTISt16bad_array_length
+__ZTSSt16bad_array_length
+__ZTVSt16bad_array_length
+
 __ZTSDi
 __ZTSDn
 __ZTSDs




More information about the cfe-commits mailing list