Upstreaming ARM Unwinder and EHABI personality routines for libc++abi

Albert Wong (王重傑) ajwong at google.com
Fri May 30 12:11:50 PDT 2014


Hello cfe-commits (and Nick),

Last year, there were some small attempts to upstream our EHABI exception
handling implementation but they fizzled out. We've picked up work again
and would like to resume upstreaming.  Here is a link to the diff (newly
rebased on top of Tip-of-tree Libc++abi and libc++):


https://github.com/awong-dev/ndk/compare/upstream-llvm-ndkpatched...master#commit_comments_bucket

To see the relevant diffs, click on "Files changed" and search for
"libc++abi."

Unlike last time, this implementation now passes all the libc++abi and
almost all libc++ tests in debug mode for Android. There are still a few
pieces missing (Floating point register support should be complete next
week and force unwind is not implemented) however what's there should be
enough to provide exception handling support without libgcc.

Our current plan is to try and upstream in the following chunks:
 (1) Changes to AddressSpace.hpp needed to find the exidx section.
 (2) Implementations for _Unwind_VRS_Get/Set, unw_getcontext, and then
      stubs for the other _Unwind_VRS_* functions (basically get the
non-floating-point
      virtual register set working).
 (3) Implementations of __aeabi_unwind_cpp_pr{0,1,2} including the ARM
unwinder
      bytecode interpreter. (most EHABI exception support done here)
 (4) Changes to the DWARF personality routine  needed to support ARM.

Does that sound like a good plan? Would it be easier if we merged some of
these chunks?

Thanks,
Albert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140530/192412a6/attachment.html>


More information about the cfe-commits mailing list