summaryrefslogtreecommitdiff
path: root/tools/objtool/trace.c
diff options
context:
space:
mode:
authorAlexandre Chartre <alexandre.chartre@oracle.com>2025-11-21 10:53:22 +0100
committerPeter Zijlstra <peterz@infradead.org>2025-11-21 15:30:10 +0100
commit26a453fb5637907a538d6ea5ef23651142811e15 (patch)
tree73fdb0ff0a96ea939f4a339c2bbcb4a50ba75254 /tools/objtool/trace.c
parentfcb268b47a2f4a497fdb40ef24bb9e06488b7213 (diff)
objtool: Improve register reporting during function validation
When tracing function validation, instruction state changes can report changes involving registers. These registers are reported with the name "r<num>" (e.g. "r3"). Print the CPU specific register name instead of a generic name (e.g. print "rbx" instead of "r3" on x86). Signed-off-by: Alexandre Chartre <alexandre.chartre@oracle.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Josh Poimboeuf <jpoimboe@kernel.org> Link: https://patch.msgid.link/20251121095340.464045-13-alexandre.chartre@oracle.com
Diffstat (limited to 'tools/objtool/trace.c')
-rw-r--r--tools/objtool/trace.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/objtool/trace.c b/tools/objtool/trace.c
index 12bbad09d9c0..d70d47081e82 100644
--- a/tools/objtool/trace.c
+++ b/tools/objtool/trace.c
@@ -34,6 +34,7 @@ int trace_depth;
static const char *cfi_reg_name(unsigned int reg)
{
static char rname_buffer[CFI_REG_NAME_MAXLEN];
+ const char *rname;
switch (reg) {
case CFI_UNDEFINED:
@@ -46,6 +47,12 @@ static const char *cfi_reg_name(unsigned int reg)
return "(bp)";
}
+ if (reg < CFI_NUM_REGS) {
+ rname = arch_reg_name[reg];
+ if (rname)
+ return rname;
+ }
+
if (snprintf(rname_buffer, CFI_REG_NAME_MAXLEN, "r%d", reg) == -1)
return "<error>";