From df801575131aa0a16046aafe03de8e3283b7735c Mon Sep 17 00:00:00 2001 From: Lynn Boger Date: Wed, 6 Apr 2016 11:07:12 -0500 Subject: syscall: fix epoll_event struct for ppc64le/ppc64 The existing epoll_event structure used by many of the epoll_* syscalls was defined incorrectly for use with ppc64le & ppc64 in the syscall directory. This resulted in the caller getting incorrect information on return from these syscalls. This caused failures in fsnotify as well as builds with upstream Docker. The structure is defined correctly in gccgo. This adds a pad field that is expected for these syscalls on ppc64le, ppc64. Fixes #15135 Fixes #15288 Change-Id: If7e8ea9eb1d1ca5182c8dc0f935b334127341ffd Reviewed-on: https://go-review.googlesource.com/21582 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor Reviewed-on: https://go-review.googlesource.com/22207 Reviewed-by: Brad Fitzpatrick --- src/syscall/types_linux.go | 3 +++ src/syscall/ztypes_linux_ppc64.go | 7 ++++--- src/syscall/ztypes_linux_ppc64le.go | 7 ++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/syscall/types_linux.go b/src/syscall/types_linux.go index cff4069370..cb6836be83 100644 --- a/src/syscall/types_linux.go +++ b/src/syscall/types_linux.go @@ -104,6 +104,9 @@ struct my_epoll_event { // padding is not specified in linux/eventpoll.h but added to conform to the // alignment requirements of EABI int32_t padFd; +#endif +#ifdef __powerpc64__ + int32_t _padFd; #endif int32_t fd; int32_t pad; diff --git a/src/syscall/ztypes_linux_ppc64.go b/src/syscall/ztypes_linux_ppc64.go index 33d1b7f3e5..915ca95190 100644 --- a/src/syscall/ztypes_linux_ppc64.go +++ b/src/syscall/ztypes_linux_ppc64.go @@ -574,9 +574,10 @@ type Ustat_t struct { } type EpollEvent struct { - Events uint32 - Fd int32 - Pad int32 + Events uint32 + X_padFd int32 + Fd int32 + Pad int32 } const ( diff --git a/src/syscall/ztypes_linux_ppc64le.go b/src/syscall/ztypes_linux_ppc64le.go index 27ca004834..a1180553ec 100644 --- a/src/syscall/ztypes_linux_ppc64le.go +++ b/src/syscall/ztypes_linux_ppc64le.go @@ -574,9 +574,10 @@ type Ustat_t struct { } type EpollEvent struct { - Events uint32 - Fd int32 - Pad int32 + Events uint32 + X_padFd int32 + Fd int32 + Pad int32 } const ( -- cgit v1.2.3-54-g00ecf