[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Crash occurs when catching std::exception in Objective-C++ code comp
From: |
Lobron, David |
Subject: |
Re: Crash occurs when catching std::exception in Objective-C++ code compiled with clang on Linux and using libobjc2 |
Date: |
Thu, 30 Nov 2017 20:23:19 +0000 |
>>> The -fgnu-runtime is for using the runtime that comes with the GNU compiler
>>> (gcc).
>>
>> More specifically, it is for telling GCC to use the runtime that comes with
>> GCC. If you wish to use the GCC runtime with clang, the correct flag is
>> -fobjc-runtime=gcc (optionally with a version, though clang currently
>> ignores the version because it doesn’t know of any changes to the GCC
>> runtime ABI since clang shipped - I don’t think there are any).
>
> That's interesting ...I don't think gnustep-make really knows about/supports
> the option of using clang with the gcc runtime.
> If you use gnu-gnu-gnu as the library combo, it's expecting gcc and the gnu
> runtime
> If you use ng-gnu-gnu as the library combo, it's expecting clang and the
> gnustep/objc2 runtime
> If someone is really determined they can override compiler/flags, but I don't
> trust my ability to get wierd combination right, so I never try that.
> Perhaps gnustep-make should try to detect those sorts of override and protect
> us from our own mistakes, but there's a limit to how far that can be taken
> and we should probably just trust that if people override cimpiler and flags
> specifications they know what they are doing.
Many thanks for your help, guys.
I updated gnustep-make to set the library combo to ng-gnu-gnu. This is picked
up by the configure script in gnustep-base:
checking the Objective-C runtime... Next Gen
However, the next few lines in the configure output of gnustep-base are
suspicious:
checking for custom shared objc library... NONE
checking objc/runtime.h usability... yes
checking objc/runtime.h presence... no
configure: WARNING: objc/runtime.h: accepted by the compiler, rejected by the
preprocessor!
configure: WARNING: objc/runtime.h: proceeding with the compiler's result
The configure tool fails a few lines later, stating that it can't use clang to
compile an ObjC program:
checking whether objc really works... no
I don't seem to be able to use your Objective-C compiler to produce
working binaries! Please check your Objective-C compiler installation.
My clang compiler has not changed, so I know the compiler is in fact able to
compile ObjC.
Are there additional flags needed for clang to work with gnustep-base when
gnustep-make is using ng-gnu-gnu as the library combo? My current configure
flags for gnustep-base are:
./configure
CC=/home/dlobron/build/clangport/akamai/llvm/llvm-5.0.0.install/bin/clang
CXX=/home/dlobron/build/clangport/akamai/llvm/llvm-5.0.0.install/bin/clang
CFLAGS="-m64 -march=opteron -mno-3dnow -ggdb -O2 -Wall -fPIC -fPIC -I
/home/dlobron/build/clangport/akamai/common/include" CXXFLAGS="-m64
-march=opteron -mno-3dnow -ggdb -O2 -fPIC -fPIC -I
/home/dlobron/build/clangport/akamai/common/include" LDFLAGS="-m64 -rdynamic
-L/home/dlobron/build/clangport/akamai/common/lib"
LD_LIBRARY_PATH=/home/dlobron/build/clangport/akamai/common/lib OBJC2RUNTIME=1
HAVE_BLOCKS=1 BASE_NATIVE_OBJC_EXCEPTIONS=1 LIBRARY_COMBO=ng-gnu-gnu \
--target=x86_64-unknown-linux-gnu \
--with-config-file=/usr/local/akamai/GNUstep/GNUstep.conf \
--with-ffi-include=/home/dlobron/build/clangport/akamai/common/include \
--with-ffi-library=/home/dlobron/build/clangport/akamai/common/lib \
--enable-icu \
--disable-tls \
--disable-xml \
--disable-zeroconf \
--with-gmp-include
--David
- Re: Crash occurs when catching std::exception in Objective-C++ code compiled with clang on Linux and using libobjc2,
Lobron, David <=