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.

Reply via email to