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