[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