aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2016-06-08 22:22:35 -0400
committerCherry Zhang <cherryyz@google.com>2016-06-09 20:02:59 +0000
commitcbc26869b7835e45359dad7dfb70e85c02c820cd (patch)
tree4527055731c30ee7c626a3296e686f049ab5d0f5
parente3f1c66f313a59888620c415163b93c12153574e (diff)
downloadgo-cbc26869b7835e45359dad7dfb70e85c02c820cd.tar.gz
go-cbc26869b7835e45359dad7dfb70e85c02c820cd.zip
runtime: set $sp before $pc in gdb python script
When setting $pc, gdb does a backtrace using the current value of $sp, and it may complain if $sp does not match that $pc (although the assignment went through successfully). This happens with ARM SSA backend: when setting $pc it prints > Cannot access memory at address 0x0 As well as occasionally on MIPS64: > warning: GDB can't find the start of the function at 0xc82003fe07. > ... Setting $sp before setting $pc makes it happy. Change-Id: Idd96dbef3e9b698829da553c6d71d5b4c6d492db Reviewed-on: https://go-review.googlesource.com/23940 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-rw-r--r--src/runtime/runtime-gdb.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/runtime/runtime-gdb.py b/src/runtime/runtime-gdb.py
index e57fa00e1a..5c9b2a08e8 100644
--- a/src/runtime/runtime-gdb.py
+++ b/src/runtime/runtime-gdb.py
@@ -448,15 +448,15 @@ class GoroutineCmd(gdb.Command):
except gdb.error:
pc = int(str(pc).split(None, 1)[0], 16)
save_frame = gdb.selected_frame()
- gdb.parse_and_eval('$save_pc = $pc')
gdb.parse_and_eval('$save_sp = $sp')
- gdb.parse_and_eval('$pc = {0}'.format(str(pc)))
+ gdb.parse_and_eval('$save_pc = $pc')
gdb.parse_and_eval('$sp = {0}'.format(str(sp)))
+ gdb.parse_and_eval('$pc = {0}'.format(str(pc)))
try:
gdb.execute(cmd)
finally:
- gdb.parse_and_eval('$pc = $save_pc')
gdb.parse_and_eval('$sp = $save_sp')
+ gdb.parse_and_eval('$pc = $save_pc')
save_frame.select()