[Bug target/85025] libgcc/config/i386/shadow-stack-unwind.h is wrong
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&root=gcc&view=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
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&root=gcc&view=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
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&root=gcc&view=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
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&root=gcc&view=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
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&root=gcc&view=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
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&root=gcc&view=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
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&root=gcc&view=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