[Bug target/85025] libgcc/config/i386/shadow-stack-unwind.h is wrong

2018-03-22 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85025

--- Comment #1 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Thu Mar 22 11:22:31 2018
New Revision: 258763

URL: https://gcc.gnu.org/viewcvs?rev=258763=gcc=rev
Log:
Fix PR85025: libgcc/config/i386/shadow-stack-unwind.h is wrong. 

PR target/85025
* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra):
Fix a typo, tmp => 255.

Modified:
trunk/libgcc/ChangeLog
trunk/libgcc/config/i386/shadow-stack-unwind.h

[Bug target/84148] CET shouldn't be enabled in 32-bit run-time libraries by default

2018-02-19 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84148

--- Comment #16 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Mon Feb 19 16:25:49 2018
New Revision: 257809

URL: https://gcc.gnu.org/viewcvs?rev=257809=gcc=rev
Log:
CET shouldn't be enabled in 32-bit run-time libraries by defualt

ENDBR32 and RDSSPD are multi-byte NOPs on x86-64 processors and
newer x86 processors, starting Pentium Pro.  They are UD on older
32-bit processors. Detect this at configure time and adjust the
default value for enable_cet. GCC will enable CET in 32-bit run-time
libraries in any case if --enable-cet is used to configure GCC.

PR target/84148
* config/cet.m4: Check if target support multi-byte NOPS (SSE).
* libatomic/configure: Regenerate.
* libbacktrace/configure: Likewise.
* libgcc/configure: Likewise.
* libgfortran/configure: Likewise.
* libgomp/configure: Likewise.
* libitm/configure: Likewise.
* libmpx/configure: Likewise.
* libobjc/configure: Likewise.
* libquadmath/configure: Likewise.
* libsanitizer/configure: Likewise.
* libssp/configure: Likewise.
* libstdc++-v3/configure: Likewise.
* libvtv/configure: Likewise.

Modified:
trunk/config/ChangeLog
trunk/config/cet.m4
trunk/libatomic/ChangeLog
trunk/libatomic/configure
trunk/libbacktrace/ChangeLog
trunk/libbacktrace/configure
trunk/libgcc/ChangeLog
trunk/libgcc/configure
trunk/libgfortran/ChangeLog
trunk/libgfortran/configure
trunk/libgomp/ChangeLog
trunk/libgomp/configure
trunk/libitm/ChangeLog
trunk/libitm/configure
trunk/libmpx/ChangeLog
trunk/libmpx/configure
trunk/libobjc/ChangeLog
trunk/libobjc/configure
trunk/libquadmath/ChangeLog
trunk/libquadmath/configure
trunk/libsanitizer/ChangeLog
trunk/libsanitizer/configure
trunk/libssp/ChangeLog
trunk/libssp/configure
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/configure
trunk/libvtv/ChangeLog
trunk/libvtv/configure

[Bug target/84239] Reimplement rdssp[d|q] and incssp[d|q] CET intrinsics

2018-02-16 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84239

--- Comment #3 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Fri Feb 16 10:19:14 2018
New Revision: 257730

URL: https://gcc.gnu.org/viewcvs?rev=257730=gcc=rev
Log:
Additional fix for PR 84239.

PR target/84239
* libgcc/config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra):
Include cetintrin.h not x86intrin.h.

Modified:
trunk/libgcc/ChangeLog
trunk/libgcc/config/i386/shadow-stack-unwind.h

[Bug target/84239] Reimplement rdssp[d|q] and incssp[d|q] CET intrinsics

2018-02-14 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84239

--- Comment #1 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Wed Feb 14 15:06:21 2018
New Revision: 257660

URL: https://gcc.gnu.org/viewcvs?rev=257660=gcc=rev
Log:
Reimplement CET intrinsics for rdssp/incssp insn.

Introduce a couple of new CET intrinsics for reading and updating a
shadow stack pointer (_get_ssp and _inc_ssp). They replace the existing
_rdssp[d|q] and _incssp[d|q] instrinsics.

PR target/84239
* gcc/config/i386/cetintrin.h: Remove _rdssp[d|q] and
add _get_ssp intrinsics. Remove argument from
__builtin_ia32_rdssp[d|q].
* gcc/config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
* gcc/config/i386/i386-builtin.def: Remove argument from
__builtin_ia32_rdssp[d|q].
* gcc/config/i386/i386.c: Use UINT_FTYPE_VOID. Use
ix86_expand_special_args_builtin for _rdssp[d|q].
* gcc/config/i386/i386.md: Remove argument from rdssp[si|di] insn.
Clear register before usage.
* doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
Add documentation for new _get_ssp and _inc_ssp intrinsics.
* testsuite/gcc.target/i386/cet-intrin-3.c: Use new _get_ssp and
_inc_ssp intrinsics.
* testsuite/gcc.target/i386/cet-intrin-4.c: Likewise.
* testsuite/gcc.target/i386/cet-rdssp-1.c: Remove argument from
__builtin_ia32_rdssp[d|q].
* libgcc/config/i386/shadow-stack-unwind.hi (_Unwind_Frames_Extra):
Use new _get_ssp and _inc_ssp intrinsics.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/cetintrin.h
trunk/gcc/config/i386/i386-builtin-types.def
trunk/gcc/config/i386/i386-builtin.def
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.md
trunk/gcc/doc/extend.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/i386/cet-intrin-3.c
trunk/gcc/testsuite/gcc.target/i386/cet-intrin-4.c
trunk/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
trunk/libgcc/ChangeLog
trunk/libgcc/config/i386/shadow-stack-unwind.h

[Bug target/84145] Wrong CET options processing

2018-02-06 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84145

--- Comment #3 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Tue Feb  6 15:25:31 2018
New Revision: 257414

URL: https://gcc.gnu.org/viewcvs?rev=257414=gcc=rev
Log:
Fix checking -mibt and -mshstk options for control flow protection

PR target/84145
* config/i386/i386.c: Reimplement the check of possible options
-mibt/-mshstk conbination. Change error messages.
* doc/invoke.texi: Fix a typo: remove extra '='.
* c-c++-common/fcf-protection-1.c: Change a compared message.
* c-c++-common/fcf-protection-2.c: Likewise.
* c-c++-common/fcf-protection-3.c: Likewise.
* c-c++-common/fcf-protection-5.c: Likewise.
* c-c++-common/fcf-protection-6.c: New test.
* c-c++-common/fcf-protection-7.c: Likewise.

Added:
trunk/gcc/testsuite/c-c++-common/fcf-protection-6.c
trunk/gcc/testsuite/c-c++-common/fcf-protection-7.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/c-c++-common/fcf-protection-1.c
trunk/gcc/testsuite/c-c++-common/fcf-protection-2.c
trunk/gcc/testsuite/c-c++-common/fcf-protection-3.c
trunk/gcc/testsuite/c-c++-common/fcf-protection-5.c

[Bug target/84066] Wrong shadow stack register size is saved for x32

2018-02-02 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84066

--- Comment #8 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Fri Feb  2 10:06:39 2018
New Revision: 257326

URL: https://gcc.gnu.org/viewcvs?rev=257326=gcc=rev
Log:
PR84066 Wrong shadow stack register size is saved for x32

x32 is a 64-bit process with 32-bit software pointer and kernel may
place x32 shadow stack above 4GB.  We need to save and restore 64-bit
shadow stack register for x32. builtin jmp buf size is 5 pointers.  We
have space to save 64-bit shadow stack pointers: 32-bit SP, 32-bit FP,
32-bit IP, 64-bit SSP for x32.

PR target/84066
* gcc/config/i386/i386.md: Replace Pmode with word_mode in
builtin_setjmp_setup and builtin_longjmp to support x32.
* gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c: New test.
* gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c: Likewise.


Added:
trunk/gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c
trunk/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.md
trunk/gcc/testsuite/ChangeLog

[Bug bootstrap/83015] [8 regression] bootstrap comparison failure on ia64

2017-11-20 Thread itsimbal at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83015

--- Comment #7 from itsimbal at gcc dot gnu.org ---
Author: itsimbal
Date: Mon Nov 20 12:30:25 2017
New Revision: 254951

URL: https://gcc.gnu.org/viewcvs?rev=254951=gcc=rev
Log:
PR bootstrap/83015
* config/cr16/unwind-cr16.c (uw_install_context): Add FRAMES
parameter.
* config/xtensa/unwind-dw2-xtensa.c: Likewise
* config/ia64/unwind-ia64.c: Add frames parameter.
* unwind-sjlj.c: Likewise.


Modified:
trunk/libgcc/ChangeLog
trunk/libgcc/config/cr16/unwind-cr16.c
trunk/libgcc/config/ia64/unwind-ia64.c
trunk/libgcc/config/xtensa/unwind-dw2-xtensa.c
trunk/libgcc/unwind-sjlj.c