[libcxx-commits] [PATCH] D132873: [libcxxabi] Fix forced_unwind3.pass.cpp compilation error

Martin Storsjö via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Mon Aug 29 22:00:04 PDT 2022


mstorsjo added a comment.

In D132873#3756809 <https://reviews.llvm.org/D132873#3756809>, @aaronpuchert wrote:

> In D132873#3756364 <https://reviews.llvm.org/D132873#3756364>, @mstorsjo wrote:
>
>> If you care to share, it'd be interesting to know under what circumstances you end up with no struct definition.
>
> It came up when packaging the upcoming LLVM 15 for an `armv7hl-suse-linux-gnueabihf` target. In `clang/lib/Headers/unwind.h` we have this:
>
>   #if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || \
>                             defined(__ARM_DWARF_EH__) || defined(__SEH__))
>   struct _Unwind_Control_Block;
>   typedef struct _Unwind_Control_Block _Unwind_Exception; /* Alias */
>   #else
>   struct _Unwind_Exception;
>   typedef struct _Unwind_Exception _Unwind_Exception;
>   #endif
>
> Of course we have `__arm__`, and apparently neither `__USING_SJLJ_EXCEPTIONS__`, `__ARM_DWARF_EH__`, nor `__SEH__`. The latter is unsurprising, for the other two I can only hope they're right.

Right, ARM on ELF platforms (at least Linux) usually use the ARM EHABI format, which usually has got a separate, exceptional codepath throughout most unwinding routines. Thanks!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D132873/new/

https://reviews.llvm.org/D132873



More information about the libcxx-commits mailing list