===================================================================
@@ -1,4 +1,4 @@
-3c8d91cff0ad3d233ebd268f88a3749d38a0aac1
+eb716b515356166d3177e6244619be5901f31162
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
===================================================================
@@ -47,7 +47,14 @@ type sigctxt struct {
ctxt unsafe.Pointer
}
-func (c *sigctxt) sigcode() uint64 { return uint64(c.info.si_code) }
+func (c *sigctxt) sigcode() uint64 {
+ if c.info == nil {
+ // This can happen on Solaris 10. We don't know the
+ // code, just avoid a misleading value.
+ return _SI_USER + 1
+ }
+ return uint64(c.info.si_code)
+}
//go:nosplit
func sigblock() {
===================================================================
@@ -29,7 +29,8 @@ func sigtrampgo(sig uint32, info *_sigin
// get here anyhow.
return
}
- badsignal(uintptr(sig), &sigctxt{info, ctx})
+ c := sigctxt{info, ctx}
+ badsignal(uintptr(sig), &c)
return
}
===================================================================
@@ -187,7 +187,11 @@ getSiginfo(siginfo_t *info, void *contex
Location loc[1];
int32 n;
- ret.sigaddr = (uintptr)(info->si_addr);
+ if (info == nil) {
+ ret.sigaddr = 0;
+ } else {
+ ret.sigaddr = (uintptr)(info->si_addr);
+ }
ret.sigpc = 0;
// There doesn't seem to be a portable way to get the PC.