lkml.org 
[lkml]   [2020]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 4/7] objtool: Add support for return trampoline call
From
Date


On 4/2/20 4:40 PM, Peter Zijlstra wrote:
> On Thu, Apr 02, 2020 at 04:31:05PM +0100, Julien Thierry wrote:
>> My understanding is that once you find an intra-function call, either you
>> hit a return, ending the branch, so the return should undo the modification
>> the intra-function call did (whether is it a retpoline return or not).
>> Otherwise, the intra-function call branch will need to reach an end in some
>> way (e.g. hitting a CONTEXT_SWITCH instruction, calling a
>> dead_end_function).
>>
>> Am I missing something?
>
> The thing is basically doing:
>
> mov $n, cx
> 1: call 2f
> 2: dec cx
> jnz 1b
> add 8*n, sp
>
> So it does N calls to self, then subtracts N words from the stack.
>
> The reason being that the CPU has a return-stack-buffer for predicting
> returns, and call/ret being naturally paired, that works. The above
> is a software flush of the RSB.
>

Ah, lovely... Maybe that's where SAVE/RESTORE unwind hints could be nice
;) .

Otherwise, I don't really have a good suggestion for this...

--
Julien Thierry

\
 
 \ /
  Last update: 2020-04-03 10:12    [W:0.152 / U:0.468 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site