patches/glibc/2_9/440-alpha-glibc-2.4-xstat.patch
branchnewlib
changeset 1365 c4d124ed9f8e
parent 1364 9227d2a2c080
child 1366 5e5d1e6f55d3
     1.1 --- a/patches/glibc/2_9/440-alpha-glibc-2.4-xstat.patch	Sat Apr 11 19:03:02 2009 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,249 +0,0 @@
     1.4 -Original patch from: gentoo/src/patchsets/glibc/2.9/6001_all_alpha-glibc-2.4-xstat.patch
     1.5 -
     1.6 --= BEGIN original header =-
     1.7 -http://sources.redhat.com/bugzilla/show_bug.cgi?id=1026
     1.8 -http://sourceware.org/ml/libc-alpha/2005-02/msg00122.html
     1.9 -
    1.10 -2005-02-26  GOTO Masanori  <gotom@debian.or.jp>
    1.11 -
    1.12 -	* sysdeps/unix/sysv/linux/kernel-features.h: Define
    1.13 -	__ASSUME_STAT64_SYSCALL.
    1.14 -	* sysdeps/unix/sysv/linux/alpha/fxstat.c: Check
    1.15 -	__ASSUME_STAT64_SYSCALL.
    1.16 -	* sysdeps/unix/sysv/linux/alpha/fxstatat.c: Likewise.
    1.17 -	* sysdeps/unix/sysv/linux/alpha/lxstat.c: Likewise.
    1.18 -	* sysdeps/unix/sysv/linux/alpha/xstat.c: Likewise.
    1.19 -	* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Don't define
    1.20 -	__libc_missing_axp_stat64 when it's not needed.
    1.21 -	* sysdeps/unix/sysv/linux/alpha/xstatconv.h: Likewise.
    1.22 -
    1.23 --= END original header =-
    1.24 -
    1.25 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/fxstat.c glibc-2_9/sysdeps/unix/sysv/linux/alpha/fxstat.c
    1.26 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/fxstat.c	2004-03-11 03:58:44.000000000 +0100
    1.27 -+++ glibc-2_9/sysdeps/unix/sysv/linux/alpha/fxstat.c	2009-02-02 22:01:30.000000000 +0100
    1.28 -@@ -35,27 +35,39 @@
    1.29 - __fxstat (int vers, int fd, struct stat *buf)
    1.30 - {
    1.31 -   INTERNAL_SYSCALL_DECL (err);
    1.32 --  int result, errno_out;
    1.33 -+  int result;
    1.34 -   struct kernel_stat kbuf;
    1.35 - 
    1.36 -+#if __ASSUME_STAT64_SYSCALL > 0
    1.37 -+  if (vers == _STAT_VER_KERNEL64)
    1.38 -+    {
    1.39 -+      result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf);
    1.40 -+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
    1.41 -+	return result;
    1.42 -+      __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
    1.43 -+      return -1;
    1.44 -+    }
    1.45 -+#elif defined __NR_fstat64
    1.46 -   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
    1.47 -     {
    1.48 -+      int errno_out;
    1.49 -       result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf);
    1.50 -       if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
    1.51 - 	return result;
    1.52 -       errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
    1.53 -       if (errno_out != ENOSYS)
    1.54 --	goto fail;
    1.55 -+	{
    1.56 -+	  __set_errno (errno_out);
    1.57 -+	  return -1;
    1.58 -+	}
    1.59 -       __libc_missing_axp_stat64 = 1;
    1.60 -     }
    1.61 -+#endif
    1.62 - 
    1.63 -   result = INTERNAL_SYSCALL (fstat, err, 2, fd, &kbuf);
    1.64 -   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
    1.65 -     return __xstat_conv (vers, &kbuf, buf);
    1.66 --  errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
    1.67 --  
    1.68 -- fail:
    1.69 --  __set_errno (errno_out);
    1.70 -+  __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
    1.71 -   return -1;
    1.72 - }
    1.73 - hidden_def (__fxstat)
    1.74 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/fxstatat.c glibc-2_9/sysdeps/unix/sysv/linux/alpha/fxstatat.c
    1.75 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/fxstatat.c	2006-02-20 23:51:48.000000000 +0100
    1.76 -+++ glibc-2_9/sysdeps/unix/sysv/linux/alpha/fxstatat.c	2009-02-02 22:01:30.000000000 +0100
    1.77 -@@ -65,6 +65,20 @@
    1.78 -   int result, errno_out;
    1.79 -   struct kernel_stat kst;
    1.80 - 
    1.81 -+#if __ASSUME_STAT64_SYSCALL > 0
    1.82 -+  if (vers == _STAT_VER_KERNEL64)
    1.83 -+    {
    1.84 -+      if (flag & AT_SYMLINK_NOFOLLOW)
    1.85 -+	result = INTERNAL_SYSCALL (lstat64, err, 2, file, st);
    1.86 -+      else
    1.87 -+	result = INTERNAL_SYSCALL (stat64, err, 2, file, st);
    1.88 -+
    1.89 -+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
    1.90 -+	return result;
    1.91 -+      errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
    1.92 -+      goto fail;
    1.93 -+    }
    1.94 -+#elif defined __NR_stat64
    1.95 -   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
    1.96 -     {
    1.97 -       if (flag & AT_SYMLINK_NOFOLLOW)
    1.98 -@@ -79,6 +93,7 @@
    1.99 - 	goto fail;
   1.100 -       __libc_missing_axp_stat64 = 1;
   1.101 -     }
   1.102 -+#endif
   1.103 - 
   1.104 -   if (flag & AT_SYMLINK_NOFOLLOW)
   1.105 -     result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst);
   1.106 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/lxstat.c glibc-2_9/sysdeps/unix/sysv/linux/alpha/lxstat.c
   1.107 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/lxstat.c	2004-03-11 03:58:44.000000000 +0100
   1.108 -+++ glibc-2_9/sysdeps/unix/sysv/linux/alpha/lxstat.c	2009-02-02 22:01:30.000000000 +0100
   1.109 -@@ -35,27 +35,39 @@
   1.110 - __lxstat (int vers, const char *name, struct stat *buf)
   1.111 - {
   1.112 -   INTERNAL_SYSCALL_DECL (err);
   1.113 --  int result, errno_out;
   1.114 -+  int result;
   1.115 -   struct kernel_stat kbuf;
   1.116 - 
   1.117 -+#if __ASSUME_STAT64_SYSCALL > 0
   1.118 -+  if (vers == _STAT_VER_KERNEL64)
   1.119 -+    {
   1.120 -+      result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf);
   1.121 -+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
   1.122 -+	return result;
   1.123 -+      __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
   1.124 -+      return -1;
   1.125 -+    }
   1.126 -+#elif defined __NR_lstat64
   1.127 -   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
   1.128 -     {
   1.129 -+      int errno_out;
   1.130 -       result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf);
   1.131 -       if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
   1.132 - 	return result;
   1.133 -       errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
   1.134 -       if (errno_out != ENOSYS)
   1.135 --	goto fail;
   1.136 -+	{
   1.137 -+	  __set_errno (errno_out);
   1.138 -+	  return -1;
   1.139 -+	}
   1.140 -       __libc_missing_axp_stat64 = 1;
   1.141 -     }
   1.142 -+#endif
   1.143 - 
   1.144 -   result = INTERNAL_SYSCALL (lstat, err, 2, name, &kbuf);
   1.145 -   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
   1.146 -     return __xstat_conv (vers, &kbuf, buf);
   1.147 --  errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
   1.148 --  
   1.149 -- fail:
   1.150 --  __set_errno (errno_out);
   1.151 -+  __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
   1.152 -   return -1;
   1.153 - }
   1.154 - hidden_def (__lxstat)
   1.155 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/xstat.c glibc-2_9/sysdeps/unix/sysv/linux/alpha/xstat.c
   1.156 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/xstat.c	2004-03-11 03:58:44.000000000 +0100
   1.157 -+++ glibc-2_9/sysdeps/unix/sysv/linux/alpha/xstat.c	2009-02-02 22:01:30.000000000 +0100
   1.158 -@@ -35,27 +35,39 @@
   1.159 - __xstat (int vers, const char *name, struct stat *buf)
   1.160 - {
   1.161 -   INTERNAL_SYSCALL_DECL (err);
   1.162 --  int result, errno_out;
   1.163 -+  int result;
   1.164 -   struct kernel_stat kbuf;
   1.165 - 
   1.166 -+#if __ASSUME_STAT64_SYSCALL > 0
   1.167 -+  if (vers == _STAT_VER_KERNEL64)
   1.168 -+    {
   1.169 -+      result = INTERNAL_SYSCALL (stat64, err, 2, name, buf);
   1.170 -+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
   1.171 -+	return result;
   1.172 -+      __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
   1.173 -+      return -1;
   1.174 -+    }
   1.175 -+#elif defined __NR_stat64
   1.176 -   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
   1.177 -     {
   1.178 -+      int errno_out;
   1.179 -       result = INTERNAL_SYSCALL (stat64, err, 2, name, buf);
   1.180 -       if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
   1.181 - 	return result;
   1.182 -       errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
   1.183 -       if (errno_out != ENOSYS)
   1.184 --	goto fail;
   1.185 -+	{
   1.186 -+	  __set_errno (errno_out);
   1.187 -+	  return -1;
   1.188 -+	}
   1.189 -       __libc_missing_axp_stat64 = 1;
   1.190 -     }
   1.191 -+#endif
   1.192 - 
   1.193 -   result = INTERNAL_SYSCALL (stat, err, 2, name, &kbuf);
   1.194 -   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
   1.195 -     return __xstat_conv (vers, &kbuf, buf);
   1.196 --  errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
   1.197 --  
   1.198 -- fail:
   1.199 --  __set_errno (errno_out);
   1.200 -+  __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
   1.201 -   return -1;
   1.202 - }
   1.203 - hidden_def (__xstat)
   1.204 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/xstatconv.c glibc-2_9/sysdeps/unix/sysv/linux/alpha/xstatconv.c
   1.205 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/xstatconv.c	2004-03-11 03:58:44.000000000 +0100
   1.206 -+++ glibc-2_9/sysdeps/unix/sysv/linux/alpha/xstatconv.c	2009-02-02 22:01:30.000000000 +0100
   1.207 -@@ -22,9 +22,14 @@
   1.208 - #include <sys/stat.h>
   1.209 - #include <kernel_stat.h>
   1.210 - #include <xstatconv.h>
   1.211 -+#include <sys/syscall.h>
   1.212 - 
   1.213 - 
   1.214 -+#ifdef __NR_stat64
   1.215 -+# if __ASSUME_STAT64_SYSCALL == 0
   1.216 - int __libc_missing_axp_stat64;
   1.217 -+# endif
   1.218 -+#endif
   1.219 - 
   1.220 - int
   1.221 - __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
   1.222 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/xstatconv.h glibc-2_9/sysdeps/unix/sysv/linux/alpha/xstatconv.h
   1.223 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/alpha/xstatconv.h	2006-01-08 09:21:16.000000000 +0100
   1.224 -+++ glibc-2_9/sysdeps/unix/sysv/linux/alpha/xstatconv.h	2009-02-02 22:01:30.000000000 +0100
   1.225 -@@ -18,7 +18,12 @@
   1.226 -    02111-1307 USA.  */
   1.227 - 
   1.228 - #include <kernel-features.h>
   1.229 -+#include <sys/syscall.h>
   1.230 - 
   1.231 -+#ifdef __NR_stat64
   1.232 -+# if __ASSUME_STAT64_SYSCALL == 0
   1.233 - extern int __libc_missing_axp_stat64 attribute_hidden;
   1.234 -+# endif
   1.235 -+#endif
   1.236 - extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
   1.237 -   attribute_hidden;
   1.238 -diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/kernel-features.h glibc-2_9/sysdeps/unix/sysv/linux/kernel-features.h
   1.239 ---- glibc-2_9.orig/sysdeps/unix/sysv/linux/kernel-features.h	2008-08-01 23:51:04.000000000 +0200
   1.240 -+++ glibc-2_9/sysdeps/unix/sysv/linux/kernel-features.h	2009-02-02 22:01:30.000000000 +0100
   1.241 -@@ -395,6 +395,11 @@
   1.242 - # define __ASSUME_GETDENTS32_D_TYPE	1
   1.243 - #endif
   1.244 - 
   1.245 -+/* Starting with version 2.6.4, alpha stat64 syscalls are available.  */
   1.246 -+#if __LINUX_KERNEL_VERSION >= 0x020604 && defined __alpha__
   1.247 -+# define __ASSUME_STAT64_SYSCALL	1
   1.248 -+#endif
   1.249 -+
   1.250 - /* Starting with version 2.5.3, the initial location returned by `brk'
   1.251 -    after exec is always rounded up to the next page.  */
   1.252 - #if __LINUX_KERNEL_VERSION >= 132355