libunwind: Fix unw_step() for ARM EHABI.
authorLogan Chien <tzuhsiang.chien@gmail.com>
Fri, 29 May 2015 15:33:38 +0000 (15:33 +0000)
committerLogan Chien <tzuhsiang.chien@gmail.com>
Fri, 29 May 2015 15:33:38 +0000 (15:33 +0000)
commit7fab97f364d2e2f0beb7fffa3e42885db72982d5
tree87fa9f0023b1e0d4925d5435378528e150849a36
parentf4b4430f8c9c66c32a49e4c72bf594580d198501
libunwind: Fix unw_step() for ARM EHABI.

This commit fixes the unw_step() for ARM EHABI.  However, this commit
also changes the implementation details for ARM EHABI.

The first change is that the personality function should call
__gnu_unwind_frame() for default (or de facto) frame unwinding based on
the ARM-defined unwind opcode.  The function __gnu_unwind_frame() will
in turn calls unw_step() which actually unwinds the frame.

The second change is that the implementation _Unwind_Backtrace() should
no longer calls unw_step() to unwind the frame; since according to ARM
EHABI, the personality function should unwind the frame for us.

Special thanks to Anton for helpful suggestion on the initial version of
this patch.

llvm-svn: 238560
libunwind/src/Unwind-EHABI.cpp
libunwind/src/UnwindCursor.hpp
libunwind/src/UnwindLevel1-gcc-ext.c
libunwind/test/libunwind_01.pass.cpp [new file with mode: 0644]
libunwind/test/libunwind_02.pass.cpp [new file with mode: 0644]