patches/glibc/ports-2.10.1/400-alpha-xstat.patch
author Arnaud Lacombe <lacombar@gmail.com>
Thu Aug 05 17:59:51 2010 +0200 (2010-08-05)
changeset 2069 366bd2b22675
permissions -rw-r--r--
complibs/mpc: fix MPC 0.8.1 build with MPFR 3.0.0

This is the change introduced by revision 734 of MPC repository.

Author: Paul Zimmermann <Paul.Zimmermann@loria.fr>
Revision log: [acos.c] fixed problem with GMP_RNDA (should be MPFR_RNDA, and code was wrong)

Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
yann@1625
     1
http://sources.redhat.com/bugzilla/show_bug.cgi?id=1026
yann@1625
     2
http://sourceware.org/ml/libc-alpha/2005-02/msg00122.html
yann@1625
     3
yann@1625
     4
2005-02-26  GOTO Masanori  <gotom@debian.or.jp>
yann@1625
     5
yann@1625
     6
	* sysdeps/unix/sysv/linux/kernel-features.h: Define
yann@1625
     7
	__ASSUME_STAT64_SYSCALL.
yann@1625
     8
	* sysdeps/unix/sysv/linux/alpha/fxstat.c: Check
yann@1625
     9
	__ASSUME_STAT64_SYSCALL.
yann@1625
    10
	* sysdeps/unix/sysv/linux/alpha/fxstatat.c: Likewise.
yann@1625
    11
	* sysdeps/unix/sysv/linux/alpha/lxstat.c: Likewise.
yann@1625
    12
	* sysdeps/unix/sysv/linux/alpha/xstat.c: Likewise.
yann@1625
    13
	* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Don't define
yann@1625
    14
	__libc_missing_axp_stat64 when it's not needed.
yann@1625
    15
	* sysdeps/unix/sysv/linux/alpha/xstatconv.h: Likewise.
yann@1625
    16
yann@1625
    17
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstat.c glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstat.c
yann@1625
    18
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstat.c	2009-05-16 10:36:20.000000000 +0200
yann@1625
    19
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstat.c	2009-11-13 00:50:45.000000000 +0100
yann@1625
    20
@@ -35,27 +35,39 @@
yann@1625
    21
 __fxstat (int vers, int fd, struct stat *buf)
yann@1625
    22
 {
yann@1625
    23
   INTERNAL_SYSCALL_DECL (err);
yann@1625
    24
-  int result, errno_out;
yann@1625
    25
+  int result;
yann@1625
    26
   struct kernel_stat kbuf;
yann@1625
    27
 
yann@1625
    28
+#if __ASSUME_STAT64_SYSCALL > 0
yann@1625
    29
+  if (vers == _STAT_VER_KERNEL64)
yann@1625
    30
+    {
yann@1625
    31
+      result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf);
yann@1625
    32
+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
    33
+	return result;
yann@1625
    34
+      __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
yann@1625
    35
+      return -1;
yann@1625
    36
+    }
yann@1625
    37
+#elif defined __NR_fstat64
yann@1625
    38
   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
yann@1625
    39
     {
yann@1625
    40
+      int errno_out;
yann@1625
    41
       result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf);
yann@1625
    42
       if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
    43
 	return result;
yann@1625
    44
       errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
    45
       if (errno_out != ENOSYS)
yann@1625
    46
-	goto fail;
yann@1625
    47
+	{
yann@1625
    48
+	  __set_errno (errno_out);
yann@1625
    49
+	  return -1;
yann@1625
    50
+	}
yann@1625
    51
       __libc_missing_axp_stat64 = 1;
yann@1625
    52
     }
yann@1625
    53
+#endif
yann@1625
    54
 
yann@1625
    55
   result = INTERNAL_SYSCALL (fstat, err, 2, fd, &kbuf);
yann@1625
    56
   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
    57
     return __xstat_conv (vers, &kbuf, buf);
yann@1625
    58
-  errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
    59
-  
yann@1625
    60
- fail:
yann@1625
    61
-  __set_errno (errno_out);
yann@1625
    62
+  __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
yann@1625
    63
   return -1;
yann@1625
    64
 }
yann@1625
    65
 hidden_def (__fxstat)
yann@1625
    66
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstatat.c glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstatat.c
yann@1625
    67
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstatat.c	2009-05-16 10:36:20.000000000 +0200
yann@1625
    68
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/fxstatat.c	2009-11-13 00:50:45.000000000 +0100
yann@1625
    69
@@ -65,6 +65,20 @@
yann@1625
    70
   int result, errno_out;
yann@1625
    71
   struct kernel_stat kst;
yann@1625
    72
 
yann@1625
    73
+#if __ASSUME_STAT64_SYSCALL > 0
yann@1625
    74
+  if (vers == _STAT_VER_KERNEL64)
yann@1625
    75
+    {
yann@1625
    76
+      if (flag & AT_SYMLINK_NOFOLLOW)
yann@1625
    77
+	result = INTERNAL_SYSCALL (lstat64, err, 2, file, st);
yann@1625
    78
+      else
yann@1625
    79
+	result = INTERNAL_SYSCALL (stat64, err, 2, file, st);
yann@1625
    80
+
yann@1625
    81
+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
    82
+	return result;
yann@1625
    83
+      errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
    84
+      goto fail;
yann@1625
    85
+    }
yann@1625
    86
+#elif defined __NR_stat64
yann@1625
    87
   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
yann@1625
    88
     {
yann@1625
    89
       if (flag & AT_SYMLINK_NOFOLLOW)
yann@1625
    90
@@ -79,6 +93,7 @@
yann@1625
    91
 	goto fail;
yann@1625
    92
       __libc_missing_axp_stat64 = 1;
yann@1625
    93
     }
yann@1625
    94
+#endif
yann@1625
    95
 
yann@1625
    96
   if (flag & AT_SYMLINK_NOFOLLOW)
yann@1625
    97
     result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst);
yann@1625
    98
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/lxstat.c glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/lxstat.c
yann@1625
    99
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/lxstat.c	2009-05-16 10:36:20.000000000 +0200
yann@1625
   100
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/lxstat.c	2009-11-13 00:50:45.000000000 +0100
yann@1625
   101
@@ -35,27 +35,39 @@
yann@1625
   102
 __lxstat (int vers, const char *name, struct stat *buf)
yann@1625
   103
 {
yann@1625
   104
   INTERNAL_SYSCALL_DECL (err);
yann@1625
   105
-  int result, errno_out;
yann@1625
   106
+  int result;
yann@1625
   107
   struct kernel_stat kbuf;
yann@1625
   108
 
yann@1625
   109
+#if __ASSUME_STAT64_SYSCALL > 0
yann@1625
   110
+  if (vers == _STAT_VER_KERNEL64)
yann@1625
   111
+    {
yann@1625
   112
+      result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf);
yann@1625
   113
+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
   114
+	return result;
yann@1625
   115
+      __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
yann@1625
   116
+      return -1;
yann@1625
   117
+    }
yann@1625
   118
+#elif defined __NR_lstat64
yann@1625
   119
   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
yann@1625
   120
     {
yann@1625
   121
+      int errno_out;
yann@1625
   122
       result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf);
yann@1625
   123
       if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
   124
 	return result;
yann@1625
   125
       errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
   126
       if (errno_out != ENOSYS)
yann@1625
   127
-	goto fail;
yann@1625
   128
+	{
yann@1625
   129
+	  __set_errno (errno_out);
yann@1625
   130
+	  return -1;
yann@1625
   131
+	}
yann@1625
   132
       __libc_missing_axp_stat64 = 1;
yann@1625
   133
     }
yann@1625
   134
+#endif
yann@1625
   135
 
yann@1625
   136
   result = INTERNAL_SYSCALL (lstat, err, 2, name, &kbuf);
yann@1625
   137
   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
   138
     return __xstat_conv (vers, &kbuf, buf);
yann@1625
   139
-  errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
   140
-  
yann@1625
   141
- fail:
yann@1625
   142
-  __set_errno (errno_out);
yann@1625
   143
+  __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
yann@1625
   144
   return -1;
yann@1625
   145
 }
yann@1625
   146
 hidden_def (__lxstat)
yann@1625
   147
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstat.c glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstat.c
yann@1625
   148
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstat.c	2009-05-16 10:36:20.000000000 +0200
yann@1625
   149
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstat.c	2009-11-13 00:50:45.000000000 +0100
yann@1625
   150
@@ -35,27 +35,39 @@
yann@1625
   151
 __xstat (int vers, const char *name, struct stat *buf)
yann@1625
   152
 {
yann@1625
   153
   INTERNAL_SYSCALL_DECL (err);
yann@1625
   154
-  int result, errno_out;
yann@1625
   155
+  int result;
yann@1625
   156
   struct kernel_stat kbuf;
yann@1625
   157
 
yann@1625
   158
+#if __ASSUME_STAT64_SYSCALL > 0
yann@1625
   159
+  if (vers == _STAT_VER_KERNEL64)
yann@1625
   160
+    {
yann@1625
   161
+      result = INTERNAL_SYSCALL (stat64, err, 2, name, buf);
yann@1625
   162
+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
   163
+	return result;
yann@1625
   164
+      __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
yann@1625
   165
+      return -1;
yann@1625
   166
+    }
yann@1625
   167
+#elif defined __NR_stat64
yann@1625
   168
   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
yann@1625
   169
     {
yann@1625
   170
+      int errno_out;
yann@1625
   171
       result = INTERNAL_SYSCALL (stat64, err, 2, name, buf);
yann@1625
   172
       if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
   173
 	return result;
yann@1625
   174
       errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
   175
       if (errno_out != ENOSYS)
yann@1625
   176
-	goto fail;
yann@1625
   177
+	{
yann@1625
   178
+	  __set_errno (errno_out);
yann@1625
   179
+	  return -1;
yann@1625
   180
+	}
yann@1625
   181
       __libc_missing_axp_stat64 = 1;
yann@1625
   182
     }
yann@1625
   183
+#endif
yann@1625
   184
 
yann@1625
   185
   result = INTERNAL_SYSCALL (stat, err, 2, name, &kbuf);
yann@1625
   186
   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
yann@1625
   187
     return __xstat_conv (vers, &kbuf, buf);
yann@1625
   188
-  errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
yann@1625
   189
-  
yann@1625
   190
- fail:
yann@1625
   191
-  __set_errno (errno_out);
yann@1625
   192
+  __set_errno (INTERNAL_SYSCALL_ERRNO (result, err));
yann@1625
   193
   return -1;
yann@1625
   194
 }
yann@1625
   195
 hidden_def (__xstat)
yann@1625
   196
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.c glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.c
yann@1625
   197
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.c	2009-05-16 10:36:20.000000000 +0200
yann@1625
   198
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.c	2009-11-13 00:50:45.000000000 +0100
yann@1625
   199
@@ -22,9 +22,14 @@
yann@1625
   200
 #include <sys/stat.h>
yann@1625
   201
 #include <kernel_stat.h>
yann@1625
   202
 #include <xstatconv.h>
yann@1625
   203
+#include <sys/syscall.h>
yann@1625
   204
 
yann@1625
   205
 
yann@1625
   206
+#ifdef __NR_stat64
yann@1625
   207
+# if __ASSUME_STAT64_SYSCALL == 0
yann@1625
   208
 int __libc_missing_axp_stat64;
yann@1625
   209
+# endif
yann@1625
   210
+#endif
yann@1625
   211
 
yann@1625
   212
 int
yann@1625
   213
 __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
yann@1625
   214
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.h glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.h
yann@1625
   215
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.h	2009-05-16 10:36:20.000000000 +0200
yann@1625
   216
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/xstatconv.h	2009-11-13 00:50:45.000000000 +0100
yann@1625
   217
@@ -18,7 +18,12 @@
yann@1625
   218
    02111-1307 USA.  */
yann@1625
   219
 
yann@1625
   220
 #include <kernel-features.h>
yann@1625
   221
+#include <sys/syscall.h>
yann@1625
   222
 
yann@1625
   223
+#ifdef __NR_stat64
yann@1625
   224
+# if __ASSUME_STAT64_SYSCALL == 0
yann@1625
   225
 extern int __libc_missing_axp_stat64 attribute_hidden;
yann@1625
   226
+# endif
yann@1625
   227
+#endif
yann@1625
   228
 extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
yann@1625
   229
   attribute_hidden;
yann@1625
   230
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/fxstat.c glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/fxstat.c
yann@1625
   231
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/fxstatat.c glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/fxstatat.c
yann@1625
   232
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/lxstat.c glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/lxstat.c
yann@1625
   233
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/xstat.c glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/xstat.c
yann@1625
   234
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c
yann@1625
   235
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.h glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.h
yann@1625
   236
diff -durN glibc-2.10.1.orig/sysdeps/unix/sysv/linux/kernel-features.h glibc-2.10.1/sysdeps/unix/sysv/linux/kernel-features.h
yann@1625
   237
--- glibc-2.10.1.orig/sysdeps/unix/sysv/linux/kernel-features.h	2009-05-09 08:54:20.000000000 +0200
yann@1625
   238
+++ glibc-2.10.1/sysdeps/unix/sysv/linux/kernel-features.h	2009-11-13 00:50:45.000000000 +0100
yann@1625
   239
@@ -395,6 +395,11 @@
yann@1625
   240
 # define __ASSUME_GETDENTS32_D_TYPE	1
yann@1625
   241
 #endif
yann@1625
   242
 
yann@1625
   243
+/* Starting with version 2.6.4, alpha stat64 syscalls are available.  */
yann@1625
   244
+#if __LINUX_KERNEL_VERSION >= 0x020604 && defined __alpha__
yann@1625
   245
+# define __ASSUME_STAT64_SYSCALL	1
yann@1625
   246
+#endif
yann@1625
   247
+
yann@1625
   248
 /* Starting with version 2.5.3, the initial location returned by `brk'
yann@1625
   249
    after exec is always rounded up to the next page.  */
yann@1625
   250
 #if __LINUX_KERNEL_VERSION >= 132355