runtime, syscall: force EPOLLET to be positive
authorIan Lance Taylor <ian@gcc.gnu.org>
Wed, 19 Oct 2016 16:53:13 +0000 (16:53 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 19 Oct 2016 16:53:13 +0000 (16:53 +0000)
    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

gcc/go/gofrontend/MERGE
libgo/go/runtime/netpoll_epoll.go
libgo/mkrsysinfo.sh
libgo/mksysinfo.sh

index 40f91ced442ec93c2508c6951550f8120e8051b1..5c125c7aec18bf6b5b27de424872c79bb1691d44 100644 (file)
@@ -1,4 +1,4 @@
-68bb6a9875499037d3eccb79a1f92e1c7a476d58
+5346c7d15362a16efa0defaaeca63b1fce1c1523
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 777150eb7abd54981c47cac40433969638ecb5c3..247692ef0422a48222f7eeb8d5ea45e636130479 100644 (file)
@@ -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())
index d05e5ecaffb6630a354891c6cf19aee8f274d3f0..ffbbcea39a65bce3ebd6b054c5e56bf7cc888c0a 100755 (executable)
@@ -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}
index f79b5cfd7d8491e88edebd7f2526482be75862da..3640476a434d7de4d70932d7a9949f83922a443b 100755 (executable)
@@ -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}