On Thu, Apr 12, 2018 at 12:43 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, Apr 11, 2018 at 3:37 AM, H.J. Lu <hongjiu...@intel.com> wrote: >> When -fcf-protection -mcet is used, I got >> >> FAIL: g++.dg/eh/sighandle.C >> >> (gdb) bt >> #0 _Unwind_RaiseException (exc=exc@entry=0x416ed0) >> at /export/gnu/import/git/sources/gcc/libgcc/unwind.inc:140 >> #1 0x00007ffff7d9936b in __cxxabiv1::__cxa_throw (obj=<optimized out>, >> tinfo=0x403dd0 <typeinfo for int@@CXXABI_1.3>, dest=0x0) >> at >> /export/gnu/import/git/sources/gcc/libstdc++-v3/libsupc++/eh_throw.cc:90 >> #2 0x0000000000401255 in sighandler (signo=11, si=0x7fffffffd6f8, >> uc=0x7fffffffd5c0) >> at >> /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:9 >> #3 <signal handler called> <<<< Signal frame which isn't on shadow stack >> #4 dosegv () >> at >> /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:14 >> #5 0x00000000004012e3 in main () >> at >> /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/eh/sighandle.C:30 >> (gdb) p frames >> $6 = 5 >> (gdb) >> >> frame count should be 4, not 5. This patch skips signal frames when >> unwinding shadow stack. >> >> Tested on i686 and x86-64. OK for trunk? >> >> H.J. >> ---- >> PR libgcc/85334 >> * unwind-generic.h (_Unwind_Frames_Increment): New. >> * config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment): >> Likewise. >> * unwind.inc (_Unwind_RaiseException_Phase2): Increment frame >> count with _Unwind_Frames_Increment. >> (_Unwind_ForcedUnwind_Phase2): Likewise.
> > I need to increment frame count after uw_advance_context which will set > the signal frame bit. > > OK for trunk? PING: https://gcc.gnu.org/ml/gcc-patches/2018-04/msg00633.html -- H.J.