History log of /external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
605f03260ce43ec564cd0ec80ea21514e82eeeb3 29-Aug-2014 Dan Albert <danalbert@google.com> Make _Unwind_Backtrace() work on ARM.

Summary: Since the personality functions do the actual unwinding on ARM,
and will also stop unwinding when they encounter a handler, we invoke
_Unwind_VRS_Interpret() directly form _Unwind_Backtrace().

To simplify, the logic for decoding an EHT is moved out of
unwindOneFrame() and into its own function, decode_eht_entry(). Unlike
unwindOneFrame(), which could only handle ARM's compact personality
function entries (section 6.3) decode_eht_entry() can handle the generic
entries (section 6.2).

Reviewers: jroelofs

Reviewed By: jroelofs

Subscribers: piman, aemerson, cfe-commits

Differential Revision: http://reviews.llvm.org/D5112

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@216730 91177308-0d34-0410-b5e6-96231b3b80d8

(cherry picked from commit 14690900fcd84fbf82767890f4d7a5673654fe38)
Bug: 16874447
Change-Id: Ia52c7e2a0b7167863fea29cbf4b2d3c5d58053b2
/external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
4c708dc711f4bf00e6ff03831d316f7df239f61e 29-Aug-2014 Dan Albert <danalbert@google.com> Revert "Fix _Unwind_Backtrace for arm."

Reverting because there is a more complete fix available upstream (one
that can fully unwind in the presence of generic EHT entries).

This reverts commit 0edf7c5360403441c060618014887e9a723fe423.
Bug: 16874447
Change-Id: I5aa38183237865187156a8d8a050fd09a04ef109
/external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
e3f00968e6c7819bd616c413f4f22b87099236a7 27-Aug-2014 Christopher Ferris <cferris@google.com> Remove test code.

I accidentally included some test code that I if'd 0 out. Remove it.

Bug: 16874447
Change-Id: I2ffd8120e2bb088def001125c023173a2cce1e08
/external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
34ce4a6f5c6ffab0fb97be2b62f8e71b14df8fb4 27-Aug-2014 Christopher Ferris <cferris@google.com> Fix _Unwind_Backtrace for arm.

The unwind code does not properly update the IP when on arm.

There is still a bug in this unwinding code, it stops unwinding at the
first catch it finds.

Bug: 16874447
Change-Id: I40a4d8990246dccad18612c7291d00293266d9bc
/external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
e45805f0d3f8dafef1297cc7dc49e610713f023b 03-Jul-2014 Dan Albert <danalbert@google.com> Merge to upstream r212232.

Includes ARM EHABI unwinder.

Change-Id: I7e40c761abc0a4c67f11b8e9f85efefa6ba292ba
/external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
b78da9875b6e35187b5d584746c78faaf3230a3d 07-Oct-2013 Nick Kledzik <kledzik@apple.com> libcxxabi contains the runtime support for C++. But, as some folks have
realized, it is not complete. It relies on some _Unwind_* functions to be
supplied by the OS. That means it cannot be ported to platforms that don’t
already have an unwinder.

Years ago Apple wrote its own unwinder for MacOSX and iOS. To make libcxxabi
complete, Apple has decided the source code for its unwinder can be contributed
to the open source LLVM libcxxabi project, with a dual licensed under LLVM
and MIT license.

So, I’ve spent some time cleaning up the sources to make them conform with
LLVM style and to conditionalize the sources in a way that should make it
easier to port to other platforms. The sources are in a separate "Unwind"
directory under "src" in libcxxabi.

Background:
Most architectures now use "zero cost" exceptions for C++. The zero cost means
there are no extra instructions executed if no exceptions are thrown. But if
an exception is thrown, the runtime must consult side tables and figure out how
to restore registers and "unwind" from the current stack frame to the catch
clause. That ability to modify the stack frames and cause the thread to resume
in a catch clause with all registers restored properly is the main purpose
of the unwinder.

This unwinder has two levels of API. The high level APIs are the _Unwind_*
functions which the cxa_* exception functions in libcxxabi require. The low
level APIs are the unw_* functions which are an interface defined by the the
old HP libunwind project (which shares no code with this unwinder).


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@192136 91177308-0d34-0410-b5e6-96231b3b80d8
/external/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c