[libcxx-commits] [PATCH] D112112: [libunwind] Link with -unwindlib=none
Harald van Dijk via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Oct 20 12:09:56 PDT 2021
hvdijk added a comment.
In D112112#3075970 <https://reviews.llvm.org/D112112#3075970>, @mstorsjo wrote:
> If you try my version of the patch, does it work if you omit setting `-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY`? It does for me.
It does not, it fails as it does unpatched, as it does on earlier versions as well:
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- The ASM compiler identification is Clang
-- Found assembler: /usr/bin/clang
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /usr/bin/clang
-- Check for working C compiler: /usr/bin/clang - broken
CMake Error at /usr/share/cmake-3.21/Modules/CMakeTestCCompiler.cmake:69 (message):
The C compiler
"/usr/bin/clang"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /h/libunwind-13.0.0-build-x64/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/make -f Makefile cmTC_591df/fast && /usr/bin/make -f CMakeFiles/cmTC_591df.dir/build.make CMakeFiles/cmTC_591df.dir/build
make[1]: Entering directory '/h/libunwind-13.0.0-build-x64/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_591df.dir/testCCompiler.c.o
/usr/bin/clang -m64 -O2 -MD -MT CMakeFiles/cmTC_591df.dir/testCCompiler.c.o -MF CMakeFiles/cmTC_591df.dir/testCCompiler.c.o.d -o CMakeFiles/cmTC_591df.dir/testCCompiler.c.o -c /h/libunwind-13.0.0-build-x64/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_591df
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_591df.dir/link.txt --verbose=1
/usr/bin/clang -m64 -O2 -Wl,-O1 -Wl,--as-needed -s CMakeFiles/cmTC_591df.dir/testCCompiler.c.o -o cmTC_591df
ld.lld: error: unable to find library -l:libunwind.so
ld.lld: error: unable to find library -l:libunwind.so
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [CMakeFiles/cmTC_591df.dir/build.make:100: cmTC_591df] Error 1
make[1]: Leaving directory '/h/libunwind-13.0.0-build-x64/CMakeFiles/CMakeTmp'
make: *** [Makefile:127: cmTC_591df/fast] Error 2
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:24 (project)
-- Configuring incomplete, errors occurred!
See also "/h/libunwind-13.0.0-build-x64/CMakeFiles/CMakeOutput.log".
See also "/h/libunwind-13.0.0-build-x64/CMakeFiles/CMakeError.log".
> I’ve experimented with setting `-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY` when building some of the runtimes, but in my experience, it broke other things (making tests falsely succeed as it doesn’t test linking, enabling things that won’t work in the end).
It's a special option needed in special circumstances, to be handled with care. The situation here is that clang was installed from the split tarball, configured to use compiler-rt and libunwind rather than libgcc and libgcc_s, and that clang is then used to install compiler-rt and libunwind. That means that while configuring compiler-rt and libunwind, the compiler is broken for most link steps by design, but it is good enough to build and install the core compiler-rt bits (`libclang_rt.builtins`, `clang_rt.crtbegin`, `clang_rt.crtend`) and libunwind. Once they are installed, everything else, including the rest of cmopiler-rt, should then be configued without `-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D112112/new/
https://reviews.llvm.org/D112112
More information about the libcxx-commits
mailing list