diff options
author | Ian Lance Taylor <iant@golang.org> | 2020-11-29 10:16:27 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2020-11-30 12:17:01 -0800 |
commit | e848a83f46f15280ad654f05545cc5ec4f5b8e50 (patch) | |
tree | 0cf7f90e869839c7c62dbef720c4ecfde8a944b9 /libgo | |
parent | 5ba975e6680cc5f9c2be7ee34b1cacdba3eb3347 (diff) | |
download | gcc-e848a83f46f15280ad654f05545cc5ec4f5b8e50.zip gcc-e848a83f46f15280ad654f05545cc5ec4f5b8e50.tar.gz gcc-e848a83f46f15280ad654f05545cc5ec4f5b8e50.tar.bz2 |
libgo: define SO_RCVTIMEO on 32-bit GNU/Linux
Fixes golang/go#42872
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273892
Diffstat (limited to 'libgo')
-rwxr-xr-x | libgo/mksysinfo.sh | 9 | ||||
-rw-r--r-- | libgo/sysinfo.c | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh index deac5ce..b32a026 100755 --- a/libgo/mksysinfo.sh +++ b/libgo/mksysinfo.sh @@ -194,6 +194,7 @@ fi # Networking constants. egrep '^const _(AF|ARPHRD|ETH|IN|SOCK|SOL|SO|IPPROTO|TCP|IP|IPV6)_' gen-sysinfo.go | + grep -v '_val =' | sed -e 's/^\(const \)_\([^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} grep '^const _SOMAXCONN' gen-sysinfo.go | sed -e 's/^\(const \)_\(SOMAXCONN[^= ]*\)\(.*\)$/\1\2 = _\2/' \ @@ -213,6 +214,14 @@ for m in SOCK_CLOEXEC SOCK_NONBLOCK; do fi done +# On 32-bit GNU/Linux the expression for SO_RCVTIMEO is too complicated +# for -fdump-go-spec. +if ! grep '^const SO_RCVTIMEO ' ${OUT} >/dev/null 2>&1; then + if grep '^const _SO_RCVTIMEO_val' ${OUT} >/dev/null 2>&1; then + echo 'const SO_RCVTIMEO = _SO_RCVTIMEO_val' >> ${OUT} + fi +fi + # The syscall package requires AF_LOCAL. if ! grep '^const AF_LOCAL ' ${OUT} >/dev/null 2>&1; then if grep '^const AF_UNIX ' ${OUT} >/dev/null 2>&1; then diff --git a/libgo/sysinfo.c b/libgo/sysinfo.c index 7086381..a060ea8 100644 --- a/libgo/sysinfo.c +++ b/libgo/sysinfo.c @@ -337,6 +337,9 @@ enum { #ifdef BIOCVERSION BIOCVERSION_val = BIOCVERSION, #endif +#ifdef SO_RCVTIMEO + SO_RCVTIMEO_val = SO_RCVTIMEO, +#endif }; // SIOCGIFMTU can't be added in the above enum as it might |