Re: [PATCH v4 21/27] x86/ftrace: Adapt function tracing for PIE support

From: Thomas Garnier
Date: Mon Jun 04 2018 - 17:06:20 EST


On Mon, Jun 4, 2018 at 1:16 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> On Tue, 29 May 2018 15:15:22 -0700
> Thomas Garnier <thgarnie@xxxxxxxxxx> wrote:
>
> > When using -fPIE/PIC with function tracing, the compiler generates a
> > call through the GOT (call *__fentry__@GOTPCREL). This instruction
> > takes 6 bytes instead of 5 on the usual relative call.
> >
> > If PIE is enabled, replace the 6th byte of the GOT call by a 1-byte nop
> > so ftrace can handle the previous 5-bytes as before.
> >
> > Position Independent Executable (PIE) support will allow to extend the
> > KASLR randomization range 0xffffffff80000000.
>
> I thought you were going to write a update to recordmcount.c to handle
> this at compile time?

I can correctly calculate the start of the call instruction with
recordmcount (no need for addr-1) but I still need to handle the
different size of the instructions. I don't think I can completely
replace the GOT call with a relative call. Maybe I am missing
something on the way recordmcount is used? Should it replace all
mcount locations with a nop slide? Why is it done at runtime too then?

>
> -- Steve
>
> >
> > Signed-off-by: Thomas Garnier <thgarnie@xxxxxxxxxx>
> > ---
> >



--
Thomas