[libcxx-commits] [libcxxabi] 4d79ef8 - Allow running back-deployment testing against libc++abi

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Fri Nov 6 05:12:54 PST 2020


Author: Louis Dionne
Date: 2020-11-06T08:12:46-05:00
New Revision: 4d79ef814aedb63e85903bb145dfe7ec143c6909

URL: https://github.com/llvm/llvm-project/commit/4d79ef814aedb63e85903bb145dfe7ec143c6909
DIFF: https://github.com/llvm/llvm-project/commit/4d79ef814aedb63e85903bb145dfe7ec143c6909.diff

LOG: Allow running back-deployment testing against libc++abi

Summary:
Before this patch, we could only link against the back-deployment libc++abi
dylib. This patch allows linking against the just-built libc++abi, but
running against the back-deployment one -- just like we do for libc++.

Also, add XFAIL markup to flag expected errors.

Added: 
    

Modified: 
    libcxx/test/configs/legacy.cfg.in
    libcxx/utils/ci/macos-backdeployment.sh
    libcxx/utils/ci/run-buildbot
    libcxx/utils/libcxx/compiler.py
    libcxx/utils/libcxx/test/config.py
    libcxxabi/test/catch_function_01.pass.cpp
    libcxxabi/test/catch_member_data_pointer_01.pass.cpp
    libcxxabi/test/catch_member_pointer_nullptr.pass.cpp
    libcxxabi/test/catch_multi_level_pointer.pass.cpp
    libcxxabi/test/catch_pointer_nullptr.pass.cpp
    libcxxabi/test/catch_ptr_02.pass.cpp
    libcxxabi/test/cxa_vec_new_overflow_PR41395.pass.cpp
    libcxxabi/test/dynamic_cast.pass.cpp
    libcxxabi/test/exception_object_alignment.pass.cpp
    libcxxabi/test/incomplete_type.sh.cpp
    libcxxabi/test/libcxxabi/test/config.py
    libcxxabi/test/lit.site.cfg.in
    libcxxabi/test/test_aux_runtime_op_array_new.pass.cpp
    libcxxabi/test/test_demangle.pass.cpp
    libcxxabi/test/test_exception_address_alignment.pass.cpp
    libcxxabi/test/thread_local_destruction_order.pass.cpp
    libcxxabi/test/uncaught_exceptions.pass.cpp
    libunwind/test/libunwind/test/config.py
    libunwind/test/lit.site.cfg.in

Removed: 
    


################################################################################
diff  --git a/libcxx/test/configs/legacy.cfg.in b/libcxx/test/configs/legacy.cfg.in
index f0a4e8a73e09..60591c0e424b 100644
--- a/libcxx/test/configs/legacy.cfg.in
+++ b/libcxx/test/configs/legacy.cfg.in
@@ -8,6 +8,7 @@ config.project_obj_root         = "@CMAKE_BINARY_DIR@"
 config.libcxx_src_root          = "@LIBCXX_SOURCE_DIR@"
 config.libcxx_obj_root          = "@LIBCXX_BINARY_DIR@"
 config.cxx_library_root         = "@LIBCXX_LIBRARY_DIR@"
+config.abi_library_root         = "@LIBCXX_CXX_ABI_LIBRARY_PATH@"
 config.enable_exceptions        = @LIBCXX_ENABLE_EXCEPTIONS@
 config.enable_debug_tests       = @LIBCXX_ENABLE_DEBUG_MODE_SUPPORT@
 config.enable_experimental      = @LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY@
@@ -18,7 +19,6 @@ config.enable_32bit             = @LIBCXX_BUILD_32_BITS@
 config.cxx_abi                  = "@LIBCXX_CXX_ABI_LIBNAME@"
 config.use_sanitizer            = "@LLVM_USE_SANITIZER@"
 config.sanitizer_library        = "@LIBCXX_SANITIZER_LIBRARY@"
-config.abi_library_path         = "@LIBCXX_CXX_ABI_LIBRARY_PATH@"
 config.configuration_variant    = "@LIBCXX_LIT_VARIANT@"
 config.host_triple              = "@LLVM_HOST_TRIPLE@"
 config.target_triple            = "@TARGET_TRIPLE@"

diff  --git a/libcxx/utils/ci/macos-backdeployment.sh b/libcxx/utils/ci/macos-backdeployment.sh
index f91d7197e9e5..281b6e561aeb 100755
--- a/libcxx/utils/ci/macos-backdeployment.sh
+++ b/libcxx/utils/ci/macos-backdeployment.sh
@@ -120,6 +120,10 @@ fi
 LIBCXX_ROOT_ON_DEPLOYMENT_TARGET="${PREVIOUS_DYLIBS_DIR}/macOS/libc++/${DEPLOYMENT_TARGET}"
 LIBCXXABI_ROOT_ON_DEPLOYMENT_TARGET="${PREVIOUS_DYLIBS_DIR}/macOS/libc++abi/${DEPLOYMENT_TARGET}"
 
+# TODO: On Apple platforms, we never produce libc++abi.1.dylib, always libc++abi.dylib.
+#       Fix that in the build so that the tests stop searching for @rpath/libc++abi.1.dylib.
+cp "${LIBCXXABI_ROOT_ON_DEPLOYMENT_TARGET}/libc++abi.dylib" "${LIBCXXABI_ROOT_ON_DEPLOYMENT_TARGET}/libc++abi.1.dylib"
+
 # Filesystem is supported on Apple platforms starting with macosx10.15.
 if [[ ${DEPLOYMENT_TARGET} =~ ^10.9|10.10|10.11|10.12|10.13|10.14$ ]]; then
     ENABLE_FILESYSTEM="--param enable_filesystem=false"
@@ -127,9 +131,8 @@ else
     ENABLE_FILESYSTEM="--param enable_filesystem=true"
 fi
 
-# TODO: We need to also run the tests for libc++abi.
-echo "@@@ Running tests for libc++ @@@"
-"${LLVM_BUILD_DIR}/bin/llvm-lit" -sv "${MONOREPO_ROOT}/libcxx/test" \
+echo "@@@ Running tests for libc++ and libc++abi @@@"
+"${LLVM_BUILD_DIR}/bin/llvm-lit" -sv "${MONOREPO_ROOT}/libcxx/test" "${MONOREPO_ROOT}/libcxxabi/test" \
                                  --param=enable_experimental=false \
                                  --param=enable_debug_tests=false \
                                  ${ENABLE_FILESYSTEM} \
@@ -138,7 +141,8 @@ echo "@@@ Running tests for libc++ @@@"
                                  --param=target_triple="x86_64-apple-macosx${DEPLOYMENT_TARGET}" \
                                  --param=cxx_library_root="${LLVM_INSTALL_DIR}/lib" \
                                  --param=cxx_runtime_root="${LIBCXX_ROOT_ON_DEPLOYMENT_TARGET}" \
-                                 --param=abi_library_path="${LIBCXXABI_ROOT_ON_DEPLOYMENT_TARGET}" \
+                                 --param=abi_library_root="${LLVM_INSTALL_DIR}/lib" \
+                                 --param=abi_runtime_root="${LIBCXXABI_ROOT_ON_DEPLOYMENT_TARGET}" \
                                  --param=use_system_cxx_lib="True" \
                                  ${ADDITIONAL_LIT_ARGS}
 echo "@@@@@@"

diff  --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 5a6ea64db62a..b644668aeada 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -243,9 +243,15 @@ x86_64-apple-system-backdeployment-*)
     fi
 
     DEPLOYMENT_TARGET="${BUILDER#x86_64-apple-system-backdeployment-}"
+
+    # TODO: On Apple platforms, we never produce libc++abi.1.dylib, always libc++abi.dylib.
+    #       Fix that in the build so that the tests stop searching for @rpath/libc++abi.1.dylib.
+    cp "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.dylib" \
+       "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.1.dylib"
+
     PARAMS="target_triple=x86_64-apple-macosx${DEPLOYMENT_TARGET}"
     PARAMS+=";cxx_runtime_root=${OSX_ROOTS}/macOS/libc++/${DEPLOYMENT_TARGET}"
-    PARAMS+=";abi_library_path=${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}"
+    PARAMS+=";abi_runtime_root=${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}"
     PARAMS+=";use_system_cxx_lib=True"
     # Filesystem is supported on Apple platforms starting with macosx10.15.
     if [[ ${DEPLOYMENT_TARGET} =~ ^10.9|10.10|10.11|10.12|10.13|10.14$ ]]; then
@@ -258,9 +264,7 @@ x86_64-apple-system-backdeployment-*)
                    -DLIBCXX_TEST_PARAMS="${PARAMS}" \
                    -DLIBCXXABI_TEST_PARAMS="${PARAMS}"
 
-    # TODO: Also run the libc++abi tests
-    echo "+++ Running the libc++ tests"
-    ninja -C "${BUILD_DIR}" check-cxx
+    check-cxx-cxxabi
 ;;
 benchmarks)
     export CC=clang

diff  --git a/libcxx/utils/libcxx/compiler.py b/libcxx/utils/libcxx/compiler.py
index 248b5ba8a98c..dd334cdbcff9 100644
--- a/libcxx/utils/libcxx/compiler.py
+++ b/libcxx/utils/libcxx/compiler.py
@@ -29,7 +29,6 @@ def __init__(self, config, path, flags=None, compile_flags=None, link_flags=None
         self.flags = list(flags or [])
         self.compile_flags = list(compile_flags or [])
         self.link_flags = list(link_flags or [])
-        self.link_libcxxabi_flag = '-lc++abi'
         self.warning_flags = list(warning_flags or [])
         self.verify_supported = verify_supported
         self.use_verify = use_verify

diff  --git a/libcxx/utils/libcxx/test/config.py b/libcxx/utils/libcxx/test/config.py
index ca0385a16977..4b34a42db8b9 100644
--- a/libcxx/utils/libcxx/test/config.py
+++ b/libcxx/utils/libcxx/test/config.py
@@ -124,8 +124,9 @@ def configure(self):
         self.configure_obj_root()
         self.cxx_stdlib_under_test = self.get_lit_conf('cxx_stdlib_under_test', 'libc++')
         self.cxx_library_root = self.get_lit_conf('cxx_library_root', self.libcxx_obj_root)
-        self.abi_library_root = self.get_lit_conf('abi_library_path', None)
+        self.abi_library_root = self.get_lit_conf('abi_library_root', None)
         self.cxx_runtime_root = self.get_lit_conf('cxx_runtime_root', self.cxx_library_root)
+        self.abi_runtime_root = self.get_lit_conf('abi_runtime_root', self.abi_library_root)
         self.configure_compile_flags()
         self.configure_link_flags()
         self.configure_env()
@@ -158,6 +159,8 @@ def print_config_info(self):
         self.lit_config.note('Adding environment variables: %r' % show_env_vars)
         self.lit_config.note("Linking against the C++ Library at {}".format(self.cxx_library_root))
         self.lit_config.note("Running against the C++ Library at {}".format(self.cxx_runtime_root))
+        self.lit_config.note("Linking against the ABI Library at {}".format(self.abi_library_root))
+        self.lit_config.note("Running against the ABI Library at {}".format(self.abi_runtime_root))
         sys.stderr.flush()  # Force flushing to avoid broken output on Windows
 
     def get_test_format(self):
@@ -423,10 +426,11 @@ def configure_link_flags_abi_library_path(self):
         # Configure ABI library paths.
         if self.abi_library_root:
             self.cxx.link_flags += ['-L' + self.abi_library_root]
+        if self.abi_runtime_root:
             if not self.target_info.is_windows():
-                self.cxx.link_flags += ['-Wl,-rpath,' + self.abi_library_root]
+                self.cxx.link_flags += ['-Wl,-rpath,' + self.abi_runtime_root]
             else:
-                self.add_path(self.exec_env, self.abi_library_root)
+                self.add_path(self.exec_env, self.abi_runtime_root)
 
     def configure_link_flags_cxx_library(self):
         if self.link_shared:
@@ -460,7 +464,6 @@ def configure_link_flags_abi_library(self):
                     if self.abi_library_root:
                         libname = self.make_static_lib_name('c++abi')
                         abs_path = os.path.join(self.abi_library_root, libname)
-                        self.cxx.link_libcxxabi_flag = abs_path
                         self.cxx.link_flags += [abs_path]
                     else:
                         self.cxx.link_flags += ['-lc++abi']
@@ -590,7 +593,7 @@ def configure_substitutions(self):
         sub.append(('%{flags}',         ' '.join(map(pipes.quote, flags))))
         sub.append(('%{compile_flags}', ' '.join(map(pipes.quote, compile_flags))))
         sub.append(('%{link_flags}',    ' '.join(map(pipes.quote, self.cxx.link_flags))))
-        sub.append(('%{link_libcxxabi}', pipes.quote(self.cxx.link_libcxxabi_flag)))
+
         codesign_ident = self.get_lit_conf('llvm_codesign_identity', '')
         env_vars = ' '.join('%s=%s' % (k, pipes.quote(v)) for (k, v) in self.exec_env.items())
         exec_args = [

diff  --git a/libcxxabi/test/catch_function_01.pass.cpp b/libcxxabi/test/catch_function_01.pass.cpp
index bbc94ad84d05..2978853a2696 100644
--- a/libcxxabi/test/catch_function_01.pass.cpp
+++ b/libcxxabi/test/catch_function_01.pass.cpp
@@ -13,6 +13,10 @@
 // XFAIL: gcc
 // UNSUPPORTED: no-exceptions
 
+// 65ace9daa360 made it in the dylib in macOS 10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cassert>
 
 template <class Tp>

diff  --git a/libcxxabi/test/catch_member_data_pointer_01.pass.cpp b/libcxxabi/test/catch_member_data_pointer_01.pass.cpp
index 5fe9d59edcb3..48199698839c 100644
--- a/libcxxabi/test/catch_member_data_pointer_01.pass.cpp
+++ b/libcxxabi/test/catch_member_data_pointer_01.pass.cpp
@@ -8,6 +8,10 @@
 
 // UNSUPPORTED: no-exceptions
 
+// 1b00fc5d8133 made it in the dylib in macOS 10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cassert>
 
 struct A

diff  --git a/libcxxabi/test/catch_member_pointer_nullptr.pass.cpp b/libcxxabi/test/catch_member_pointer_nullptr.pass.cpp
index bbf1ecf4657b..6ffb9ab526a1 100644
--- a/libcxxabi/test/catch_member_pointer_nullptr.pass.cpp
+++ b/libcxxabi/test/catch_member_pointer_nullptr.pass.cpp
@@ -6,6 +6,13 @@
 //
 //===----------------------------------------------------------------------===//
 
+// Catching an exception thrown as nullptr was not properly handled before
+// 2f984cab4fa7, which landed in macOS 10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 // UNSUPPORTED: no-exceptions
 
 #include <cassert>

diff  --git a/libcxxabi/test/catch_multi_level_pointer.pass.cpp b/libcxxabi/test/catch_multi_level_pointer.pass.cpp
index 895e611d7d0a..76a734d95207 100644
--- a/libcxxabi/test/catch_multi_level_pointer.pass.cpp
+++ b/libcxxabi/test/catch_multi_level_pointer.pass.cpp
@@ -8,6 +8,10 @@
 
 // UNSUPPORTED: no-exceptions
 
+// 1b00fc5d8133 made it in the dylib in macOS 10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cassert>
 #include <cstdio>
 #include <cstdlib>

diff  --git a/libcxxabi/test/catch_pointer_nullptr.pass.cpp b/libcxxabi/test/catch_pointer_nullptr.pass.cpp
index 6a8ed377caa7..78b345429b5a 100644
--- a/libcxxabi/test/catch_pointer_nullptr.pass.cpp
+++ b/libcxxabi/test/catch_pointer_nullptr.pass.cpp
@@ -6,6 +6,13 @@
 //
 //===----------------------------------------------------------------------===//
 
+// Catching an exception thrown as nullptr was not properly handled before
+// 2f984cab4fa7, which landed in macOS 10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 // UNSUPPORTED: c++03
 // UNSUPPORTED: no-exceptions
 

diff  --git a/libcxxabi/test/catch_ptr_02.pass.cpp b/libcxxabi/test/catch_ptr_02.pass.cpp
index a9914cc83520..ce4918e7f650 100644
--- a/libcxxabi/test/catch_ptr_02.pass.cpp
+++ b/libcxxabi/test/catch_ptr_02.pass.cpp
@@ -14,6 +14,9 @@
 //        See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97675.
 // ADDITIONAL_COMPILE_FLAGS: -Wno-error
 
+// The fix for PR17222 made it in the dylib for macOS 10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cassert>
 
 // Clang emits  warnings about exceptions of type 'Child' being caught by

diff  --git a/libcxxabi/test/cxa_vec_new_overflow_PR41395.pass.cpp b/libcxxabi/test/cxa_vec_new_overflow_PR41395.pass.cpp
index 84ba978f9dc1..17cf7c0a1467 100644
--- a/libcxxabi/test/cxa_vec_new_overflow_PR41395.pass.cpp
+++ b/libcxxabi/test/cxa_vec_new_overflow_PR41395.pass.cpp
@@ -8,6 +8,14 @@
 
 // UNSUPPORTED: no-exceptions
 
+// PR41395 isn't fixed until the dylib shipped with macOS 10.15
+// XFAIL: with_system_cxx_lib=macosx10.14
+// XFAIL: with_system_cxx_lib=macosx10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include "cxxabi.h"
 #include <new>
 #include <cassert>

diff  --git a/libcxxabi/test/dynamic_cast.pass.cpp b/libcxxabi/test/dynamic_cast.pass.cpp
index 49ecddb4177b..45701ca3b57c 100644
--- a/libcxxabi/test/dynamic_cast.pass.cpp
+++ b/libcxxabi/test/dynamic_cast.pass.cpp
@@ -6,6 +6,16 @@
 //
 //===----------------------------------------------------------------------===//
 
+// PR33425 and PR33487 are not fixed until the dylib shipped with macOS 10.15
+// XFAIL: with_system_cxx_lib=macosx10.14
+
+// PR33439 isn't fixed until the dylib shipped with macOS 10.14
+// XFAIL: with_system_cxx_lib=macosx10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cassert>
 
 // This test explicitly tests dynamic cast with types that have inaccessible

diff  --git a/libcxxabi/test/exception_object_alignment.pass.cpp b/libcxxabi/test/exception_object_alignment.pass.cpp
index 011ba5280a2e..2ff7448a4221 100644
--- a/libcxxabi/test/exception_object_alignment.pass.cpp
+++ b/libcxxabi/test/exception_object_alignment.pass.cpp
@@ -8,6 +8,16 @@
 
 // UNSUPPORTED: no-exceptions
 
+// The situation for the alignment of exception objects is badly messed up
+// before macOS 10.14. The test fails on macOS 10.9 to 10.12, passes on macOS
+// 10.13 (no investigation done), and passes afterwards. Just mark all the OSes
+// before 10.14 as unsupported.
+// UNSUPPORTED: with_system_cxx_lib=macosx10.13
+// UNSUPPORTED: with_system_cxx_lib=macosx10.12
+// UNSUPPORTED: with_system_cxx_lib=macosx10.11
+// UNSUPPORTED: with_system_cxx_lib=macosx10.10
+// UNSUPPORTED: with_system_cxx_lib=macosx10.9
+
 // Check that the pointer __cxa_allocate_exception returns is aligned to the
 // default alignment for the target architecture.
 

diff  --git a/libcxxabi/test/incomplete_type.sh.cpp b/libcxxabi/test/incomplete_type.sh.cpp
index cbcf7536ee31..33ef0e012e48 100644
--- a/libcxxabi/test/incomplete_type.sh.cpp
+++ b/libcxxabi/test/incomplete_type.sh.cpp
@@ -16,13 +16,15 @@
 // UNSUPPORTED: no-exceptions
 // UNSUPPORTED: no-rtti
 
-// NOTE: Link libc++abi explicitly and before libc++ so that libc++ doesn't drag
-// in the system libc++abi installation on OS X. (DYLD_LIBRARY_PATH is ignored
-// for shell tests because of Apple security features).
+// The fix for PR25898 landed in the system dylibs in macOS 10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
 
 // RUN: %{cxx} %{flags} %{compile_flags} -Wno-unreachable-code -c %s -o %t.one.o
 // RUN: %{cxx} %{flags} %{compile_flags} -Wno-unreachable-code -c %s -o %t.two.o -DTU_ONE
-// RUN: %{cxx} %{flags} %t.one.o %t.two.o %{link_libcxxabi} %{link_flags} -o %t.exe
+// RUN: %{cxx} %{flags} %{link_flags} %t.one.o %t.two.o -o %t.exe
 // RUN: %{exec} %t.exe
 
 #include <stdio.h>

diff  --git a/libcxxabi/test/libcxxabi/test/config.py b/libcxxabi/test/libcxxabi/test/config.py
index 45fb0f5d7afc..280a60a864bc 100644
--- a/libcxxabi/test/libcxxabi/test/config.py
+++ b/libcxxabi/test/libcxxabi/test/config.py
@@ -18,7 +18,7 @@ def __init__(self, lit_config, config):
         super(Configuration, self).__init__(lit_config, config)
         self.libcxxabi_src_root = None
         self.libcxxabi_obj_root = None
-        self.abi_library_path = None
+        self.abi_library_root = None
         self.libcxx_src_root = None
 
     def configure_src_root(self):

diff  --git a/libcxxabi/test/lit.site.cfg.in b/libcxxabi/test/lit.site.cfg.in
index 87f955e32161..1b7713e3ef73 100644
--- a/libcxxabi/test/lit.site.cfg.in
+++ b/libcxxabi/test/lit.site.cfg.in
@@ -7,7 +7,7 @@ config.cxx_under_test           = "@CMAKE_CXX_COMPILER@"
 config.project_obj_root         = "@CMAKE_BINARY_DIR@"
 config.libcxxabi_src_root       = "@LIBCXXABI_SOURCE_DIR@"
 config.libcxxabi_obj_root       = "@LIBCXXABI_BINARY_DIR@"
-config.abi_library_path         = "@LIBCXXABI_LIBRARY_DIR@"
+config.abi_library_root         = "@LIBCXXABI_LIBRARY_DIR@"
 config.libcxx_src_root          = "@LIBCXXABI_LIBCXX_PATH@"
 config.cxx_headers              = "@LIBCXXABI_LIBCXX_INCLUDES@"
 config.libunwind_headers        = "@LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL@"

diff  --git a/libcxxabi/test/test_aux_runtime_op_array_new.pass.cpp b/libcxxabi/test/test_aux_runtime_op_array_new.pass.cpp
index 943ebe8bb63e..52ccce8c7045 100644
--- a/libcxxabi/test/test_aux_runtime_op_array_new.pass.cpp
+++ b/libcxxabi/test/test_aux_runtime_op_array_new.pass.cpp
@@ -8,6 +8,15 @@
 
 // UNSUPPORTED: no-exceptions
 
+// ___cxa_throw_bad_array_new_length is re-exported from libc++ only starting
+// in macosx 10.15
+// XFAIL: with_system_cxx_lib=macosx10.14
+// XFAIL: with_system_cxx_lib=macosx10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cxxabi.h>
 #include <new>
 

diff  --git a/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp
index cbbccb14feed..7ce08963bda3 100644
--- a/libcxxabi/test/test_demangle.pass.cpp
+++ b/libcxxabi/test/test_demangle.pass.cpp
@@ -6,6 +6,15 @@
 //
 //===----------------------------------------------------------------------===//
 
+// The demangler does not pass all these tests with the system dylibs on macOS.
+// XFAIL: with_system_cxx_lib=macosx10.15
+// XFAIL: with_system_cxx_lib=macosx10.14
+// XFAIL: with_system_cxx_lib=macosx10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include "support/timer.h"
 #include <cassert>
 #include <cstdio>

diff  --git a/libcxxabi/test/test_exception_address_alignment.pass.cpp b/libcxxabi/test/test_exception_address_alignment.pass.cpp
index 1b7316b2f32b..c72a5a2f04d5 100644
--- a/libcxxabi/test/test_exception_address_alignment.pass.cpp
+++ b/libcxxabi/test/test_exception_address_alignment.pass.cpp
@@ -11,10 +11,11 @@
 
 // The <unwind.h> header provided in the SDK of older Xcodes used to provide
 // an incorrectly aligned _Unwind_Exception type. That causes these tests to
-// fail with those SDKs.
-// FIXME: We mark the test as unsupported on Apple until we have a Lit feature
-//        representing the SDK version.
-// UNSUPPORTED: darwin
+// fail when linking against a libc++abi that was built with those SDKs.
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
 
 // Test that the address of the exception object is properly aligned as required
 // by the relevant ABI

diff  --git a/libcxxabi/test/thread_local_destruction_order.pass.cpp b/libcxxabi/test/thread_local_destruction_order.pass.cpp
index eeb90b820b87..7097f2971a93 100644
--- a/libcxxabi/test/thread_local_destruction_order.pass.cpp
+++ b/libcxxabi/test/thread_local_destruction_order.pass.cpp
@@ -6,19 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Darwin TLV finalization routines used to fail when creating a thread-local
-// variable in the destructor for another thread-local variable:
-//  - http://lists.llvm.org/pipermail/cfe-dev/2016-November/051376.html
-//  - rdar://29523281
-// This was fixed in dyld in macos 10.15.
-//
-// XFAIL: macosx10.14
-// XFAIL: macosx10.13
-// XFAIL: macosx10.12
-// XFAIL: macosx10.11
-// XFAIL: macosx10.10
-// XFAIL: macosx10.9
-
 // UNSUPPORTED: c++03
 // UNSUPPORTED: libcxxabi-no-threads
 

diff  --git a/libcxxabi/test/uncaught_exceptions.pass.cpp b/libcxxabi/test/uncaught_exceptions.pass.cpp
index 3474e0c3c514..c3c1aacb2af0 100644
--- a/libcxxabi/test/uncaught_exceptions.pass.cpp
+++ b/libcxxabi/test/uncaught_exceptions.pass.cpp
@@ -8,6 +8,14 @@
 
 // UNSUPPORTED: no-exceptions
 
+// __cxa_uncaught_exceptions is not re-exported from libc++ until macOS 10.15.
+// XFAIL: with_system_cxx_lib=macosx10.14
+// XFAIL: with_system_cxx_lib=macosx10.13
+// XFAIL: with_system_cxx_lib=macosx10.12
+// XFAIL: with_system_cxx_lib=macosx10.11
+// XFAIL: with_system_cxx_lib=macosx10.10
+// XFAIL: with_system_cxx_lib=macosx10.9
+
 #include <cxxabi.h>
 #include <cassert>
 

diff  --git a/libunwind/test/libunwind/test/config.py b/libunwind/test/libunwind/test/config.py
index 9231860fc622..be2dcbd1af59 100644
--- a/libunwind/test/libunwind/test/config.py
+++ b/libunwind/test/libunwind/test/config.py
@@ -17,7 +17,7 @@ def __init__(self, lit_config, config):
         super(Configuration, self).__init__(lit_config, config)
         self.libunwind_src_root = None
         self.libunwind_obj_root = None
-        self.abi_library_path = None
+        self.abi_library_root = None
         self.libcxx_src_root = None
 
     def configure_src_root(self):

diff  --git a/libunwind/test/lit.site.cfg.in b/libunwind/test/lit.site.cfg.in
index 8ff770fe29bc..cb2e087fad73 100644
--- a/libunwind/test/lit.site.cfg.in
+++ b/libunwind/test/lit.site.cfg.in
@@ -7,7 +7,7 @@ config.cxx_under_test           = "@CMAKE_CXX_COMPILER@"
 config.project_obj_root         = "@CMAKE_BINARY_DIR@"
 config.libunwind_src_root       = "@LIBUNWIND_SOURCE_DIR@"
 config.libunwind_obj_root       = "@LIBUNWIND_BINARY_DIR@"
-config.abi_library_path         = "@LIBUNWIND_LIBRARY_DIR@"
+config.abi_library_root         = "@LIBUNWIND_LIBRARY_DIR@"
 config.libcxx_src_root          = "@LIBUNWIND_LIBCXX_PATH@"
 config.libunwind_headers        = "@LIBUNWIND_SOURCE_DIR@/include"
 config.cxx_library_root         = "@LIBUNWIND_LIBCXX_LIBRARY_PATH@"


        


More information about the libcxx-commits mailing list