gnustep-dev
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]