diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot --- a/libcxx/utils/ci/run-buildbot +++ b/libcxx/utils/ci/run-buildbot @@ -113,15 +113,18 @@ "${@}" } -function check-cxx-cxxabi() { - echo "--- Installing libc++ and libc++abi to a fake location" - ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi +function check-runtimes() { + echo "--- Installing libc++, libc++abi and libunwind to a fake location" + ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi install-unwind echo "+++ Running the libc++ tests" ${NINJA} -vC "${BUILD_DIR}" check-cxx echo "+++ Running the libc++abi tests" ${NINJA} -vC "${BUILD_DIR}" check-cxxabi + + echo "+++ Running the libunwind tests" + ${NINJA} -vC "${BUILD_DIR}" check-unwind } # TODO: The goal is to test this against all configurations. We should also move @@ -190,181 +193,181 @@ clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-cxx11) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-cxx14) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-cxx17) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-cxx20) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx20.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-cxx2b) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2b.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-assertions) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-assertions.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-debug-iterators) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-debug-iterators.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes check-abi-list ;; generic-noexceptions) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-modules) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-modules.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-static) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-static.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-static.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-32bit) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-32bits.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-clang-11) export CC=clang-11 export CXX=clang++-11 clean generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-clang-12) export CC=clang-12 export CXX=clang++-12 clean generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-gcc) export CC=gcc-11 export CXX=g++-11 clean generate-cmake - check-cxx-cxxabi + check-runtimes ;; generic-gcc-cxx11) export CC=gcc-11 export CXX=g++-11 clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" - check-cxx-cxxabi + check-runtimes ;; generic-asan) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-msan) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-tsan) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-ubsan) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-with_llvm_unwinder) clean generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-singlethreaded) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-singlethreaded.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-no-debug) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-debug.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-no-filesystem) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-filesystem.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-no-random_device) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-no-localization) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-localization.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; generic-no-unicode) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-unicode.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; x86_64-apple-system) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \ -DLIBCXX_TEST_CONFIG="apple-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; x86_64-apple-system-noexceptions) clean @@ -372,7 +375,7 @@ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \ -DLIBCXX_TEST_CONFIG="apple-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; x86_64-apple-system-backdeployment-*) clean @@ -401,7 +404,7 @@ -DLIBCXX_TEST_PARAMS="${PARAMS}" \ -DLIBCXXABI_TEST_PARAMS="${PARAMS}" - check-cxx-cxxabi + check-runtimes ;; benchmarks) clean @@ -428,7 +431,7 @@ -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi;libunwind" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; new-standalone) clean @@ -443,7 +446,7 @@ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; runtimes-build) clean @@ -475,7 +478,7 @@ legacy-test-config) clean generate-cmake -DLIBCXX_TEST_CONFIG="legacy.cfg.in" - check-cxx-cxxabi + check-runtimes ;; legacy-standalone) clean @@ -522,7 +525,7 @@ clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; aarch64-noexceptions) clean @@ -530,33 +533,33 @@ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; # Aka Armv8 32 bit armv8) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Arm.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; armv8-noexceptions) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Thumb-noexceptions.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; # Armv7 32 bit. One building Arm only one Thumb only code. armv7) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Arm.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; armv7-noexceptions) clean generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Thumb-noexceptions.cmake" \ -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" - check-cxx-cxxabi + check-runtimes ;; windows-dll) clean diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py --- a/libcxx/utils/libcxx/test/params.py +++ b/libcxx/utils/libcxx/test/params.py @@ -176,7 +176,8 @@ help="Whether to build the test suite in 32 bit mode even on a 64 bit target. This basically controls " "whether -m32 is used when building the test suite.", actions=lambda enabled: [] if not enabled else [ - AddFlag('-m32') + AddFlag('-m32'), + AddFeature('32bits-on-64bits') ]), Parameter(name='additional_features', type=list, default=[], diff --git a/libunwind/test/forceunwind.pass.cpp b/libunwind/test/forceunwind.pass.cpp --- a/libunwind/test/forceunwind.pass.cpp +++ b/libunwind/test/forceunwind.pass.cpp @@ -9,6 +9,12 @@ // REQUIRES: linux +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + // Basic test for _Unwind_ForcedUnwind. // See libcxxabi/test/forced_unwind* tests too. diff --git a/libunwind/test/frameheadercache_test.pass.cpp b/libunwind/test/frameheadercache_test.pass.cpp --- a/libunwind/test/frameheadercache_test.pass.cpp +++ b/libunwind/test/frameheadercache_test.pass.cpp @@ -1,3 +1,9 @@ +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + // The other libunwind tests don't test internal interfaces, so the include path // is a little wonky. #include "../src/config.h" diff --git a/libunwind/test/libunwind_01.pass.cpp b/libunwind/test/libunwind_01.pass.cpp --- a/libunwind/test/libunwind_01.pass.cpp +++ b/libunwind/test/libunwind_01.pass.cpp @@ -1,3 +1,12 @@ +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate these failures on x86_64 macOS +// XFAIL: target=x86_64-apple-darwin{{.+}} + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + #include #include #include diff --git a/libunwind/test/libunwind_02.pass.cpp b/libunwind/test/libunwind_02.pass.cpp --- a/libunwind/test/libunwind_02.pass.cpp +++ b/libunwind/test/libunwind_02.pass.cpp @@ -1,3 +1,9 @@ +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + #include #include #include diff --git a/libunwind/test/remember_state_leak.pass.sh.s b/libunwind/test/remember_state_leak.pass.sh.s --- a/libunwind/test/remember_state_leak.pass.sh.s +++ b/libunwind/test/remember_state_leak.pass.sh.s @@ -2,6 +2,15 @@ # RUN: %{build} # RUN: %{run} +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + +# TODO: Investigate this failure on GCC. +# XFAIL: gcc + # The following assembly is a translation of this code: # # _Unwind_Reason_Code callback(int, _Unwind_Action, long unsigned int, diff --git a/libunwind/test/signal_frame.pass.cpp b/libunwind/test/signal_frame.pass.cpp --- a/libunwind/test/signal_frame.pass.cpp +++ b/libunwind/test/signal_frame.pass.cpp @@ -9,6 +9,15 @@ // Ensure that functions marked as signal frames are reported as such. +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure on macOS +// XFAIL: target={{.+}}-apple-darwin{{.+}} + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + // UNSUPPORTED: libunwind-arm-ehabi #include diff --git a/libunwind/test/signal_unwind.pass.cpp b/libunwind/test/signal_unwind.pass.cpp --- a/libunwind/test/signal_unwind.pass.cpp +++ b/libunwind/test/signal_unwind.pass.cpp @@ -10,6 +10,12 @@ // Ensure that the unwinder can cope with the signal handler. // REQUIRES: linux && (target={{aarch64-.+}} || target={{x86_64-.+}}) +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + #include #include #include diff --git a/libunwind/test/unw_getcontext.pass.cpp b/libunwind/test/unw_getcontext.pass.cpp --- a/libunwind/test/unw_getcontext.pass.cpp +++ b/libunwind/test/unw_getcontext.pass.cpp @@ -1,3 +1,6 @@ +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + #include #include diff --git a/libunwind/test/unwind_leaffunction.pass.cpp b/libunwind/test/unwind_leaffunction.pass.cpp --- a/libunwind/test/unwind_leaffunction.pass.cpp +++ b/libunwind/test/unwind_leaffunction.pass.cpp @@ -10,6 +10,12 @@ // Ensure that leaf function can be unwund. // REQUIRES: linux && (target={{aarch64-.+}} || target={{x86_64-.+}}) +// TODO: Investigate these failures +// XFAIL: asan, tsan, ubsan + +// TODO: Investigate this failure +// XFAIL: 32bits-on-64bits + #include #include #include