[PATCH] Force unwind frame with user-defined personality.

Logan Chien tzuhsiang.chien at gmail.com
Sat Jan 17 00:07:59 PST 2015


Hi danalbert, rengolin, jroelofs,

If libcxxabi is compiled as a shared library, and the
executable references the user-defined personality routines
(e.g.  __gxx_personality_v0), then the pointer comparison in
Unwind-EHABI.cpp won't work.  This is due to the fact that
the PREL31 will point to the PLT stubs for the personality
routines (in the executable), while the __gxx_personality_v0
symbol reference is yet another (different) PLT stub (in the
libunwind.)

This will cause _Unwind_Backtrace() stops to unwind the frame
whenever it reaches __gxx_personality_v0().  This CL fix the
problem by calling the user-defined personality routines
with an undocumented API for force unwinding.

http://reviews.llvm.org/D7032

Files:
  src/Unwind/Unwind-EHABI.cpp
  src/Unwind/UnwindLevel1-gcc-ext.c

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7032.18339.patch
Type: text/x-patch
Size: 5736 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150117/62194ecd/attachment.bin>


More information about the cfe-commits mailing list