[libcxx-commits] [libcxx] e601679 - [libc++] Add a picolibc test configuration with exceptions enabled (#75462)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Dec 18 07:25:54 PST 2023
Author: Dominik Wójt
Date: 2023-12-18T10:25:50-05:00
New Revision: e60167927bb6153408dbaa081fcb606e7a8f493a
URL: https://github.com/llvm/llvm-project/commit/e60167927bb6153408dbaa081fcb606e7a8f493a
DIFF: https://github.com/llvm/llvm-project/commit/e60167927bb6153408dbaa081fcb606e7a8f493a.diff
LOG: [libc++] Add a picolibc test configuration with exceptions enabled (#75462)
Added:
Modified:
libcxx/cmake/caches/Armv7M-picolibc.cmake
libcxx/utils/ci/buildkite-pipeline.yml
libcxx/utils/ci/run-buildbot
libcxxabi/test/catch_multi_level_pointer.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/cmake/caches/Armv7M-picolibc.cmake b/libcxx/cmake/caches/Armv7M-picolibc.cmake
index 9f8863943444b6..91cc32fd376e30 100644
--- a/libcxx/cmake/caches/Armv7M-picolibc.cmake
+++ b/libcxx/cmake/caches/Armv7M-picolibc.cmake
@@ -13,17 +13,18 @@ set(COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "")
set(COMPILER_RT_DEFAULT_TARGET_ONLY ON CACHE BOOL "")
set(LIBCXXABI_BAREMETAL ON CACHE BOOL "")
set(LIBCXXABI_ENABLE_ASSERTIONS OFF CACHE BOOL "")
-set(LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
+set(LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "")
set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
set(LIBCXXABI_ENABLE_STATIC ON CACHE BOOL "")
+set(LIBCXXABI_ENABLE_STATIC_UNWINDER ON CACHE BOOL "")
set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
set(LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
-set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
+set(LIBCXX_ENABLE_EXCEPTIONS ON CACHE BOOL "")
set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE STRING "")
set(LIBCXX_ENABLE_MONOTONIC_CLOCK OFF CACHE BOOL "")
set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
-set(LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
+set(LIBCXX_ENABLE_RTTI ON CACHE BOOL "")
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index c63f6a78b16070..a48f8524ef63c4 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -224,6 +224,13 @@ steps:
arch: aarch64
<<: *common
+ - label: Armv7-M picolibc -fno-exceptions
+ command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
+ agents:
+ queue: libcxx-builders-linaro-arm
+ arch: aarch64
+ <<: *common
+
- group: AIX
steps:
- label: AIX (32-bit)
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index ee890fb7669962..672d5cb70ae816 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -203,6 +203,43 @@ function check-cxx-benchmarks() {
${NINJA} -vC "${BUILD_DIR}" check-cxx-benchmarks
}
+function test-armv7m-picolibc() {
+ clean
+
+ # To make it easier to get this builder up and running, build picolibc
+ # from scratch. Anecdotally, the build-picolibc script takes about 16 seconds.
+ # This could be optimised by building picolibc into the Docker container.
+ ${MONOREPO_ROOT}/libcxx/utils/ci/build-picolibc.sh \
+ --build-dir "${BUILD_DIR}" \
+ --install-dir "${INSTALL_DIR}" \
+ --target armv7m-none-eabi
+
+ echo "--- Generating CMake"
+ flags="--sysroot=${INSTALL_DIR}"
+ ${CMAKE} \
+ -S "${MONOREPO_ROOT}/compiler-rt" \
+ -B "${BUILD_DIR}/compiler-rt" \
+ -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
+ -DCMAKE_C_FLAGS="${flags}" \
+ -DCMAKE_CXX_FLAGS="${flags}" \
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
+ "${@}"
+ generate-cmake \
+ -DLIBCXX_TEST_CONFIG="armv7m-picolibc-libc++.cfg.in" \
+ -DLIBCXXABI_TEST_CONFIG="armv7m-picolibc-libc++abi.cfg.in" \
+ -DLIBUNWIND_TEST_CONFIG="armv7m-picolibc-libunwind.cfg.in" \
+ -DCMAKE_C_FLAGS="${flags}" \
+ -DCMAKE_CXX_FLAGS="${flags}" \
+ "${@}"
+
+ ${NINJA} -vC "${BUILD_DIR}/compiler-rt" install
+ mv "${BUILD_DIR}/install/lib/armv7m-none-eabi"/* "${BUILD_DIR}/install/lib"
+
+ check-runtimes
+}
+
# Print the version of a few tools to aid diagnostics in some cases
${CMAKE} --version
${NINJA} --version
@@ -616,39 +653,16 @@ armv7-no-exceptions)
check-runtimes
;;
armv7m-picolibc)
- clean
-
- # To make it easier to get this builder up and running, build picolibc
- # from scratch. Anecdotally, the build-picolibc script takes about 16 seconds.
- # This could be optimised by building picolibc into the Docker container.
- ${MONOREPO_ROOT}/libcxx/utils/ci/build-picolibc.sh \
- --build-dir "${BUILD_DIR}" \
- --install-dir "${INSTALL_DIR}" \
- --target armv7m-none-eabi
-
- echo "--- Generating CMake"
- flags="--sysroot=${INSTALL_DIR}"
- ${CMAKE} \
- -S "${MONOREPO_ROOT}/compiler-rt" \
- -B "${BUILD_DIR}/compiler-rt" \
- -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
+ test-armv7m-picolibc \
+ -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7M-picolibc.cmake"
+;;
+armv7m-picolibc-no-exceptions)
+ test-armv7m-picolibc \
-C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7M-picolibc.cmake" \
- -DCMAKE_C_FLAGS="${flags}" \
- -DCMAKE_CXX_FLAGS="${flags}" \
- -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
- generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7M-picolibc.cmake" \
- -DLIBCXX_TEST_CONFIG="armv7m-picolibc-libc++.cfg.in" \
- -DLIBCXXABI_TEST_CONFIG="armv7m-picolibc-libc++abi.cfg.in" \
- -DLIBUNWIND_TEST_CONFIG="armv7m-picolibc-libunwind.cfg.in" \
- -DCMAKE_C_FLAGS="${flags}" \
- -DCMAKE_CXX_FLAGS="${flags}"
-
- ${NINJA} -vC "${BUILD_DIR}/compiler-rt" install
- mv "${BUILD_DIR}/install/lib/armv7m-none-eabi"/* "${BUILD_DIR}/install/lib"
-
- check-runtimes
+ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
+ -DLIBCXXABI_ENABLE_STATIC_UNWINDER=OFF \
+ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
+ -DLIBCXX_ENABLE_RTTI=OFF
;;
clang-cl-dll)
clean
diff --git a/libcxxabi/test/catch_multi_level_pointer.pass.cpp b/libcxxabi/test/catch_multi_level_pointer.pass.cpp
index 00ea66da301763..5f0e78a391b14c 100644
--- a/libcxxabi/test/catch_multi_level_pointer.pass.cpp
+++ b/libcxxabi/test/catch_multi_level_pointer.pass.cpp
@@ -11,6 +11,10 @@
// 1b00fc5d8133 made it in the dylib in macOS 10.11
// XFAIL: stdlib=apple-libc++ && target={{.+}}-apple-macosx10.{{9|10}}
+// mps2-an385 machine used for testing of picolibc has just 4 MB of "flash"
+// memory and this test requires almost 5 MB
+// UNSUPPORTED: LIBCXX-PICOLIBC-FIXME
+
#include <cassert>
#include <cstdio>
#include <cstdlib>
More information about the libcxx-commits
mailing list