C, -fexceptions, libgcc_s, and related matters on arm64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I work on a commercial mathematical modelling library, built from C code, and delivered on Linux as a .so. It has to be capable of having C++ exceptions thrown through it, as many of the applications that use it are C++.

On x86-64 CentOS 7, with GCC 4.8.3 driven by the LSB 5.0 lsbcc, I compile with -fexceptions, which causes some of my object files to need __gcc_personality_v0 and _Unwind_Resume, I link with -shared-libgcc and -lgcc_s. That satisfies the requirements for __gcc_personality_v0 and _Unwind_Resume, and allows C++ exceptions to be thrown from below me in the call stack, propagate through me, and be caught above me. That's fine.

I'm starting to build for arm64 on Ubuntu 20.04, with GCC 9.3 and no LSB tools involved. I use -fexceptions, but that does not generate any need for __gcc_personality_v0, _Unwind_Resume or any of the other symbols in libgcc_s.so. I'm a bit puzzled about this, and nervous about accepting it as normal. There are no Linux arm64 versions of the applications that use the library yet, so my ability to test C++ exception throwing through the library is limited to trivial programs: all of the test harnesses I have are C.

My x86-64 compile options are: /opt/lsb/bin/lsbcc -m64 -O2 -fno-strict-aliasing -fPIC -D _POSIX_SOURCE -D_POSIX_C_SOURCE=200809L -c -fexceptions -std=c99 -Wformat -Wformat-security

My arm64 compile options are similar: cc -march=armv8-a -ffp-contract=off -O -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -c -fexceptions -std=c99 -Wformat -Wformat-security -fstack-protector-strong -fno-strict-aliasing

Any suggestions?

Thanks in advance,

--
John Dallman
Siemens Digital Industries Software


-----------------
Siemens Industry Software Limited is a limited company registered in England and Wales.
Registered number: 3476850.
Registered office: Faraday House, Sir William Siemens Square, Frimley, Surrey, GU16 8QD.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux