[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: libobjc2 on OpenBSD 6.8 build errors - C++ runtime not found
From: |
Riccardo Mottola |
Subject: |
Re: libobjc2 on OpenBSD 6.8 build errors - C++ runtime not found |
Date: |
Wed, 17 Feb 2021 17:50:04 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 SeaMonkey/2.53.6 |
Hi David,
sorry for the delay - I still want to get libobjc2 on OpenBSD and NetBSD
working!
Back to OpenBSD
David Chisnall wrote:
Hi,
This looks as if we’re still compiling in the code that calls the function that
figures out the the C++ ABI at run time dynamically. This is added here:
https://github.com/gnustep/libobjc2/blob/93fbf4d4bcf8b7bdb2dd2f11207a2e6eeba9c46c/CMakeLists.txt#L325
I believe it should be pulled out into a separate if block, because we disable
ObjC++ here:
https://github.com/gnustep/libobjc2/blob/93fbf4d4bcf8b7bdb2dd2f11207a2e6eeba9c46c/CMakeLists.txt#L318
Can you try moving it out and raise a PR if it fixes the build for you? We
shouldn’t break the no-C++ case, at least, though it should be working on
OpenBSD.
do you mean removing all the trampoline block, line 325 and subsequent?
- add_custom_command(OUTPUT eh_trampoline.s
- COMMAND ${CMAKE_CXX_COMPILER} ARGS
${EH_PERSONALITY_FLAGS} -fPIC -S "${CMAKE_SOURCE_DIR}/eh_trampoline.cc"
-o - -fexceptions -fno-inline | sed
"s/__gxx_personality_v0/test_eh_personality/g" >
"${CMAKE_BINARY_DIR}/eh_trampoline.s"
- MAIN_DEPENDENCY eh_trampoline.cc)
- list(APPEND libobjc_ASM_SRCS eh_trampoline.s)
That's a little bit too much:
[ 12%] Linking C executable BoxedForeignException_optimised
ld: error: undefined symbol: _Unwind_RaiseException
>>> referenced by BoxedForeignException.m
>>>
CMakeFiles/BoxedForeignException_optimised.dir/BoxedForeignException.m.o:(throw)
>>> referenced by BoxedForeignException.m
>>>
CMakeFiles/BoxedForeignException_optimised.dir/BoxedForeignException.m.o:(finally)
ld: error: undefined symbol: _Unwind_Resume
>>> referenced by BoxedForeignException.m
>>>
CMakeFiles/BoxedForeignException_optimised.dir/BoxedForeignException.m.o:(finally)
>>> referenced by BoxedForeignException.m
>>>
CMakeFiles/BoxedForeignException_optimised.dir/BoxedForeignException.m.o:(main)
ld: error: undefined symbol: _Unwind_Resume_or_Rethrow
>>> referenced by BoxedForeignException.m
>>>
CMakeFiles/BoxedForeignException_optimised.dir/BoxedForeignException.m.o:(_i_BoxedException__rethrow)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: ***
[Test/CMakeFiles/BoxedForeignException_optimised.dir/build.make:108:
Test/BoxedForeignException_optimised] Error 1
(which, if memory serves me, was one of the tests failing on 6.7, but at leaste
everything compiled)
I am suspicious that I do not find the CXX_RUNTIME_LIB set by cmake.
While runing cmake, I saw this:
-- Testing C++ interop
-- Testing /usr/lib/libsupc++.a as the C++ runtime library
-- Testing /usr/lib/libc++abi.so.3.0 as the C++ runtime library
-- Testing C++ standard library
-- Using /usr/bin/cc
-- No useable C++ runtime found
why doesn't it like my runtime library?
The file that it tries to compile is in the cmake directory, can you try
compiling it and see what happens? The line that tries to compile it is here:
https://github.com/gnustep/libobjc2/blob/93fbf4d4bcf8b7bdb2dd2f11207a2e6eeba9c46c/CMakeLists.txt#L231
I don’t know why this would fail with either libc++abi.so.3.0 or with your C++
standard library. Either should work and so I don’t know why this test would
fail.
I don't know, if I can give you the test results, is there a log,
equivalent to configure's config.log ?
Line 231 is for Android...
I think it is test "test_cxx_stdlib" perhaps?
I tried:
rohan$ ./test_cxx_stdlib
rohan$ echo $?
1
it runs but returns non-zero.
Riccardo