g is not in r15 anymore.
now it's in a per-thread memory segment,
which is valid even inside a signal handler,
so we can just refer to g directly.
Fixes #1082.
R=r
CC=golang-dev
https://golang.org/cl/
2149045
printf("\n");
if(gotraceback()){
- traceback((void*)r->rip, (void*)r->rsp, 0, (void*)r->r15);
- tracebackothers((void*)r->r15);
+ traceback((void*)r->rip, (void*)r->rsp, 0, g);
+ tracebackothers(g);
dumpregs(r);
}
printf("\n");
if(gotraceback()){
- traceback((void*)r->mc_rip, (void*)r->mc_rsp, 0, (void*)r->mc_r15);
- tracebackothers((void*)r->mc_r15);
+ traceback((void*)r->mc_rip, (void*)r->mc_rsp, 0, g);
+ tracebackothers(g);
dumpregs(r);
}
printf("\n");
if(gotraceback()){
- traceback((void*)r->rip, (void*)r->rsp, 0, (void*)r->r15);
- tracebackothers((void*)r->r15);
+ traceback((void*)r->rip, (void*)r->rsp, 0, g);
+ tracebackothers(g);
dumpregs(r);
}