diff --git a/.github/workflows/actions/setup_linux/action.yaml b/.github/workflows/actions/setup_linux/action.yaml index 6773c5ce..bfb1a795 100644 --- a/.github/workflows/actions/setup_linux/action.yaml +++ b/.github/workflows/actions/setup_linux/action.yaml @@ -33,6 +33,10 @@ runs: sudo chmod o+w /etc/apt/sources.list.d/clang.list echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" >> /etc/apt/sources.list.d/clang.list echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main" >> /etc/apt/sources.list.d/clang.list + echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" >> /etc/apt/sources.list.d/clang.list + echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" >> /etc/apt/sources.list.d/clang.list + echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" >> /etc/apt/sources.list.d/clang.list + echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" >> /etc/apt/sources.list.d/clang.list echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main" >> /etc/apt/sources.list.d/clang.list echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main" >> /etc/apt/sources.list.d/clang.list echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-16 main" >> /etc/apt/sources.list.d/clang.list diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 8464e380..5e2f756d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -75,13 +75,42 @@ jobs: macos_cc: /usr/local/opt/llvm@9/bin/clang apt_package: clang-9 homebrew_package: llvm@9 - # TODO Clang-10 on linux? macos homebrew doesn't seem to have it + - cxx: clang++-10 + cc: clang-10 + macos_cxx: /usr/local/opt/llvm@10/bin/clang++ + macos_cc: /usr/local/opt/llvm@10/bin/clang + apt_package: clang-10 + homebrew_package: llvm@10 - cxx: clang++-11 cc: clang-11 macos_cxx: /usr/local/opt/llvm@11/bin/clang++ macos_cc: /usr/local/opt/llvm@11/bin/clang apt_package: clang-11 libomp5-11 libomp-11-dev homebrew_package: llvm@11 + - cxx: clang++-12 + cc: clang-12 + macos_cxx: /usr/local/opt/llvm@12/bin/clang++ + macos_cc: /usr/local/opt/llvm@12/bin/clang + apt_package: clang-12 libomp5-12 libomp-12-dev + homebrew_package: llvm@12 + - cxx: clang++-13 + cc: clang-13 + macos_cxx: /usr/local/opt/llvm@13/bin/clang++ + macos_cc: /usr/local/opt/llvm@13/bin/clang + apt_package: clang-13 libomp5-13 libomp-13-dev + homebrew_package: llvm@13 + - cxx: clang++-14 + cc: clang-14 + macos_cxx: /usr/local/opt/llvm@14/bin/clang++ + macos_cc: /usr/local/opt/llvm@14/bin/clang + apt_package: clang-14 libomp5-14 libomp-14-dev + homebrew_package: llvm@14 + - cxx: clang++-15 + cc: clang-15 + macos_cxx: /usr/local/opt/llvm@15/bin/clang++ + macos_cc: /usr/local/opt/llvm@15/bin/clang + apt_package: clang-15 libomp5-15 libomp-15-dev + homebrew_package: llvm@15 # Apple Clang # - cxx: clang++ # cc: clang @@ -98,13 +127,15 @@ jobs: run_tests: [true] run_clang_tidy: [false] exclude: - # MacOS CI doesn't have Clang 7, 8, 9 or GCC 7, 8 anymore + # MacOS CI doesn't have Clang 7, 8, 9, 10 or GCC 7, 8 anymore - os: macos-11 compiler: {cxx: clang++-7, cc: clang-7, macos_cxx: /usr/local/opt/llvm@7/bin/clang++, macos_cc: /usr/local/opt/llvm@7/bin/clang, apt_package: clang-7, homebrew_package: llvm@7} - os: macos-11 compiler: {cxx: clang++-8, cc: clang-8, macos_cxx: /usr/local/opt/llvm@8/bin/clang++, macos_cc: /usr/local/opt/llvm@8/bin/clang, apt_package: clang-8, homebrew_package: llvm@8} - os: macos-11 compiler: {cxx: clang++-9, cc: clang-9, macos_cxx: /usr/local/opt/llvm@9/bin/clang++, macos_cc: /usr/local/opt/llvm@9/bin/clang, apt_package: clang-9, homebrew_package: llvm@9} + - os: macos-11 + compiler: {cxx: clang++-10, cc: clang-10, macos_cxx: /usr/local/opt/llvm@10/bin/clang++, macos_cc: /usr/local/opt/llvm@10/bin/clang, apt_package: clang-10, homebrew_package: llvm@10} - os: macos-11 compiler: {cxx: g++-7, cc: gcc-7, macos_cxx: g++-7, macos_cc: gcc-7, homebrew_package: gcc@7, apt_package: g++-7} - os: macos-11 @@ -121,8 +152,12 @@ jobs: compiler: {cxx: g++-8, cc: gcc-8, macos_cxx: g++-8, macos_cc: gcc-8, homebrew_package: gcc@8, apt_package: g++-8} - os: macos-12 compiler: {cxx: g++-9, cc: gcc-9, macos_cxx: g++-9, macos_cc: gcc-9, homebrew_package: gcc@9, apt_package: g++-9} + - os: macos-12 + compiler: {cxx: clang++-10, cc: clang-10, macos_cxx: /usr/local/opt/llvm@10/bin/clang++, macos_cc: /usr/local/opt/llvm@10/bin/clang, apt_package: clang-10, homebrew_package: llvm@10} - os: macos-13 compiler: {cxx: clang++-7, cc: clang-7, macos_cxx: /usr/local/opt/llvm@7/bin/clang++, macos_cc: /usr/local/opt/llvm@7/bin/clang, apt_package: clang-7, homebrew_package: llvm@7} + - os: macos-13 + compiler: {cxx: clang++-10, cc: clang-10, macos_cxx: /usr/local/opt/llvm@10/bin/clang++, macos_cc: /usr/local/opt/llvm@10/bin/clang, apt_package: clang-10, homebrew_package: llvm@10} # Ubuntu 20.04 doesn't have GCC 12, 13 yet - os: ubuntu-20.04 compiler: {cxx: g++-12, cc: gcc-12, macos_cxx: g++-12, macos_cc: gcc-12, homebrew_package: gcc@12, apt_package: g++-12} diff --git a/test/cpp-utils/assert/backtrace_test.cpp b/test/cpp-utils/assert/backtrace_test.cpp index 7b0ab9d3..2b385bb6 100644 --- a/test/cpp-utils/assert/backtrace_test.cpp +++ b/test/cpp-utils/assert/backtrace_test.cpp @@ -39,10 +39,12 @@ TEST(BacktraceTest, ContainsTopLevelLine) namespace { +#if !(defined(__clang__) && defined(NDEBUG)) std::string call_process_exiting_with_nullptr_violation() { return call_process_exiting_with("nullptr"); } +#endif std::string call_process_exiting_with_exception(const std::string &message) { return call_process_exiting_with("exception", message); @@ -109,6 +111,8 @@ TEST(BacktraceTest, ContainsBacktrace) #endif } +#if !(defined(__clang__) && defined(NDEBUG)) +// TODO Can we also make this work on clang in Release mode? TEST(BacktraceTest, ShowBacktraceOnNullptrAccess) { auto output = call_process_exiting_with_nullptr_violation(); @@ -118,6 +122,7 @@ TEST(BacktraceTest, ShowBacktraceOnNullptrAccess) EXPECT_THAT(output, HasSubstr("cpputils::backtrace")); #endif } +#endif TEST(BacktraceTest, ShowBacktraceOnSigSegv) {