aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2016-10-19 16:53:13 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2016-10-19 16:53:13 +0000
commit29849c91e41478ce7c86d5fe4f1582179b845ef8 (patch)
tree99ea1098649c175fe24c94394f1bd520f6c18770 /libgo
parentb70f0b0cc3134537d56b2115289cb94c3eb7a4e4 (diff)
downloadgcc-29849c91e41478ce7c86d5fe4f1582179b845ef8.zip
gcc-29849c91e41478ce7c86d5fe4f1582179b845ef8.tar.gz
gcc-29849c91e41478ce7c86d5fe4f1582179b845ef8.tar.bz2
runtime, syscall: force EPOLLET to be positive
The C definition is 1U << 31. Reportedly on some systems GCC's -fgo-dump-spec can print this as -2147483648. Reviewed-on: https://go-review.googlesource.com/31448 From-SVN: r241347
Diffstat (limited to 'libgo')
-rw-r--r--libgo/go/runtime/netpoll_epoll.go2
-rwxr-xr-xlibgo/mkrsysinfo.sh6
-rwxr-xr-xlibgo/mksysinfo.sh8
3 files changed, 15 insertions, 1 deletions
diff --git a/libgo/go/runtime/netpoll_epoll.go b/libgo/go/runtime/netpoll_epoll.go
index 777150e..247692e 100644
--- a/libgo/go/runtime/netpoll_epoll.go
+++ b/libgo/go/runtime/netpoll_epoll.go
@@ -49,7 +49,7 @@ func netpollinit() {
func netpollopen(fd uintptr, pd *pollDesc) int32 {
var ev epollevent
- ev.events = _EPOLLIN | _EPOLLOUT | _EPOLLRDHUP | _EPOLLET
+ ev.events = _EPOLLIN | _EPOLLOUT | _EPOLLRDHUP | _EPOLLETpos
*(**pollDesc)(unsafe.Pointer(&ev.data)) = pd
if epollctl(epfd, _EPOLL_CTL_ADD, int32(fd), &ev) < 0 {
return int32(errno())
diff --git a/libgo/mkrsysinfo.sh b/libgo/mkrsysinfo.sh
index d05e5ec..ffbbcea 100755
--- a/libgo/mkrsysinfo.sh
+++ b/libgo/mkrsysinfo.sh
@@ -77,6 +77,12 @@ if grep '^const _epoll_data_offset ' ${OUT} >/dev/null 2>&1; then
exit 1
fi
fi
+# Make sure EPOLLET is positive.
+if grep '^const _EPOLLET = [0-9]' gen-sysinfo.go; then
+ echo "const _EPOLLETpos = _EPOLLET" >> ${OUT}
+else
+ echo "const _EPOLLETpos = 0x80000000" >> ${OUT}
+fi
# Make sure EPOLLRDHUP and EPOLL_CLOEXEC are defined.
if ! grep '^const _EPOLLRDHUP' ${OUT} >/dev/null 2>&1; then
echo "const _EPOLLRDHUP = 0x2000" >> ${OUT}
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh
index f79b5cf..3640476 100755
--- a/libgo/mksysinfo.sh
+++ b/libgo/mksysinfo.sh
@@ -185,7 +185,15 @@ fi
# epoll constants.
grep '^const _EPOLL' gen-sysinfo.go |
+ grep -v EPOLLET |
sed -e 's/^\(const \)_\(EPOLL[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+# Make sure EPOLLET is positive.
+if grep '^const _EPOLLET = [0-9]' gen-sysinfo.go; then
+ grep '^const _EPOLLET ' gen-sysinfo.go |
+ sed -e 's/^\(const \)_\(EPOLL[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+else
+ echo "const EPOLLET = 0x80000000" >> ${OUT}
+fi
# Make sure EPOLLRDHUP and EPOLL_CLOEXEC are defined.
if ! grep '^const EPOLLRDHUP' ${OUT} >/dev/null 2>&1; then
echo "const EPOLLRDHUP = 0x2000" >> ${OUT}