summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2015-02-21 02:26:24 +0000
committerEric Fiselier <eric@efcs.ca>2015-02-21 02:26:24 +0000
commitd2852b69ce15da37e62d98ca313febd3664c0f28 (patch)
tree793b688b0059b038eedd9c6c991f36843fd301d2
parent3b6b7ca2bc6e0ea188bc3501f25384eaf97eb55a (diff)
downloadbcm5719-llvm-d2852b69ce15da37e62d98ca313febd3664c0f28.tar.gz
bcm5719-llvm-d2852b69ce15da37e62d98ca313febd3664c0f28.zip
[libcxx] Move to using libc++abi2.exp as the default symbol list for libc++
Summary: libc++abi2.exp should be used whenever `cxxabi.h` defines `_LIBCPPABI_VERSION`. This macro was added to libc++abi in 2012 in r149632. For this reason we should use libc++abi2.exp as default unless otherwise specified. Also when building against an in-tree libc++abi we definitely want to use libc++abi2.exp. I would love to know what OSX was the last to use libc++abi.exp but I can only test on 10.9. Reviewers: danalbert, mclow.lists, EricWF Reviewed By: EricWF Subscribers: meadori, cfe-commits Differential Revision: http://reviews.llvm.org/D7773 llvm-svn: 230119
-rw-r--r--libcxx/cmake/Modules/HandleLibCXXABI.cmake1
-rw-r--r--libcxx/lib/CMakeLists.txt4
-rw-r--r--libcxx/test/libcxx/test/config.py5
3 files changed, 9 insertions, 1 deletions
diff --git a/libcxx/cmake/Modules/HandleLibCXXABI.cmake b/libcxx/cmake/Modules/HandleLibCXXABI.cmake
index 8c04244b7fc..131941a078c 100644
--- a/libcxx/cmake/Modules/HandleLibCXXABI.cmake
+++ b/libcxx/cmake/Modules/HandleLibCXXABI.cmake
@@ -79,6 +79,7 @@ elseif ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxabi")
if (LIBCXX_CXX_ABI_INTREE)
# Link against just-built "cxxabi" target.
set(CXXABI_LIBNAME cxxabi)
+ set(LIBCXX_LIBCPPABI_VERSION "2" PARENT_SCOPE)
else()
# Assume c++abi is installed in the system, rely on -lc++abi link flag.
set(CXXABI_LIBNAME "c++abi")
diff --git a/libcxx/lib/CMakeLists.txt b/libcxx/lib/CMakeLists.txt
index 02c80d9d4e9..fb09c63fa4d 100644
--- a/libcxx/lib/CMakeLists.txt
+++ b/libcxx/lib/CMakeLists.txt
@@ -57,6 +57,10 @@ append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG -fPIC)
append_if(LIBCXX_LINK_FLAGS LIBCXX_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs)
if ( APPLE )
+ if (NOT DEFINED LIBCXX_LIBCPPABI_VERSION)
+ set(LIBCXX_LIBCPPABI_VERSION "2")
+ endif()
+
if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )
list(APPEND LIBCXX_COMPILE_FLAGS "-U__STRICT_ANSI__")
list(APPEND LIBCXX_LINK_FLAGS
diff --git a/libcxx/test/libcxx/test/config.py b/libcxx/test/libcxx/test/config.py
index 554b6bb77d7..162cddce939 100644
--- a/libcxx/test/libcxx/test/config.py
+++ b/libcxx/test/libcxx/test/config.py
@@ -439,7 +439,10 @@ class Configuration(object):
elif cxx_abi == 'libsupc++':
self.cxx.link_flags += ['-lsupc++']
elif cxx_abi == 'libcxxabi':
- self.cxx.link_flags += ['-lc++abi']
+ # Don't link libc++abi explicitly on OS X because the symbols
+ # should be available in libc++ directly.
+ if self.target_info.platform() != 'darwin':
+ self.cxx.link_flags += ['-lc++abi']
elif cxx_abi == 'libcxxrt':
self.cxx.link_flags += ['-lcxxrt']
elif cxx_abi == 'none':
OpenPOWER on IntegriCloud