EricWF created this revision.
EricWF added reviewers: mclow.lists, bcraig, dexonsmith.
EricWF added a subscriber: cfe-commits.

Libc++ reexports symbols from the system libc++abi using 
-reexport_symbols_list. This can cause a linker failure if the list contains 
symbols not defined in the system libc++abi.
This patch attempts to detect the OS X version and use it to determine the 
correct symbol list. 

It's my understanding that `lib/libc++abi2.exp` should be used on 10.9 and 
greater. Otherwise 'lib/libc++abi.exp' should be used

This fixes PR25666 (https://llvm.org/bugs/show_bug.cgi?id=25666)

http://reviews.llvm.org/D20772

Files:
  lib/CMakeLists.txt

Index: lib/CMakeLists.txt
===================================================================
--- lib/CMakeLists.txt
+++ lib/CMakeLists.txt
@@ -88,7 +88,21 @@
 if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR
                 LIBCXX_CXX_ABI_LIBNAME STREQUAL "none"))
   if (NOT DEFINED LIBCXX_LIBCPPABI_VERSION)
-    set(LIBCXX_LIBCPPABI_VERSION "2")
+    set(LIBCXX_LIBCPPABI_VERSION "2") # Default value
+    execute_process(
+      COMMAND xcrun --show-sdk-version
+      OUTPUT_VARIABLE sdk_ver
+      RESULT_VARIABLE res
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (res EQUAL 0)
+      message(STATUS "Found SDK version ${sdk_ver}")
+      string(REPLACE "10." "" sdk_ver "${sdk_ver}")
+      if (sdk_ver LESS 9)
+        set(LIBCXX_LIBCPPABI_VERSION "")
+      else()
+        set(LIBCXX_LIBCPPABI_VERSION "2")
+      endif()
+    endif()
   endif()
 
   if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )


Index: lib/CMakeLists.txt
===================================================================
--- lib/CMakeLists.txt
+++ lib/CMakeLists.txt
@@ -88,7 +88,21 @@
 if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR
                 LIBCXX_CXX_ABI_LIBNAME STREQUAL "none"))
   if (NOT DEFINED LIBCXX_LIBCPPABI_VERSION)
-    set(LIBCXX_LIBCPPABI_VERSION "2")
+    set(LIBCXX_LIBCPPABI_VERSION "2") # Default value
+    execute_process(
+      COMMAND xcrun --show-sdk-version
+      OUTPUT_VARIABLE sdk_ver
+      RESULT_VARIABLE res
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (res EQUAL 0)
+      message(STATUS "Found SDK version ${sdk_ver}")
+      string(REPLACE "10." "" sdk_ver "${sdk_ver}")
+      if (sdk_ver LESS 9)
+        set(LIBCXX_LIBCPPABI_VERSION "")
+      else()
+        set(LIBCXX_LIBCPPABI_VERSION "2")
+      endif()
+    endif()
   endif()
 
   if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to