On Wed, Feb 19, 2020 at 3:34 AM Mark Rutland <mark.rutland@xxxxxxx> wrote: > Fangrui Song has implemented `-fpatchable-function-entry` in LLVM (for > 10.x onwards), so we can support this when DYNAMIC_FTRACE_WITH_REGS is > selected. > > This can be: > > depends on DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER > > ... and we can update the commit message to something like: > > | With SCS the return address is taken from the shadow stack and the > | value in the frame record has no effect. The mcount based graph tracer > | hooks returns by modifying frame records on the (regular) stack, and > | thus is not compatible. The patchable-function-entry graph tracer > | used for DYNAMIC_FTRACE_WITH_REGS modifies the LR before it is saved > | to the shadow stack, and is compatible. > | > | Modifying the mcount based graph tracer to work with SCS would require > | a mechanism to determine the corresponding slot on the shadow stack > | (and to pass this through the ftrace infrastructure), and we expect > | that everyone will eventually move to the patchable-function-entry > | based graph tracer anyway, so for now let's disable SCS when the > | mcount-based graph tracer is enabled. > | > | SCS and patchable-function-entry are both supported from LLVM 10.x. > > Assuming you're happy with that: > > Reviewed-by: Mark Rutland <mark.rutland@xxxxxxx> Great, thanks for pointing that out! This looks good to me, I'll use this in v9. Sami