]> gcc.gnu.org Git - gcc.git/commit
x86: Add -mharden-sls=[none|all|return|indirect-branch]
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 27 Oct 2021 14:48:54 +0000 (07:48 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 17 Nov 2021 21:35:31 +0000 (13:35 -0800)
commit53a643f8568067d7700a9f2facc8ba39974973d3
tree964ff4b7dbbab01a9b2e2f006c5a46c4e550c508
parent8e410de43ce039bbe08f1e0195e3b6ec24f68cae
x86: Add -mharden-sls=[none|all|return|indirect-branch]

Add -mharden-sls= to mitigate against straight line speculation (SLS)
for function return and indirect branch by adding an INT3 instruction
after function return and indirect branch.

gcc/

PR target/102952
* config/i386/i386-opts.h (harden_sls): New enum.
* config/i386/i386.c (output_indirect_thunk): Mitigate against
SLS for function return.
(ix86_output_function_return): Likewise.
(ix86_output_jmp_thunk_or_indirect): Mitigate against indirect
branch.
(ix86_output_indirect_jmp): Likewise.
(ix86_output_call_insn): Likewise.
* config/i386/i386.opt: Add -mharden-sls=.
* doc/invoke.texi: Document -mharden-sls=.

gcc/testsuite/

PR target/102952
* gcc.target/i386/harden-sls-1.c: New test.
* gcc.target/i386/harden-sls-2.c: Likewise.
* gcc.target/i386/harden-sls-3.c: Likewise.
* gcc.target/i386/harden-sls-4.c: Likewise.
* gcc.target/i386/harden-sls-5.c: Likewise.
gcc/config/i386/i386-opts.h
gcc/config/i386/i386.c
gcc/config/i386/i386.opt
gcc/doc/invoke.texi
gcc/testsuite/gcc.target/i386/harden-sls-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/harden-sls-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/harden-sls-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/harden-sls-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/harden-sls-5.c [new file with mode: 0644]
This page took 0.084037 seconds and 6 git commands to generate.