aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorRhys Hiltner <rhys@justin.tv>2021-11-29 16:48:34 -0800
committerCherry Mui <cherryyz@google.com>2021-12-01 16:55:04 +0000
commit2c5d2083e41371aa4f5aab9e86921002c1f9b504 (patch)
tree846446a600a2d1c7decb3e94d7e7ad67db438fdb /src/runtime
parent029dfbcc83123cb62e52f2aaedc46397815e3fa6 (diff)
downloadgo-2c5d2083e41371aa4f5aab9e86921002c1f9b504.tar.xz
runtime: fix riscv64 sigaction mask field offset
The Linux kernel for riscv64 does not include an sa_restorer field on its sigaction struct, and expects sa_mask to come immediately after the sa_flags field. Arrange the fields of the sigaction struct that are known to the kernel so they appear at the correct byte offsets, and so they agree with the output of "go tool cgo -godefs". Follow the example set by the mips/mipsle port to leave the sa_restorer field in place, but at an offset where it won't hurt anything. Fixes #49709 Change-Id: I9bb0d7dbd7439d07e3a204461c7d790f33fd4977 Reviewed-on: https://go-review.googlesource.com/c/go/+/367635 Run-TryBot: Rhys Hiltner <rhys@justin.tv> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Joel Sing <joel@sing.id.au> Trust: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/defs_linux_riscv64.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/runtime/defs_linux_riscv64.go b/src/runtime/defs_linux_riscv64.go
index 332720a8c8..747e26bc4b 100644
--- a/src/runtime/defs_linux_riscv64.go
+++ b/src/runtime/defs_linux_riscv64.go
@@ -122,10 +122,12 @@ func (tv *timeval) set_usec(x int32) {
}
type sigactiont struct {
- sa_handler uintptr
- sa_flags uint64
+ sa_handler uintptr
+ sa_flags uint64
+ sa_mask uint64
+ // Linux on riscv64 does not have the sa_restorer field, but the setsig
+ // function references it (for x86). Not much harm to include it at the end.
sa_restorer uintptr
- sa_mask uint64
}
type siginfoFields struct {