gcc/libgcc/config
H.J. Lu bf6465d046 i386: Properly pop restore token in signal frame
Linux CET kernel places a restore token on shadow stack for signal
handler to enhance security.  The restore token is 8 byte and aligned
to 8 bytes.  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 pop the
restore token from shadow stack.  For x86-64, we just need to treat
the signal frame as normal frame.  For i386, we need to search for
the restore token to check if the original shadow stack is 8 byte
aligned.  If the original shadow stack is 8 byte aligned, we just
need to pop 2 slots, one restore token, from shadow stack.  Otherwise,
we need to pop 3 slots, one restore token + 4 byte padding, from
shadow stack.

This patch also includes 2 tests, one has a restore token with 4 byte
padding and one without.

Tested on Linux/x86-64 CET machine with and without -m32.

libgcc/

	PR libgcc/85334
	* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
	New.

gcc/testsuite/

	PR libgcc/85334
	* g++.target/i386/pr85334-1.C: New test.
	* g++.target/i386/pr85334-2.C: Likewise.
2020-02-10 07:59:10 -08:00
..
aarch64 Update copyright years. 2020-01-01 12:51:42 +01:00
alpha Update copyright years. 2020-01-01 12:51:42 +01:00
arc [ARC] Make libgcc compatible with ARC's reduced register set config. 2020-01-27 14:51:03 +02:00
arm arm: Fix up arm installed unwind.h for use in pedantic modes [PR93615] 2020-02-07 11:01:14 +01:00
avr Typo. 2020-01-14 11:14:23 +01:00
bfin Update copyright years. 2020-01-01 12:51:42 +01:00
bpf GCC port for eBPF 2019-09-09 12:13:23 +02:00
c6x Update copyright years. 2020-01-01 12:51:42 +01:00
cr16 Update copyright years. 2020-01-01 12:51:42 +01:00
cris libgcc: cris: config/cris/arit.c (DS): Apply attribute __fallthrough__. 2020-01-18 16:38:56 +01:00
csky Update copyright years. 2020-01-01 12:51:42 +01:00
epiphany Update copyright years. 2020-01-01 12:51:42 +01:00
fr30 Update copyright years. 2020-01-01 12:51:42 +01:00
frv Update copyright years. 2020-01-01 12:51:42 +01:00
ft32 Update copyright years. 2020-01-01 12:51:42 +01:00
gcn [amdgcn] Remove dependency on stdint.h in libgcc 2020-01-10 23:19:41 +00:00
h8300 Update copyright years. 2020-01-01 12:51:42 +01:00
i386 i386: Properly pop restore token in signal frame 2020-02-10 07:59:10 -08:00
ia64 Update copyright years. 2020-01-01 12:51:42 +01:00
iq2000 Update copyright years. 2020-01-01 12:51:42 +01:00
libbid Update copyright years. 2020-01-01 12:51:42 +01:00
lm32 Update copyright years. 2020-01-01 12:51:42 +01:00
m32c Update copyright years. 2020-01-01 12:51:42 +01:00
m32r Update copyright years. 2020-01-01 12:51:42 +01:00
m68k Update copyright years. 2020-01-01 12:51:42 +01:00
mcore Update copyright years. 2020-01-01 12:51:42 +01:00
microblaze Update copyright years. 2020-01-01 12:51:42 +01:00
mips Emit .note.GNU-stack for hard-float linux targets. 2020-01-23 17:00:03 +01:00
mmix Update copyright years. 2020-01-01 12:51:42 +01:00
moxie Update copyright years. 2020-01-01 12:51:42 +01:00
msp430 Update copyright years. 2020-01-01 12:51:42 +01:00
nds32 Update copyright years. 2020-01-01 12:51:42 +01:00
nios2 nios2: Support for GOT-relative DW_EH_PE_datarel encoding. 2020-01-31 16:46:50 -08:00
nvptx Update copyright years. 2020-01-01 12:51:42 +01:00
or1k Update copyright years. 2020-01-01 12:51:42 +01:00
pa Update copyright years. 2020-01-01 12:51:42 +01:00
pdp11 t-pdp11 (LIB2ADD): Add divmod.c. 2018-11-01 14:36:52 -04:00
pru Update copyright years. 2020-01-01 12:51:42 +01:00
riscv Update copyright years. 2020-01-01 12:51:42 +01:00
rl78 Update copyright years. 2020-01-01 12:51:42 +01:00
rs6000 Update copyright years. 2020-01-01 12:51:42 +01:00
rx Update copyright years. 2020-01-01 12:51:42 +01:00
s390 Update copyright years. 2020-01-01 12:51:42 +01:00
score Update copyright years. 2020-01-01 12:51:42 +01:00
sh Update copyright years. 2020-01-01 12:51:42 +01:00
sol2 Update copyright years. 2020-01-01 12:51:42 +01:00
sparc Update copyright years. 2020-01-01 12:51:42 +01:00
stormy16 Update copyright years. 2020-01-01 12:51:42 +01:00
tilegx
tilepro Update copyright years. 2020-01-01 12:51:42 +01:00
v850 Update copyright years. 2020-01-01 12:51:42 +01:00
vax Update copyright years. 2020-01-01 12:51:42 +01:00
visium Update copyright years. 2020-01-01 12:51:42 +01:00
vms Update copyright years. 2020-01-01 12:51:42 +01:00
xtensa Update copyright years. 2020-01-01 12:51:42 +01:00
darwin10-unwind-find-enc-func.c Move Darwin10 unwinder fix to a crt shim. 2018-08-22 11:58:43 +00:00
darwin-64.c Update copyright years. 2020-01-01 12:51:42 +01:00
darwin-crt3.c Update copyright years. 2020-01-01 12:51:42 +01:00
darwin-crt-tm.c Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-lynx.h Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-rtems.h Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-vxworks-cond.c Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-vxworks-thread.c Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-vxworks-tls.c Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-vxworks.c Update copyright years. 2020-01-01 12:51:42 +01:00
gthr-vxworks.h Guard inclusion of vxAtomicLib.h from gthr-vxworks.h 2020-01-05 12:45:54 +00:00
hardfp.c Update copyright years. 2020-01-01 12:51:42 +01:00
libgcc-glibc.ver Update copyright years. 2020-01-01 12:51:42 +01:00
libgcc-libsystem.ver
no-sfp-machine.h
no-unwind.h
t-crtfm
t-crtstuff-pic
t-darwin [Darwin] Some TLC for older Darwin versions. 2019-07-03 18:36:28 +00:00
t-dfprules
t-eh-dw2-dip
t-fdpbit
t-fixedpoint-gnu-prefix
t-fpbit
t-freebsd-thread
t-gnu-prefix
t-gthr-noweak musl: Don't use gthr weak refs in libgcc PR91737 2019-11-18 12:08:18 +00:00
t-gthr-vxworks Improve the thread support for VxWorks 2019-11-14 15:58:31 +00:00
t-gthr-vxworksae Update the libgcc support for VxWorks AE/653 2019-11-14 16:00:55 +00:00
t-hardfp Update copyright years. 2020-01-01 12:51:42 +01:00
t-hardfp-sfdf Update copyright years. 2020-01-01 12:51:42 +01:00
t-libgcc-pic
t-libunwind
t-libunwind-elf Update copyright years. 2020-01-01 12:51:42 +01:00
t-linux
t-openbsd-thread
t-rtems
t-slibgcc Update copyright years. 2020-01-01 12:51:42 +01:00
t-slibgcc-darwin
t-slibgcc-elf-ver
t-slibgcc-fuchsia Update copyright years. 2020-01-01 12:51:42 +01:00
t-slibgcc-gld
t-slibgcc-gld-nover
t-slibgcc-hpux
t-slibgcc-libgcc Update copyright years. 2020-01-01 12:51:42 +01:00
t-slibgcc-nolc-override
t-slibgcc-sld Use v2 map syntax in libgcc-unwind.map if Solaris ld supports it 2018-09-18 07:04:15 +00:00
t-slibgcc-vms
t-softfp Update copyright years. 2020-01-01 12:51:42 +01:00
t-softfp-compat
t-softfp-excl
t-softfp-sfdf
t-softfp-sfdftf
t-softfp-tf
t-stack
t-tls
t-vxcrtstuff Introduce vxworks specific crtstuff support 2019-11-14 15:53:23 +00:00
t-vxworks Improve the thread support for VxWorks 2019-11-14 15:58:31 +00:00
t-vxworks7 Improve the thread support for VxWorks 2019-11-14 15:58:31 +00:00
t-vxworksae Update the libgcc support for VxWorks AE/653 2019-11-14 16:00:55 +00:00
unwind-dw2-fde-darwin.c Update copyright years. 2020-01-01 12:51:42 +01:00
vxcache.c Update copyright years. 2020-01-01 12:51:42 +01:00
vxcrtstuff.c Fix typo in macro name guarding conditional in vxcrtstuff.c 2019-12-30 21:11:22 +00:00