aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2012-04-30 16:04:17 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2012-04-30 16:04:17 +0000
commit81b9589421788a06088f1a703100328800e9e9ec (patch)
treeb3c2a101bbc4c5c762bad8d1393ba9442396afd2 /libgo
parentb944e97a922d85b404cba6c4a4f2fbcf8e7701b8 (diff)
downloadgcc-81b9589421788a06088f1a703100328800e9e9ec.zip
gcc-81b9589421788a06088f1a703100328800e9e9ec.tar.gz
gcc-81b9589421788a06088f1a703100328800e9e9ec.tar.bz2
re PR go/52586 (libgo fails to build for mips*64-linux-gnu (reference to undefined name 'SYS_GETDENTS64'))
PR go/52586 mksysinfo, syscall: Make sure SYS_GETDENTS64 is defined. Fixes build on MIPS GNU/Linux. From-SVN: r186986
Diffstat (limited to 'libgo')
-rw-r--r--libgo/go/syscall/libcall_linux.go6
-rwxr-xr-xlibgo/mksysinfo.sh8
2 files changed, 13 insertions, 1 deletions
diff --git a/libgo/go/syscall/libcall_linux.go b/libgo/go/syscall/libcall_linux.go
index 7c9f05e..8d7da19 100644
--- a/libgo/go/syscall/libcall_linux.go
+++ b/libgo/go/syscall/libcall_linux.go
@@ -203,7 +203,11 @@ func Getdents(fd int, buf []byte) (n int, err error) {
p = (*byte)(unsafe.Pointer(&_zero))
}
Entersyscall()
- r1, _, errno := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(len(buf)))
+ s := SYS_GETDENTS64
+ if s == 0 {
+ s = SYS_GETDENTS
+ }
+ r1, _, errno := Syscall(uintptr(s), uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(len(buf)))
n = int(r1)
if n < 0 {
err = errno
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh
index db61a73..655337f 100755
--- a/libgo/mksysinfo.sh
+++ b/libgo/mksysinfo.sh
@@ -224,6 +224,14 @@ grep '^const _SYS_' gen-sysinfo.go | \
echo "const $sup = _$sys" >> ${OUT}
done
+# The GNU/Linux support wants to use SYS_GETDENTS64 if available.
+if ! grep '^const SYS_GETDENTS ' ${OUT} >/dev/null 2>&1; then
+ echo "const SYS_GETDENTS = 0" >> ${OUT}
+fi
+if ! grep '^const SYS_GETDENTS64 ' ${OUT} >/dev/null 2>&1; then
+ echo "const SYS_GETDENTS64 = 0" >> ${OUT}
+fi
+
# Stat constants.
grep '^const _S_' gen-sysinfo.go | \
sed -e 's/^\(const \)_\(S_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}