This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r262370 - in /trunk/gcc: ChangeLog config/i386/...
- From: hjl at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Wed, 04 Jul 2018 03:01:34 -0000
- Subject: r262370 - in /trunk/gcc: ChangeLog config/i386/...
Author: hjl
Date: Wed Jul 4 03:01:33 2018
New Revision: 262370
URL: https://gcc.gnu.org/viewcvs?rev=262370&root=gcc&view=rev
Log:
i386: Add indirect_return function attribute
On x86, swapcontext may return via indirect branch when shadow stack
is enabled. To support code instrumentation of control-flow transfers
with -fcf-protection, add indirect_return function attribute to inform
compiler that a function may return via indirect branch.
Note: Unlike setjmp, swapcontext only returns once. Mark it return
twice will unnecessarily disable compiler optimization as shown in
the testcase here.
gcc/
PR target/85620
* config/i386/i386.c (rest_of_insert_endbranch): Also generate
ENDBRANCH for non-tail call which may return via indirect branch.
* doc/extend.texi: Document indirect_return attribute.
gcc/testsuite/
PR target/85620
* gcc.target/i386/pr85620-1.c: New test.
* gcc.target/i386/pr85620-2.c: Likewise.
* gcc.target/i386/pr85620-3.c: Likewise.
* gcc.target/i386/pr85620-4.c: Likewise.
Added:
trunk/gcc/testsuite/gcc.target/i386/pr85620-1.c
trunk/gcc/testsuite/gcc.target/i386/pr85620-2.c
trunk/gcc/testsuite/gcc.target/i386/pr85620-3.c
trunk/gcc/testsuite/gcc.target/i386/pr85620-4.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/doc/extend.texi
trunk/gcc/testsuite/ChangeLog