aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2021-04-08 17:41:24 -0400
committerAustin Clements <austin@google.com>2021-04-09 17:49:01 +0000
commit2698be4905c9d54a0d6a7d7d6e90284a9d76b82a (patch)
tree4f633117f0e68efaf0bea9122602a49000c24636
parentd11968012c81e6eef3a1f3ff4c19a610222fc305 (diff)
downloadgo-2698be4905c9d54a0d6a7d7d6e90284a9d76b82a.tar.gz
go-2698be4905c9d54a0d6a7d7d6e90284a9d76b82a.zip
runtime: use sigpanic0 on all OSes
With the register ABI, it's important to inject sigpanic0 instead of sigpanic so we can set up function entry registers. This was already happening on most OSes. This CL gets the remaining ones. Change-Id: I6bc4d912b6497e03ed54d0a9c1eae8fd099d2cea Reviewed-on: https://go-review.googlesource.com/c/go/+/308930 Trust: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org>
-rw-r--r--src/runtime/os3_plan9.go2
-rw-r--r--src/runtime/signal_windows.go2
-rw-r--r--src/runtime/stubs.go6
3 files changed, 6 insertions, 4 deletions
diff --git a/src/runtime/os3_plan9.go b/src/runtime/os3_plan9.go
index b6ee98cab6..c5dc23de8b 100644
--- a/src/runtime/os3_plan9.go
+++ b/src/runtime/os3_plan9.go
@@ -100,7 +100,7 @@ func sighandler(_ureg *ureg, note *byte, gp *g) int {
if usesLR {
c.setpc(funcPC(sigpanictramp))
} else {
- c.setpc(funcPC(sigpanic))
+ c.setpc(funcPC(sigpanic0))
}
return _NCONT
}
diff --git a/src/runtime/signal_windows.go b/src/runtime/signal_windows.go
index 63158f0bc4..f2ce24d735 100644
--- a/src/runtime/signal_windows.go
+++ b/src/runtime/signal_windows.go
@@ -145,7 +145,7 @@ func exceptionhandler(info *exceptionrecord, r *context, gp *g) int32 {
*((*uintptr)(sp)) = r.ip()
}
}
- r.set_ip(funcPC(sigpanic))
+ r.set_ip(funcPC(sigpanic0))
return _EXCEPTION_CONTINUE_EXECUTION
}
diff --git a/src/runtime/stubs.go b/src/runtime/stubs.go
index f11ec539df..f635d942e4 100644
--- a/src/runtime/stubs.go
+++ b/src/runtime/stubs.go
@@ -394,8 +394,10 @@ func duffcopy()
// Called from linker-generated .initarray; declared for go vet; do NOT call from Go.
func addmoduledata()
-// Injected by the signal handler for panicking signals. On many platforms it just
-// jumps to sigpanic.
+// Injected by the signal handler for panicking signals.
+// Initializes any registers that have fixed meaning at calls but
+// are scratch in bodies and calls sigpanic.
+// On many platforms it just jumps to sigpanic.
func sigpanic0()
// intArgRegs is used by the various register assignment