diff options
author | Luis Machado <luis.machado@linaro.org> | 2020-01-09 16:19:31 -0300 |
---|---|---|
committer | Luis Machado <luis.machado@linaro.org> | 2020-01-21 10:25:54 -0300 |
commit | 1ab139e5bedfec2bb277287574cc0322c21a252b (patch) | |
tree | b7f5b90755177bd608ca465eeff42863defad7ac | |
parent | 0c27188999bfc5bf03536bf44593c4ed8df296c3 (diff) | |
download | binutils-gdb-1ab139e5bedfec2bb277287574cc0322c21a252b.tar.gz |
Add more debugging output to aarch64_displaced_step_fixup
While debugging the step-over-syscall problem, i wanted to see a bit more
debugging output to try to determine the root cause.
This patch does this.
gdb/ChangeLog:
2020-01-21 Luis Machado <luis.machado@linaro.org>
* aarch64-tdep.c (aarch64_displaced_step_fixup): Add more debugging
output.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/aarch64-tdep.c | 27 |
2 files changed, 30 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 146767f0697..ec9bac0dad3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2020-01-21 Luis Machado <luis.machado@linaro.org> + * aarch64-tdep.c (aarch64_displaced_step_fixup): Add more debugging + output. + +2020-01-21 Luis Machado <luis.machado@linaro.org> + * aarch64-tdep.c (struct aarch64_displaced_step_closure ) <pc_adjust>: Adjust the documentation. (aarch64_displaced_step_fixup): Check if PC really moved before diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index fb7b8621ba2..03d650d9dc5 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -3037,8 +3037,16 @@ aarch64_displaced_step_fixup (struct gdbarch *gdbarch, regcache_cooked_read_unsigned (regs, AARCH64_PC_REGNUM, &pc); + if (debug_displaced) + debug_printf ("Displaced: PC after stepping: %s (was %s).\n", + paddress (gdbarch, pc), paddress (gdbarch, to)); + if (dsc->cond) { + if (debug_displaced) + debug_printf ("Displaced: [Conditional] pc_adjust before: %d\n", + dsc->pc_adjust); + if (pc - to == 8) { /* Condition is true. */ @@ -3050,8 +3058,18 @@ aarch64_displaced_step_fixup (struct gdbarch *gdbarch, } else gdb_assert_not_reached ("Unexpected PC value after displaced stepping"); + + if (debug_displaced) + debug_printf ("Displaced: [Conditional] pc_adjust after: %d\n", + dsc->pc_adjust); } + if (debug_displaced) + debug_printf ("Displaced: %s PC by %d\n", + dsc->pc_adjust? "adjusting" : "not adjusting", + dsc->pc_adjust); + + if (dsc->pc_adjust != 0) { /* Make sure the previous instruction was executed (that is, the PC @@ -3059,11 +3077,16 @@ aarch64_displaced_step_fixup (struct gdbarch *gdbarch, offset. Otherwise we may skip an instruction before its execution took place. */ if ((pc - to) == 0) - dsc->pc_adjust = 0; + { + if (debug_displaced) + debug_printf ("Displaced: PC did not move. Discarding PC " + "adjustment.\n"); + dsc->pc_adjust = 0; + } if (debug_displaced) { - debug_printf ("displaced: fixup: set PC to %s:%d\n", + debug_printf ("Displaced: fixup: set PC to %s:%d\n", paddress (gdbarch, from), dsc->pc_adjust); } regcache_cooked_write_unsigned (regs, AARCH64_PC_REGNUM, |