[libcxx-commits] [PATCH] D101434: [libcxx] [test] Include more libraries that normally are linked automatically
Martin Storsjö via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Apr 28 02:25:43 PDT 2021
mstorsjo created this revision.
Herald added a subscriber: arichardson.
mstorsjo requested review of this revision.
Herald added a project: libc++.
Herald added a reviewer: libc++.
As the libcxx tests link with -nostdlib, libraries that normally
are added by default by the compiler driver has to be added
manually.
The "oldnames" library is automatically added when driving linking
with clang-cl. When linking with the plain clang driver, as the
libcxx tests do, the clang driver does the same but only since Clang
12.0). But when linking with -nostdlib, like the libcxx tests do,
the driver defaults aren't added at all, and we need to specify the
defaults manually.
This allows removing a TODO from the Windows CI setup; it turns out
that upgrading to Clang 12.0 didn't help here as expected, sorry about
that mixup.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D101434
Files:
libcxx/utils/ci/run-buildbot
libcxx/utils/libcxx/test/config.py
Index: libcxx/utils/libcxx/test/config.py
===================================================================
--- libcxx/utils/libcxx/test/config.py
+++ libcxx/utils/libcxx/test/config.py
@@ -459,6 +459,9 @@
# libcxx CMakeLists.txt if building targeting msvc.
self.cxx.link_flags += ['-l%s%s' % (lib, debug_suffix) for lib in
['vcruntime', 'ucrt', 'msvcrt', 'msvcprt']]
+ # The compiler normally links in oldnames.lib too, but we've
+ # specified -nostdlib above, so we need to specify it manually.
+ self.cxx.link_flags += ['-loldnames']
elif cxx_abi == 'none' or cxx_abi == 'default':
if self.target_info.is_windows():
debug_suffix = 'd' if self.debug_build else ''
Index: libcxx/utils/ci/run-buildbot
===================================================================
--- libcxx/utils/ci/run-buildbot
+++ libcxx/utils/ci/run-buildbot
@@ -485,12 +485,6 @@
# when building tests) to allow enabling filesystem for running tests,
# even if it uses a non-permanent ABI.
- # TODO: The CI runner currently uses Clang 11, which doesn't implicitly
- # link in oldnames.lib (which is needed for some tests) when compiling
- # with the plain "clang" driver, as the tests do (as opposed to using
- # the "clang-cl" driver for compiling). When the CI runner runs
- # Clang 12, the "-loldnames" option can be dropped.
-
# TODO: Currently, building with the experimental library breaks running
# tests (the test linking look for the c++experimental library with the
# wrong name, and the statically linked c++experimental can't be linked
@@ -509,8 +503,7 @@
-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO \
-DLIBCXX_ENABLE_FILESYSTEM=YES \
-DCMAKE_CXX_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
- -DLIBCXX_TEST_COMPILER_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
- -DLIBCXX_TEST_LINKER_FLAGS="-loldnames"
+ -DLIBCXX_TEST_COMPILER_FLAGS="-D_LIBCPP_HAS_NO_INT128"
echo "+++ Running the libc++ tests"
${NINJA} -vC "${BUILD_DIR}" check-cxx
;;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101434.341103.patch
Type: text/x-patch
Size: 2151 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20210428/91cef9ad/attachment.bin>
More information about the libcxx-commits
mailing list