Re: [PATCH v2] On ppc64le we HAVE_RELIABLE_STACKTRACE
From: Josh Poimboeuf <hidden>
Date: 2018-03-08 16:26:34
Also in:
lkml
On Mon, Mar 05, 2018 at 05:49:28PM +0100, Torsten Duwe wrote:
The "Power Architecture 64-Bit ELF V2 ABI" says in section 2.3.2.3: [...] There are several rules that must be adhered to in order to ensure reliable and consistent call chain backtracing: * Before a function calls any other function, it shall establish its own stack frame, whose size shall be a multiple of 16 bytes. – In instances where a function’s prologue creates a stack frame, the back-chain word of the stack frame shall be updated atomically with the value of the stack pointer (r1) when a back chain is implemented. (This must be supported as default by all ELF V2 ABI-compliant environments.) [...] – The function shall save the link register that contains its return address in the LR save doubleword of its caller’s stack frame before calling another function. To me this sounds like the equivalent of HAVE_RELIABLE_STACKTRACE. This patch may be unneccessarily limited to ppc64le, but OTOH the only user of this flag so far is livepatching, which is only implemented on PPCs with 64-LE, a.k.a. ELF ABI v2. This change also implements save_stack_trace_tsk_reliable() for ppc64 that checks for the above conditions, where possible. Signed-off-by: Torsten Duwe <redacted>
This doesn't seem to address some of my previous concerns: - Bailing on interrupt/exception frames - Function graph tracing return address conversion - kretprobes return address conversion -- Josh