On Fri, Jul 20, 2018 at 11:15 AM, H.J. Lu <hongjiu...@intel.com> wrote: > Tested on CET SDV using the CET kernel on cet branch at: > > https://github.com/yyu168/linux_cet/tree/cet > > OK for trunk and GCC 8 branch? > > Thanks. > > > H.J. > --- > The CET kernel has been changed to place a restore token on shadow stack > for signal handler to enhance security. It is usually transparent to user > programs since kernel will pop the restore token when signal handler > returns. But when an exception is thrown from a signal handler, now > we need to remove _Unwind_Frames_Increment to pop the the restore token > from shadow stack. Otherwise, we get > > FAIL: g++.dg/torture/pr85334.C -O0 execution test > FAIL: g++.dg/torture/pr85334.C -O1 execution test > FAIL: g++.dg/torture/pr85334.C -O2 execution test > FAIL: g++.dg/torture/pr85334.C -O3 -g execution test > FAIL: g++.dg/torture/pr85334.C -Os execution test > FAIL: g++.dg/torture/pr85334.C -O2 -flto -fno-use-linker-plugin > -flto-partition=none execution test > > PR libgcc/85334 > * config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment): > Removed. > --- > libgcc/config/i386/shadow-stack-unwind.h | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/libgcc/config/i386/shadow-stack-unwind.h > b/libgcc/config/i386/shadow-stack-unwind.h > index a32f3e74b52..40f48df2aec 100644 > --- a/libgcc/config/i386/shadow-stack-unwind.h > +++ b/libgcc/config/i386/shadow-stack-unwind.h > @@ -49,8 +49,3 @@ see the files COPYING3 and COPYING.RUNTIME respectively. > If not, see > } \ > } \ > while (0) > - > -/* Increment frame count. Skip signal frames. */ > -#undef _Unwind_Frames_Increment > -#define _Unwind_Frames_Increment(context, frames) \ > - if (!_Unwind_IsSignalFrame (context)) frames++ > -- > 2.17.1 >
I will check it into trunk tomorrow if there is no objection. -- H.J.