aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2022-09-08 01:42:18 +1000
committerReza Arbab <arbab@linux.ibm.com>2022-09-20 14:09:22 -0500
commitd6d838699bffd1b229778e256365bc6feb9329c7 (patch)
treef4a9f980969974aaff6ed6356dcd1d0ec8426c51
parent096ebcfdcb863234c4a8c7d989800436355b03a9 (diff)
downloadskiboot-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.tcl26
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