[libcxx-commits] [libcxx] [runtimes] Simplify testing configurations on GCC by using -nostdlib++ (PR #67021)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Thu Sep 21 07:38:05 PDT 2023


https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/67021

Since GCC now supports -nostdlib++, we can remove some complexity in the test configurations and do the same as Clang. However, we can't fully remove the GCC test configuration for libc++ because we apparently need to explicitly link against libm for some tests to work.

>From 5f39701b35737a38a9ea3535b46459d924beb7c6 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Thu, 21 Sep 2023 10:36:18 -0400
Subject: [PATCH] [runtimes] Simplify testing configurations on GCC by using
 -nostdlib++

Since GCC now supports -nostdlib++, we can remove some complexity in
the test configurations and do the same as Clang. However, we can't
fully remove the GCC test configuration for libc++ because we apparently
need to explicitly link against libm for some tests to work.
---
 .../configs/llvm-libc++-shared-gcc.cfg.in     |  4 +--
 libcxxabi/CMakeLists.txt                      |  4 +--
 .../configs/llvm-libc++abi-shared-gcc.cfg.in  | 26 -------------------
 3 files changed, 3 insertions(+), 31 deletions(-)
 delete mode 100644 libcxxabi/test/configs/llvm-libc++abi-shared-gcc.cfg.in

diff --git a/libcxx/test/configs/llvm-libc++-shared-gcc.cfg.in b/libcxx/test/configs/llvm-libc++-shared-gcc.cfg.in
index df4aaa311dc49ca..a75e90b198896de 100644
--- a/libcxx/test/configs/llvm-libc++-shared-gcc.cfg.in
+++ b/libcxx/test/configs/llvm-libc++-shared-gcc.cfg.in
@@ -1,6 +1,6 @@
 # This testing configuration handles running the test suite against LLVM's libc++
 # using a shared library, with GCC. This is done differently from Clang because
-# GCC does not support the -nostdlib++ command-line flag.
+# we need to explicitly link against libm for some tests with GCC.
 
 lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
 
@@ -9,7 +9,7 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-L %{lib} -Wl,-rpath,%{lib} -nodefaultlibs -lc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -latomic'
+    '-nostdlib++ -L %{lib} -Wl,-rpath,%{lib} -lc++ -lm'
 ))
 config.substitutions.append(('%{exec}',
     '%{executor} --execdir %T -- '
diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt
index f380fe6b6b92ec8..6fd4f02c750f5bb 100644
--- a/libcxxabi/CMakeLists.txt
+++ b/libcxxabi/CMakeLists.txt
@@ -144,9 +144,7 @@ endif()
 option(LIBCXXABI_HERMETIC_STATIC_LIBRARY
   "Do not export any symbols from the static library." ${LIBCXXABI_HERMETIC_STATIC_LIBRARY_DEFAULT})
 
-if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-  set(LIBCXXABI_DEFAULT_TEST_CONFIG "llvm-libc++abi-shared-gcc.cfg.in")
-elseif(MINGW)
+if(MINGW)
   set(LIBCXXABI_DEFAULT_TEST_CONFIG "llvm-libc++abi-mingw.cfg.in")
 elseif(WIN32) # clang-cl
   if (LIBCXXABI_ENABLE_SHARED)
diff --git a/libcxxabi/test/configs/llvm-libc++abi-shared-gcc.cfg.in b/libcxxabi/test/configs/llvm-libc++abi-shared-gcc.cfg.in
deleted file mode 100644
index c61654becdbc757..000000000000000
--- a/libcxxabi/test/configs/llvm-libc++abi-shared-gcc.cfg.in
+++ /dev/null
@@ -1,26 +0,0 @@
-# This testing configuration handles running the test suite against LLVM's libc++abi
-# using a shared library, with GCC. This is done differently from Clang because
-# GCC does not support the -nostdlib++ command-line flag.
-
-lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
-
-config.substitutions.append(('%{flags}', ''))
-config.substitutions.append(('%{compile_flags}',
-    '-nostdinc++ -I %{include} -I %{cxx-include} -I %{cxx-target-include} %{maybe-include-libunwind} -I %{libcxx}/test/support -I %{libcxx}/src -D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS'
-))
-config.substitutions.append(('%{link_flags}',
-    '-L %{lib} -Wl,-rpath,%{lib} -nodefaultlibs -lc++ -lc++abi -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc -latomic'
-))
-config.substitutions.append(('%{exec}',
-    '%{executor} --execdir %T -- '
-))
-
-import os, site
-site.addsitedir(os.path.join('@LIBCXXABI_LIBCXX_PATH@', 'utils'))
-import libcxx.test.params, libcxx.test.config
-libcxx.test.config.configure(
-    libcxx.test.params.DEFAULT_PARAMETERS,
-    libcxx.test.features.DEFAULT_FEATURES,
-    config,
-    lit_config
-)



More information about the libcxx-commits mailing list