On 07/03/2018 10:53 AM, H.J. Lu wrote:
> On Tue, Jul 3, 2018 at 9:12 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>> On Tue, Jul 3, 2018 at 5:32 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>> On Fri, Jun 8, 2018 at 3:27 AM, H.J. Lu <hongjiu...@intel.com> wrote:
>>>> 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.
>>>>
>>>> OK for trunk?
>>>>
>>>> H.J.
>>>> ----
>>>> 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.
>>>>
>>> Here is the updated patch with a testcase to show the impact of
>>> returns_twice attribute.
>>>
>>> Jan, Uros, can you take a look?
>> LGTM for the implementation, can't say if attribute is really needed or not.
> This gives programmers more flexibly.
> 
>> +@item indirect_return
>> +@cindex @code{indirect_return} function attribute, x86
>> +
>> +The @code{indirect_return} attribute on a function is used to inform
>> +the compiler that the function may return via indiret branch.
>>
>> s/indiret/indirect/
> Fixed.  Here is the updated patch.
> 
> Thanks.
> 
> -- H.J.
> 
> 
> 0001-i386-Add-indirect_return-function-attribute.patch
> 
> 
> From bb98f6a31801659ae3c6689d6d31af33a3c28bb2 Mon Sep 17 00:00:00 2001
> From: "H.J. Lu" <hjl.to...@gmail.com>
> Date: Thu, 7 Jun 2018 20:05:15 -0700
> Subject: [PATCH] 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.
OK
jeff

Reply via email to