diff options
| author | Russ Cox <rsc@golang.org> | 2010-09-11 00:26:56 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2010-09-11 00:26:56 -0400 |
| commit | befecf6b595220f31d70815bee4067a0e260516d (patch) | |
| tree | d8129add5ab7f85c7bbfed963537591cf5dc6ad2 /src/pkg/runtime | |
| parent | 0aa2317096fde91c51a279b885765b5e26359150 (diff) | |
| download | go-befecf6b595220f31d70815bee4067a0e260516d.tar.xz | |
runtime: fix crash trace on amd64
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
Diffstat (limited to 'src/pkg/runtime')
| -rw-r--r-- | src/pkg/runtime/darwin/amd64/signal.c | 4 | ||||
| -rw-r--r-- | src/pkg/runtime/freebsd/amd64/signal.c | 4 | ||||
| -rw-r--r-- | src/pkg/runtime/linux/amd64/signal.c | 4 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/pkg/runtime/darwin/amd64/signal.c b/src/pkg/runtime/darwin/amd64/signal.c index 648ef207ca..5dc811cfa7 100644 --- a/src/pkg/runtime/darwin/amd64/signal.c +++ b/src/pkg/runtime/darwin/amd64/signal.c @@ -112,8 +112,8 @@ sighandler(int32 sig, Siginfo *info, void *context) 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); } diff --git a/src/pkg/runtime/freebsd/amd64/signal.c b/src/pkg/runtime/freebsd/amd64/signal.c index 57bfcfb55e..09053ac786 100644 --- a/src/pkg/runtime/freebsd/amd64/signal.c +++ b/src/pkg/runtime/freebsd/amd64/signal.c @@ -106,8 +106,8 @@ sighandler(int32 sig, Siginfo* info, void* context) 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); } diff --git a/src/pkg/runtime/linux/amd64/signal.c b/src/pkg/runtime/linux/amd64/signal.c index 63c3a2e6ea..e46a0944c5 100644 --- a/src/pkg/runtime/linux/amd64/signal.c +++ b/src/pkg/runtime/linux/amd64/signal.c @@ -105,8 +105,8 @@ sighandler(int32 sig, Siginfo* info, void* context) 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); } |
