diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2022-09-08 01:42:18 +1000 |
---|---|---|
committer | Reza Arbab <arbab@linux.ibm.com> | 2022-09-20 14:09:22 -0500 |
commit | d6d838699bffd1b229778e256365bc6feb9329c7 (patch) | |
tree | f4a9f980969974aaff6ed6356dcd1d0ec8426c51 | |
parent | 096ebcfdcb863234c4a8c7d989800436355b03a9 (diff) | |
download | skiboot-d6d838699bffd1b229778e256365bc6feb9329c7.zip skiboot-d6d838699bffd1b229778e256365bc6feb9329c7.tar.gz skiboot-d6d838699bffd1b229778e256365bc6feb9329c7.tar.bz2 |
external/mambo: add a poor man's ftrace command
Add an ftrace command that steps instructions and prints the symbol
whenever it changes. This can be helpful for low level debugging.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
-rw-r--r-- | external/mambo/mambo_utils.tcl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/external/mambo/mambo_utils.tcl b/external/mambo/mambo_utils.tcl index f8f64eb..74417ea 100644 --- a/external/mambo/mambo_utils.tcl +++ b/external/mambo/mambo_utils.tcl @@ -169,6 +169,32 @@ proc s { {nr 1} } { } } +proc ftrace { {nr 1} } { + upvar #0 target_t t + upvar #0 target_c c + upvar #0 target_p p + + set pc [mysim cpu $p:$c:$t display spr pc] + set sym [lindex [split [addr2func $pc] {+}] 0] + set prev_pc $pc + + puts [ipc] + puts "$sym" + + for { set i 0 } { $i < $nr } { incr i 1 } { + set pc [mysim cpu $p:$c:$t display spr pc] + set sym2 [lindex [split [addr2func $pc] {+}] 0] + + if { $sym2 != $sym } { + puts "$sym2 \t\t(from [addr2func $prev_pc])" + set sym $sym2 + } + set prev_pc $pc + + mysim step 1 + } +} + proc S { {nr 1} } { upvar #0 target_t t upvar #0 target_c c |