Commit 7eb13b95 authored by Russ Cox's avatar Russ Cox

runtime: fix argument dump in traceback

Was printing words at SP instead of at FP
after shuffle due to nascent flag.

R=r, r2
CC=golang-dev
https://golang.org/cl/2316044
parent 53fff1e7
...@@ -21,7 +21,7 @@ gentraceback(byte *pc0, byte *sp, G *g, int32 skip, uintptr *pcbuf, int32 m) ...@@ -21,7 +21,7 @@ gentraceback(byte *pc0, byte *sp, G *g, int32 skip, uintptr *pcbuf, int32 m)
{ {
byte *p; byte *p;
int32 i, n, iter, nascent; int32 i, n, iter, nascent;
uintptr pc, tracepc; uintptr pc, tracepc, *fp;
Stktop *stk; Stktop *stk;
Func *f; Func *f;
...@@ -93,10 +93,15 @@ gentraceback(byte *pc0, byte *sp, G *g, int32 skip, uintptr *pcbuf, int32 m) ...@@ -93,10 +93,15 @@ gentraceback(byte *pc0, byte *sp, G *g, int32 skip, uintptr *pcbuf, int32 m)
tracepc--; tracepc--;
printf(" %S:%d\n", f->src, funcline(f, tracepc)); printf(" %S:%d\n", f->src, funcline(f, tracepc));
printf("\t%S(", f->name); printf("\t%S(", f->name);
fp = (uintptr*)sp;
if(f->frame < sizeof(uintptr))
fp++;
else
fp += f->frame/sizeof(uintptr);
for(i = 0; i < f->args; i++) { for(i = 0; i < f->args; i++) {
if(i != 0) if(i != 0)
prints(", "); prints(", ");
·printhex(((uintptr*)sp)[i]); ·printhex(fp[i]);
if(i >= 4) { if(i >= 4) {
prints(", ..."); prints(", ...");
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment