[cfe-dev] ARM Linux libc++ / libunwind — Exceptions not being caught

Louis Dionne via cfe-dev cfe-dev at lists.llvm.org
Thu Aug 30 08:56:39 PDT 2018


Honestly, I’m in the same situation as you are. I just started working on libc++ and I’m trying to figure out what configurations are supported — it’s not obvious to me at all. Marshall, Eric or other long date contributors may know better — I’m not the best resource. For now I’m focused on getting LLVM 7 out the door, but in the future I would like to document a matrix of supported configurations:

Linux:
libc++ | ABI library      | Unwind library   
--------------------------------------------
LLVM 6 | libc++abi LLVM 6 | libunwind LLVM 6
LLVM 6 | libsupc++ vX.Y   | libunwind LLVM 6
LLVM 7 | libc++abi LLVM 7 | libunwind LLVM 7
LLVM 7 | libsupc++ vX.Y   | libunwind LLVM 7
trunk  | trunk            | trunk

etc...

And we should have something similar for Darwin, where we also need to be compatible with older system libraries:

libc++ | ABI library         | Unwind library   
-----------------------------------------------
LLVM 6 | libc++abi LLVM 6    | libunwind LLVM 6
LLVM 6 | libc++abi macOS X.Y | libunwind macOS X.Y
LLVM 7 | libc++abi LLVM 7    | libunwind LLVM 7
LLVM 7 | libc++abi macOS X.Y | libunwind macOS X.Y
trunk  | trunk               | trunk

This would be a large matrix, but that's okay. And then we can have one tester per supported configuration and we can stop having surprises during releases. Also, if a user comes with an unsupported configuration, the answer would be easy.

Like I said, there might be a good answer to your question and I just don’t know it — but in all cases it does not seem to be documented officially.

Louis

> On Aug 30, 2018, at 11:43, Andrew Brownsword <andrew.e.brownsword at gmail.com> wrote:
> 
> It would be most helpful if the was a known good combination of libraries and settings that would net a working toolchain for ARM7hf Ubuntu 16.04, with CLang 7 and libc++.  I’ve been trying libc++abi and libunwind mostly (and compiler-rt in the last day or two) as I had build problems with the various gcc-based paths.  What is the recommended path to follow though?  A lot of options are provided but clearly it’s a minefield of broken paths.
> 
>> On Aug 30, 2018, at 7:04 AM, Louis Dionne <ldionne at apple.com> wrote:
>> 
>> Are you building your test program with -fno-rtti? I’ve seen a problem where if libc++ is built with RTTI and exceptions enabled, and a program is built with exceptions enabled BUT -fno-rtti, exceptions thrown from the program will not be caught.
>> 
>> Louis
>> 
>>> On Aug 25, 2018, at 15:20, Andrew Brownsword via cfe-dev <cfe-dev at lists.llvm.org> wrote:
>>> 
>>> I have built the llvm/clang 7.0.0 rc2, including libc++/libc++abi/libunwind for my Ubuntu 16.04 Linux 32-bit ARM7 hf target.  A trivial c++17 test program with just this try/catch block:
>>> 
>>> try { auto result = stoul(“foo”); } catch (...) { std::cerr << “caught!” << std::endl; }
>>> 
>>> fails to print “caught!”  Instead it just aborts.  If no exceptions are thrown,  programs built with this toolchain behave as expected.
>>> 
>>> I have tried numerous variations of the toolchain, compile and link steps (including alternatives to the cxxabi), however they all run into various errors or ultimately give the same runtime abort.
>>> 
>>> Any suggestions for how to get a functioning Linux armhf clang/libc++ 7.0.0 toolchain?
>>> 
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180830/95ce8a6e/attachment.html>


More information about the cfe-dev mailing list