From fcb268b47a2f4a497fdb40ef24bb9e06488b7213 Mon Sep 17 00:00:00 2001 From: Alexandre Chartre Date: Fri, 21 Nov 2025 10:53:21 +0100 Subject: objtool: Trace instruction state changes during function validation During function validation, objtool maintains a per-instruction state, in particular to track call frame information. When tracing validation, print any instruction state changes. Signed-off-by: Alexandre Chartre Signed-off-by: Peter Zijlstra (Intel) Acked-by: Josh Poimboeuf Link: https://patch.msgid.link/20251121095340.464045-12-alexandre.chartre@oracle.com --- tools/objtool/include/objtool/trace.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tools/objtool/include') diff --git a/tools/objtool/include/objtool/trace.h b/tools/objtool/include/objtool/trace.h index 3f3c830ed114..33fe9c6acb4f 100644 --- a/tools/objtool/include/objtool/trace.h +++ b/tools/objtool/include/objtool/trace.h @@ -30,6 +30,12 @@ extern int trace_depth; } \ }) +#define TRACE_INSN_STATE(insn, sprev, snext) \ +({ \ + if (trace) \ + trace_insn_state(insn, sprev, snext); \ +}) + static inline void trace_enable(void) { trace = true; @@ -53,10 +59,14 @@ static inline void trace_depth_dec(void) trace_depth--; } +void trace_insn_state(struct instruction *insn, struct insn_state *sprev, + struct insn_state *snext); + #else /* DISAS */ #define TRACE(fmt, ...) ({}) #define TRACE_INSN(insn, fmt, ...) ({}) +#define TRACE_INSN_STATE(insn, sprev, snext) ({}) static inline void trace_enable(void) {} static inline void trace_disable(void) {} -- cgit