Lines Matching +full:g +full:- +full:link
19 functions with live state, and best-effort approaches which can be helpful for
38 * The return code is non-zero to indicate that the trace is not reliable.
47 function should attempt to detect such cases and return a non-zero error
52 3. Compile-time analysis
76 --------------------------------------
84 * Dynamically generated code (e.g. eBPF) or foreign code (e.g. EFI runtime
89 architectures verify that a stacktrace ends at an expected location, e.g.
95 * On a specific stack expected for a kernel entry point (e.g. if the
99 -------------------------------
101 Unwinding typically relies on code following specific conventions (e.g.
103 conventions and may require special handling in the unwinder, e.g.
109 * Trampoline assembly (e.g. ftrace, kprobes).
111 * Dynamically generated code (e.g. eBPF, optprobe trampolines).
113 * Foreign code (e.g. EFI runtime services).
125 unreliable to unwind from, e.g.
133 ----------------------------------------------
137 case part-way through a function. For example, during a function prologue or
151 exceptions (e.g. IRQ) but unreliable to unwind across other exceptions
152 (e.g. NMI).
160 ---------------------------------
163 to intercept when that function returns with a return trampoline, e.g.
183 .. code-block:: none
226 ---------------------------------
239 .. code-block:: none
244 The MOV saves the link register (X30) into X9 to preserve the return address
245 before the BL clobbers the link register and branches to the trampoline. At the
247 than the link register as would usually be the case.
252 4.6 Link register unreliability
253 -------------------------------
256 link register, and 'return' instructions consume the return address from the
257 link register without modifying the register. On these architectures software
259 the duration of a function call, the return address may be held in the link
262 Unwinders typically assume the link register is always live, but this
266 .. code-block:: none
269 STP X29, X30, [SP, -16]!
275 At entry to the function, the link register (x30) points to the caller, and the
278 frame pointer, and at this point the link register and the frame pointer both
283 The BL invokes 'other_function' with the link register pointing to this
285 When 'other_function' returns, the link register is left pointing at the BL,
289 Similarly, a function may deliberately clobber the LR, e.g.
291 .. code-block:: none
294 STP X29, X30, [SP, -16]!
306 link register value at a function call boundary. Architectures where this is
308 reliably identify when the LR or stack value should be used (e.g. using