> -----Original Message----- > From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > ow...@gcc.gnu.org] On Behalf Of H.J. Lu > Sent: Wednesday, April 18, 2018 3:21 PM > To: GCC Patches <gcc-patches@gcc.gnu.org> > Cc: Uros Bizjak <ubiz...@gmail.com>; Jeff Law <l...@redhat.com> > Subject: PING: [PATCH] libgcc/CET: Skip signal frames when unwinding > shadow stack > > 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:
OK. Igor > https://gcc.gnu.org/ml/gcc-patches/2018-04/msg00633.html > > > -- > H.J.