aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-10-14 10:45:32 -0400
committerRuss Cox <rsc@golang.org>2010-10-14 10:45:32 -0400
commit9b15ad8c228c51ba70ffea24434a337956799067 (patch)
treec767d54d2163d8cb0165113745262768c4485112
parent1748dc34e7b59c77934e8ebbd3e268e190882614 (diff)
downloadgo-9b15ad8c228c51ba70ffea24434a337956799067.tar.gz
go-9b15ad8c228c51ba70ffea24434a337956799067.zip
arm: adjust recover for new reflect.call
R=ken2 CC=golang-dev https://golang.org/cl/2471043
-rw-r--r--src/pkg/runtime/proc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c
index 794e767498..d898b30b37 100644
--- a/src/pkg/runtime/proc.c
+++ b/src/pkg/runtime/proc.c
@@ -3,6 +3,7 @@
// license that can be found in the LICENSE file.
#include "runtime.h"
+#include "arch.h"
#include "defs.h"
#include "malloc.h"
#include "os.h"
@@ -1001,7 +1002,10 @@ void
// take defer off list in case of recursive panic
g->defer = d->link;
g->ispanic = true; // rock for newstack, where reflect.call ends up
- reflect·call(d->fn, d->args, d->siz);
+ if(thechar == '5')
+ reflect·call(d->fn, d->args+4, d->siz-4); // reflect.call does not expect LR
+ else
+ reflect·call(d->fn, d->args, d->siz);
if(p->recovered) {
g->panic = p->link;
free(p);