diff options
author | Shenghou Ma <minux.ma@gmail.com> | 2013-02-08 13:24:38 +0800 |
---|---|---|
committer | Shenghou Ma <minux.ma@gmail.com> | 2013-02-08 13:24:38 +0800 |
commit | 68a1684d32808a4b101768831948ed16c2623a61 (patch) | |
tree | 63e8283f4b500cfeb6c1099ff4030be8f238465a /src/pkg/runtime/traceback_arm.c | |
parent | f66a157fd63cdd25a71d162f39351d36ba9d84fe (diff) | |
download | go-68a1684d32808a4b101768831948ed16c2623a61.tar.gz |
runtime: fix build for Linux/ARM
R=dave, rsc
CC=golang-dev
https://codereview.appspot.com/7299055
Diffstat (limited to 'src/pkg/runtime/traceback_arm.c')
-rw-r--r-- | src/pkg/runtime/traceback_arm.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/pkg/runtime/traceback_arm.c b/src/pkg/runtime/traceback_arm.c index 39dc6fd22..e44e0f82f 100644 --- a/src/pkg/runtime/traceback_arm.c +++ b/src/pkg/runtime/traceback_arm.c @@ -183,10 +183,15 @@ runtime·gentraceback(byte *pc0, byte *sp, byte *lr0, G *gp, int32 skip, uintptr if(f->entry == (uintptr)runtime·deferproc || f->entry == (uintptr)runtime·newproc) sp += 12; - // sighandler saves the lr on stack before fake a call to sigpanic + // sighandler saves the lr on stack before faking a call to sigpanic if(waspanic) { - pc = *(uintptr *)sp; + x = *(uintptr *)sp; sp += 4; + f = runtime·findfunc(pc); + if (f == nil) { + pc = x; + } else if (f->frame == 0) + lr = x; } } |