[Bug target/84066] Wrong shadow stack register size is saved for x32
itsimbal at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 2 10:07:00 GMT 2018
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
More information about the Gcc-bugs
mailing list