From 7ee4c1665477c6cf574cb9128deaf9d00906c69f Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Mon, 4 Oct 2021 21:44:08 +0000 Subject: [PATCH] Revert "runtime: add padding to Linux kernel structures" This reverts commit f0db7eae74ea235e9fbc2598252bfd46c1cc5510. Reason for revert: Breaks linux-386 tests Change-Id: Ia51fbf97460ab52920b67d6db6177ac2d6b0058e Reviewed-on: https://go-review.googlesource.com/c/go/+/353432 Trust: Michael Pratt Run-TryBot: Michael Pratt TryBot-Result: Go Bot Reviewed-by: Bryan C. Mills --- src/runtime/defs_linux_386.go | 11 ----------- src/runtime/defs_linux_amd64.go | 11 ----------- src/runtime/defs_linux_arm.go | 11 ----------- src/runtime/defs_linux_arm64.go | 11 ----------- src/runtime/defs_linux_mips64x.go | 11 ----------- src/runtime/defs_linux_mipsx.go | 11 ----------- src/runtime/defs_linux_ppc64.go | 11 ----------- src/runtime/defs_linux_ppc64le.go | 11 ----------- src/runtime/defs_linux_riscv64.go | 11 ----------- src/runtime/defs_linux_s390x.go | 11 ----------- src/runtime/os_linux.go | 12 ------------ 11 files changed, 122 deletions(-) diff --git a/src/runtime/defs_linux_386.go b/src/runtime/defs_linux_386.go index fd9b60c444..d8b546cb4c 100644 --- a/src/runtime/defs_linux_386.go +++ b/src/runtime/defs_linux_386.go @@ -3,8 +3,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -174,11 +172,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint32 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type stackt struct { @@ -242,10 +235,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_amd64.go b/src/runtime/defs_linux_amd64.go index 29dabe08dd..6afb67f77f 100644 --- a/src/runtime/defs_linux_amd64.go +++ b/src/runtime/defs_linux_amd64.go @@ -3,8 +3,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -136,11 +134,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -159,10 +152,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_arm.go b/src/runtime/defs_linux_arm.go index 3ed6940647..ec24d76326 100644 --- a/src/runtime/defs_linux_arm.go +++ b/src/runtime/defs_linux_arm.go @@ -4,8 +4,6 @@ package runtime -import "internal/goarch" - // Constants const ( _EINTR = 0x4 @@ -177,10 +175,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type siginfo struct { @@ -189,11 +183,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint32 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type sigactiont struct { diff --git a/src/runtime/defs_linux_arm64.go b/src/runtime/defs_linux_arm64.go index 6a126c4a15..f9f175004b 100644 --- a/src/runtime/defs_linux_arm64.go +++ b/src/runtime/defs_linux_arm64.go @@ -3,8 +3,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -136,11 +134,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -159,10 +152,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_mips64x.go b/src/runtime/defs_linux_mips64x.go index 34e803331c..1743bbce41 100644 --- a/src/runtime/defs_linux_mips64x.go +++ b/src/runtime/defs_linux_mips64x.go @@ -8,8 +8,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -145,11 +143,6 @@ type siginfo struct { __pad0 [1]int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -168,10 +161,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_mipsx.go b/src/runtime/defs_linux_mipsx.go index 7a7db7f181..e84d4979e1 100644 --- a/src/runtime/defs_linux_mipsx.go +++ b/src/runtime/defs_linux_mipsx.go @@ -8,8 +8,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -139,11 +137,6 @@ type siginfo struct { si_errno int32 // below here is a union; si_addr is the only field we use si_addr uint32 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -162,10 +155,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_ppc64.go b/src/runtime/defs_linux_ppc64.go index 7971ca7058..e0775e2974 100644 --- a/src/runtime/defs_linux_ppc64.go +++ b/src/runtime/defs_linux_ppc64.go @@ -3,8 +3,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -137,11 +135,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -160,10 +153,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_ppc64le.go b/src/runtime/defs_linux_ppc64le.go index 7971ca7058..e0775e2974 100644 --- a/src/runtime/defs_linux_ppc64le.go +++ b/src/runtime/defs_linux_ppc64le.go @@ -3,8 +3,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -137,11 +135,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -160,10 +153,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_riscv64.go b/src/runtime/defs_linux_riscv64.go index 92f4563dd5..1052213a4c 100644 --- a/src/runtime/defs_linux_riscv64.go +++ b/src/runtime/defs_linux_riscv64.go @@ -4,8 +4,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -134,11 +132,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -157,10 +150,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/defs_linux_s390x.go b/src/runtime/defs_linux_s390x.go index 8a56ef0b80..b072955d4a 100644 --- a/src/runtime/defs_linux_s390x.go +++ b/src/runtime/defs_linux_s390x.go @@ -4,8 +4,6 @@ package runtime -import "internal/goarch" - const ( _EINTR = 0x4 _EAGAIN = 0xb @@ -133,11 +131,6 @@ type siginfo struct { si_code int32 // below here is a union; si_addr is the only field we use si_addr uint64 - - // Pad struct to the max size in the kernel. Account for the 3 32-bit - // fields, the alignment to this architecture's pointer size, and the final - // pointer-length field. - _ [_si_max_size - (3*4 + (1-4/goarch.PtrSize)*4 + 1*goarch.PtrSize)]byte } type itimerspec struct { @@ -156,10 +149,6 @@ type sigevent struct { notify int32 // below here is a union; sigev_notify_thread_id is the only field we use sigev_notify_thread_id int32 - - // Pad struct to the max size in the kernel. Account for the pointer-length - // field and the 3 32-bit fields. - _ [_sigev_max_size - (1*goarch.PtrSize + 3*4)]byte } type epollevent struct { diff --git a/src/runtime/os_linux.go b/src/runtime/os_linux.go index d5a5ff763b..06773c2193 100644 --- a/src/runtime/os_linux.go +++ b/src/runtime/os_linux.go @@ -440,18 +440,6 @@ func pipe() (r, w int32, errno int32) func pipe2(flags int32) (r, w int32, errno int32) func setNonblock(fd int32) -const ( - _si_max_size = 128 - _sigev_max_size = 64 -) - -// Assert that the Go definitions of structures exchanged with the kernel are -// the same size as what the kernel defines. -var ( - _ [_si_max_size]struct{} = [unsafe.Sizeof(siginfo{})]struct{}{} - _ [_sigev_max_size]struct{} = [unsafe.Sizeof(sigevent{})]struct{}{} -) - //go:nosplit //go:nowritebarrierrec func setsig(i uint32, fn uintptr) { -- 2.48.1