libgo: Try to guess the right type for select bits in mksysinfo.
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 1 Apr 2011 22:53:54 +0000 (22:53 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 1 Apr 2011 22:53:54 +0000 (22:53 +0000)
From-SVN: r171858

libgo/configure
libgo/configure.ac
libgo/mksysinfo.sh
libgo/syscalls/sysfile_posix.go

index 1c70b860262a391cd54be493b38208f451488318..30d1cdcd5cbda7639073c43a54489098c996858c 100644 (file)
@@ -14228,7 +14228,7 @@ no)
   ;;
 esac
 
-for ac_header in sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h
+for ac_header in sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
index f7fa3aad281a2e39f506aad9a78a40165d7be4b4..cf0c17ff0a4db4a6906ee321b190bcfaa02347bc 100644 (file)
@@ -417,7 +417,7 @@ no)
   ;;
 esac
 
-AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h)
+AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h)
 AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
 
 AC_CHECK_FUNCS(srandom random strerror_r strsignal wait4)
index ab0efe531db8636ccf9078c20d1073e234be909f..77d699e75a5dd8cc659ea3d7912c5ae195c2fbaf 100755 (executable)
@@ -73,6 +73,9 @@ cat > sysinfo.c <<EOF
 #if defined(HAVE_SYS_UTSNAME_H)
 #include <sys/utsname.h>
 #endif
+#if defined(HAVE_SYS_SELECT_H)
+#include <sys/select.h>
+#endif
 #include <unistd.h>
 EOF
 
@@ -438,4 +441,12 @@ grep '^type _ip_mreq ' gen-sysinfo.go | \
       -e 's/_in_addr/[4]byte/g' \
     >> ${OUT}
 
+# Try to guess the type to use for fd_set.
+fd_set=`grep '^type _fd_set ' gen-sysinfo.go || true`
+fds_bits_type="_C_long"
+if test "$fd_set" != ""; then
+    fds_bits_type=`echo $fd_set | sed -e 's/.*[]]\([^;]*\); }$/\1/'`
+fi
+echo "type fds_bits_type $fds_bits_type" >> ${OUT}
+
 exit $?
index d0700574111afe7e3ab8d57637f0922aa981bcce..a16ba4aba607f2341fbe97c52e4cf0342150cc19 100644 (file)
@@ -181,10 +181,10 @@ func Gettimeofday(tv *Timeval) (errno int) {
   return;
 }
 
-const nfdbits = unsafe.Sizeof(_C_long) * 8
+const nfdbits = unsafe.Sizeof(fds_bits_type) * 8
 
 type FdSet_t struct {
-       Fds_bits [(FD_SETSIZE + nfdbits - 1) / nfdbits]_C_long
+       Fds_bits [(FD_SETSIZE + nfdbits - 1) / nfdbits]fds_bits_type
 }
 
 func FDSet(fd int, set *FdSet_t) {