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