This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Fix alpha compilation failure
- From: GOTO Masanori <gotom at debian dot or dot jp>
- To: Richard Henderson <rth at twiddle dot net>
- Cc: libc-alpha at sources dot redhat dot com, gotom at debian dot or dot jp
- Date: Thu, 13 May 2004 01:24:03 +0900
- Subject: Fix alpha compilation failure
Hi,
The current cvs failed to compile on alpha with linux kernel < 2.6.4,
because old version did not have __NR_{fstat,lstat,stat}64. This
patch checks such syscalls are actually defined.
Regards,
-- gotom
2004-05-13 GOTO Masanori <gotom@debian.or.jp>
* sysdeps/unix/sysv/linux/alpha/fxstat.c: Check define
__NR_{fstat,lstat,stat}64 if not defined.
* sysdeps/unix/sysv/linux/alpha/lxstat.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/xstat.c: Likewise.
Index: sysdeps/unix/sysv/linux/alpha/fxstat.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/fxstat.c,v
retrieving revision 1.1
diff -u -r1.1 fxstat.c
--- sysdeps/unix/sysv/linux/alpha/fxstat.c 11 Mar 2004 02:58:44 -0000 1.1
+++ sysdeps/unix/sysv/linux/alpha/fxstat.c 12 May 2004 16:17:08 -0000
@@ -35,27 +35,28 @@
__fxstat (int vers, int fd, struct stat *buf)
{
INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
+ int result;
struct kernel_stat kbuf;
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
{
+#ifdef __NR_fstat64
result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf);
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
+ result = INTERNAL_SYSCALL_ERRNO (result, err);
+ if (result != ENOSYS) {
+ __set_errno (result);
+ return -1;
+ }
+#endif
__libc_missing_axp_stat64 = 1;
}
result = INTERNAL_SYSCALL (fstat, err, 2, fd, &kbuf);
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
return __xstat_conv (vers, &kbuf, buf);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __set_errno (errno_out);
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
return -1;
}
hidden_def (__fxstat)
Index: sysdeps/unix/sysv/linux/alpha/lxstat.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/lxstat.c,v
retrieving revision 1.1
diff -u -r1.1 lxstat.c
--- sysdeps/unix/sysv/linux/alpha/lxstat.c 11 Mar 2004 02:58:44 -0000 1.1
+++ sysdeps/unix/sysv/linux/alpha/lxstat.c 12 May 2004 16:17:08 -0000
@@ -35,27 +35,28 @@
__lxstat (int vers, const char *name, struct stat *buf)
{
INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
+ int result;
struct kernel_stat kbuf;
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
{
+#ifdef __NR_lstat64
result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf);
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
+ result = INTERNAL_SYSCALL_ERRNO (result, err);
+ if (result != ENOSYS) {
+ __set_errno (result);
+ return -1;
+ }
+#endif
__libc_missing_axp_stat64 = 1;
}
result = INTERNAL_SYSCALL (lstat, err, 2, name, &kbuf);
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
return __xstat_conv (vers, &kbuf, buf);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __set_errno (errno_out);
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
return -1;
}
hidden_def (__lxstat)
Index: sysdeps/unix/sysv/linux/alpha/xstat.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/xstat.c,v
retrieving revision 1.1
diff -u -r1.1 xstat.c
--- sysdeps/unix/sysv/linux/alpha/xstat.c 11 Mar 2004 02:58:44 -0000 1.1
+++ sysdeps/unix/sysv/linux/alpha/xstat.c 12 May 2004 16:17:08 -0000
@@ -35,27 +35,28 @@
__xstat (int vers, const char *name, struct stat *buf)
{
INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
+ int result;
struct kernel_stat kbuf;
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
{
+#ifdef __NR_stat64
result = INTERNAL_SYSCALL (stat64, err, 2, name, buf);
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
+ result = INTERNAL_SYSCALL_ERRNO (result, err);
+ if (result != ENOSYS) {
+ __set_errno (result);
+ return -1;
+ }
+#endif
__libc_missing_axp_stat64 = 1;
}
result = INTERNAL_SYSCALL (stat, err, 2, name, &kbuf);
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
return __xstat_conv (vers, &kbuf, buf);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __set_errno (errno_out);
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
return -1;
}
hidden_def (__xstat)