mirror of git://sourceware.org/git/glibc.git
				
				
				
			* sysdeps/powerpc/fpu/fenv_libc.h: Add libm_hidden_proto for
__fe_nomask_env. * sysdeps/powerpc/fpu/fe_nomask.c: Add libm_hidden_def. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: Likewise. * sysdeps/powerpc/bits/fenv.h: Make safe for C++. * sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: New file. * sysdeps/powerpc/fpu/fegetexcept.c (__fegetexcept): Rename function from fegetexcept and make old name weak alias. * include/fenv.h: Declare __fegetexcept. * sysdeps/powerpc/fpu/fedisblxcpt.c: Use __fegetexcept instead of fegetexcept. * sysdeps/powerpc/fpu/feenablxcpt.c: Likewise. * sysdeps/powerpc/fpu/fraiseexcpt.c (__feraiseexcept): Avoid call to fetestexcept. * sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Use __frexpl instead of frexpl to avoid local PLT. * math/s_significandl.c (__significandl): Use __ilogbl instead of ilogbl to avoid local PLT. * sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Use __ldexpl instead of ldexpl to avoid local PLT. * sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use __roundl not roundl to avoid local PLT. * sysdeps/ieee754/ldbl-128/e_j0l.c: Use function names which avoid local PLTs. Use __sincosl instead of separate sinl and cosl calls. * sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
This commit is contained in:
		
							parent
							
								
									2dc4a2fd9e
								
							
						
					
					
						commit
						246ec41199
					
				
							
								
								
									
										30
									
								
								ChangeLog
								
								
								
								
							
							
						
						
									
										30
									
								
								ChangeLog
								
								
								
								
							|  | @ -1,5 +1,35 @@ | |||
| 2008-04-11  Ulrich Drepper  <drepper@redhat.com> | ||||
| 
 | ||||
| 	* sysdeps/powerpc/fpu/fenv_libc.h: Add libm_hidden_proto for | ||||
| 	__fe_nomask_env. | ||||
| 	* sysdeps/powerpc/fpu/fe_nomask.c: Add libm_hidden_def. | ||||
| 	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: Likewise. | ||||
| 	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: Likewise. | ||||
| 
 | ||||
| 	* sysdeps/powerpc/bits/fenv.h: Make safe for C++. | ||||
| 
 | ||||
| 	* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: New file. | ||||
| 	* sysdeps/powerpc/fpu/fegetexcept.c (__fegetexcept): Rename | ||||
| 	function from fegetexcept and make old name weak alias. | ||||
| 	* include/fenv.h: Declare __fegetexcept. | ||||
| 	* sysdeps/powerpc/fpu/fedisblxcpt.c: Use __fegetexcept instead of | ||||
| 	fegetexcept. | ||||
| 	* sysdeps/powerpc/fpu/feenablxcpt.c: Likewise. | ||||
| 	* sysdeps/powerpc/fpu/fraiseexcpt.c (__feraiseexcept): Avoid call | ||||
| 	to fetestexcept. | ||||
| 	* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Use __frexpl | ||||
| 	instead of frexpl to avoid local PLT. | ||||
| 	* math/s_significandl.c (__significandl): Use __ilogbl instead of | ||||
| 	ilogbl to avoid local PLT. | ||||
| 	* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Use __ldexpl | ||||
| 	instead of ldexpl to avoid local PLT. | ||||
| 	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use | ||||
| 	__roundl not roundl to avoid local PLT. | ||||
| 	* sysdeps/ieee754/ldbl-128/e_j0l.c: Use function names which avoid | ||||
| 	local PLTs.  Use __sincosl instead of separate sinl and cosl | ||||
| 	calls. | ||||
| 	* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise. | ||||
| 
 | ||||
| 	* sysdeps/unix/sysv/linux/configure.in: Bump minimal kernel | ||||
| 	version for ppc64 to 2.4.21 since without it makecontext will fail. | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ | |||
| /* Now define the internal interfaces.  */ | ||||
| 
 | ||||
| extern int __feclearexcept (int __excepts); | ||||
| extern int __fegetexcept (void); | ||||
| extern int __fegetexceptflag (fexcept_t *__flagp, int __excepts); | ||||
| extern int __feraiseexcept (int __excepts); | ||||
| extern int __fesetexceptflag (__const fexcept_t *__flagp, int __excepts); | ||||
|  |  | |||
|  | @ -34,6 +34,6 @@ static char rcsid[] = "$NetBSD: $"; | |||
| 	long double x; | ||||
| #endif | ||||
| { | ||||
| 	return __ieee754_scalbl(x,(long double) -ilogbl(x)); | ||||
| 	return __ieee754_scalbl(x,(long double) -__ilogbl(x)); | ||||
| } | ||||
| weak_alias (__significandl, significandl) | ||||
|  |  | |||
|  | @ -768,16 +768,15 @@ __ieee754_j0l (long double x) | |||
|      = 1/sqrt(2) * (sin(x) - cos(x)) | ||||
|      sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) | ||||
|      cf. Fdlibm.  */ | ||||
|   c = cosl (xx); | ||||
|   s = sinl (xx); | ||||
|   __sincosl (xx, &s, &c); | ||||
|   ss = s - c; | ||||
|   cc = s + c; | ||||
|   z = -cosl (xx + xx); | ||||
|   z = -__cosl (xx + xx); | ||||
|   if ((s * c) < 0) | ||||
|     cc = z / ss; | ||||
|   else | ||||
|     ss = z / cc; | ||||
|   z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx); | ||||
|   z = ONEOSQPI * (p * cc - q * ss) / __ieee754_sqrtl (xx); | ||||
|   return z; | ||||
| } | ||||
| 
 | ||||
|  | @ -836,7 +835,7 @@ long double | |||
|       /* 0 <= x <= 2 */ | ||||
|       z = xx * xx; | ||||
|       p = neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D); | ||||
|       p = TWOOPI * logl(x) * __ieee754_j0l(x) + p; | ||||
|       p = TWOOPI * __ieee754_logl (x) * __ieee754_j0l (x) + p; | ||||
|       return p; | ||||
|     } | ||||
| 
 | ||||
|  | @ -908,15 +907,14 @@ long double | |||
|      = 1/sqrt(2) * (sin(x) - cos(x)) | ||||
|      sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) | ||||
|      cf. Fdlibm.  */ | ||||
|   c = cosl (x); | ||||
|   s = sinl (x); | ||||
|   __sincosl (x, &s, &c); | ||||
|   ss = s - c; | ||||
|   cc = s + c; | ||||
|   z = -cosl (x + x); | ||||
|   z = -__cosl (x + x); | ||||
|   if ((s * c) < 0) | ||||
|     cc = z / ss; | ||||
|   else | ||||
|     ss = z / cc; | ||||
|   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x); | ||||
|   z = ONEOSQPI * (p * ss + q * cc) / __ieee754_sqrtl (x); | ||||
|   return z; | ||||
| } | ||||
|  |  | |||
|  | @ -773,16 +773,15 @@ __ieee754_j1l (long double x) | |||
|      sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4) | ||||
|      = -1/sqrt(2) * (sin(x) + cos(x)) | ||||
|      cf. Fdlibm.  */ | ||||
|   c = cosl (xx); | ||||
|   s = sinl (xx); | ||||
|   __sincosl (xx, &s, &c); | ||||
|   ss = -s - c; | ||||
|   cc = s - c; | ||||
|   z = cosl (xx + xx); | ||||
|   z = __cosl (xx + xx); | ||||
|   if ((s * c) > 0) | ||||
|     cc = z / ss; | ||||
|   else | ||||
|     ss = z / cc; | ||||
|   z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx); | ||||
|   z = ONEOSQPI * (p * cc - q * ss) / __ieee754_sqrtl (xx); | ||||
|   if (x < 0) | ||||
|     z = -z; | ||||
|   return z; | ||||
|  | @ -844,7 +843,7 @@ __ieee754_y1l (long double x) | |||
|       z = xx * xx; | ||||
|       p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D); | ||||
|       p = -TWOOPI / xx + p; | ||||
|       p = TWOOPI * logl(x) * __ieee754_j1l (x) + p; | ||||
|       p = TWOOPI * __ieee754_logl (x) * __ieee754_j1l (x) + p; | ||||
|       return p; | ||||
|     } | ||||
| 
 | ||||
|  | @ -915,15 +914,14 @@ __ieee754_y1l (long double x) | |||
|      sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4) | ||||
|      = -1/sqrt(2) * (sin(x) + cos(x)) | ||||
|      cf. Fdlibm.  */ | ||||
|   c = cosl (xx); | ||||
|   s = sinl (xx); | ||||
|   __sincosl (xx, &s, &c); | ||||
|   ss = -s - c; | ||||
|   cc = s - c; | ||||
|   z = cosl (xx + xx); | ||||
|   z = __cosl (xx + xx); | ||||
|   if ((s * c) > 0) | ||||
|     cc = z / ss; | ||||
|   else | ||||
|     ss = z / cc; | ||||
|   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx); | ||||
|   z = ONEOSQPI * (p * ss + q * cc) / __ieee754_sqrtl (xx); | ||||
|   return z; | ||||
| } | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Quad-precision floating point e^x.
 | ||||
|    Copyright (C) 1999,2004,2006 Free Software Foundation, Inc. | ||||
|    Copyright (C) 1999,2004,2006, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
|    Contributed by Jakub Jelinek <jj@ultra.linux.cz> | ||||
|    Partly based on double-precision code | ||||
|  | @ -148,15 +148,15 @@ __ieee754_expl (long double x) | |||
|       fesetround (FE_TONEAREST); | ||||
| #endif | ||||
| 
 | ||||
|       n = roundl(x*M_1_LN2); | ||||
|       n = __roundl (x*M_1_LN2); | ||||
|       x = x-n*M_LN2_0; | ||||
|       xl = n*M_LN2_1; | ||||
| 
 | ||||
|       tval1 = roundl(x*TWO8); | ||||
|       tval1 = __roundl (x*TWO8); | ||||
|       x -= __expl_table[T_EXPL_ARG1+2*tval1]; | ||||
|       xl -= __expl_table[T_EXPL_ARG1+2*tval1+1]; | ||||
| 
 | ||||
|       tval2 = roundl(x*TWO15); | ||||
|       tval2 = __roundl (x*TWO15); | ||||
|       x -= __expl_table[T_EXPL_ARG2+2*tval2]; | ||||
|       xl -= __expl_table[T_EXPL_ARG2+2*tval2+1]; | ||||
| 
 | ||||
|  |  | |||
|  | @ -152,7 +152,7 @@ __expm1l (long double x) | |||
|   exp(x) - 1 = 2^k (qx + 1) - 1 | ||||
|              = 2^k qx + 2^k - 1.  */ | ||||
| 
 | ||||
|   px = ldexpl (1.0L, k); | ||||
|   px = __ldexpl (1.0L, k); | ||||
|   x = px * qx + (px - 1.0); | ||||
|   return x; | ||||
| } | ||||
|  |  | |||
|  | @ -121,12 +121,6 @@ static const long double maxlog = 1.1356523406294143949491931077970764891253E4L; | |||
| static const long double big = 2e300L; | ||||
| static const long double zero = 0.0L; | ||||
| 
 | ||||
| #if 1 | ||||
| /* Make sure these are prototyped.  */ | ||||
| long double frexpl (long double, int *); | ||||
| long double ldexpl (long double, int); | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| long double | ||||
| __log1pl (long double xm1) | ||||
|  | @ -161,7 +155,7 @@ __log1pl (long double xm1) | |||
|   /* Separate mantissa from exponent.  */ | ||||
| 
 | ||||
|   /* Use frexp used so that denormal numbers will be handled properly.  */ | ||||
|   x = frexpl (x, &e); | ||||
|   x = __frexpl (x, &e); | ||||
| 
 | ||||
|   /* Logarithm using log(x) = z + z^3 P(z^2)/Q(z^2),
 | ||||
|      where z = 2(x-1)/x+1).  */ | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| /* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
 | ||||
| /* Copyright (C) 1997, 1998, 1999, 2008 Free Software Foundation, Inc.
 | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|  | @ -136,6 +136,8 @@ extern const fenv_t __fe_enabled_env; | |||
| extern const fenv_t __fe_nonieee_env; | ||||
| # define FE_NONIEEE_ENV	(&__fe_nonieee_env) | ||||
| 
 | ||||
| __BEGIN_DECLS | ||||
| 
 | ||||
| /* Floating-point environment with all exceptions enabled.  Note that
 | ||||
|    just evaluating this value does not change the processor exception mode. | ||||
|    Passing this mask to fesetenv will result in a prctl syscall to change | ||||
|  | @ -152,4 +154,7 @@ extern const fenv_t *__fe_nomask_env (void); | |||
|    this allows the fastest possible floating point execution.*/ | ||||
| extern const fenv_t *__fe_mask_env (void); | ||||
| # define FE_MASK_ENV	FE_DFL_ENV | ||||
| 
 | ||||
| __END_DECLS | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Procedure definition for FE_NOMASK_ENV.
 | ||||
|    Copyright (C) 1997 Free Software Foundation, Inc. | ||||
|    Copyright (C) 1997, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|  | @ -17,7 +17,7 @@ | |||
|    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||||
|    02111-1307 USA.  */ | ||||
| 
 | ||||
| #include <fenv.h> | ||||
| #include <fenv_libc.h> | ||||
| #include <errno.h> | ||||
| 
 | ||||
| /* This is a generic stub. An OS specific override is required to set
 | ||||
|  | @ -30,4 +30,5 @@ __fe_nomask_env(void) | |||
|   __set_errno (ENOSYS); | ||||
|   return FE_ENABLED_ENV; | ||||
| } | ||||
| libm_hidden_def (__fe_nomask_env) | ||||
| stub_warning (__fe_nomask_env) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Disable floating-point exceptions.
 | ||||
|    Copyright (C) 2000 Free Software Foundation, Inc. | ||||
|    Copyright (C) 2000, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
|    Contributed by Geoffrey Keating <geoffk@geoffk.org>, 2000. | ||||
| 
 | ||||
|  | @ -26,7 +26,7 @@ fedisableexcept (int excepts) | |||
|   fenv_union_t fe; | ||||
|   int result, new; | ||||
| 
 | ||||
|   result = fegetexcept (); | ||||
|   result = __fegetexcept (); | ||||
| 
 | ||||
|   if ((excepts & FE_ALL_INVALID) == FE_ALL_INVALID) | ||||
|     excepts = (excepts | FE_INVALID) & ~ FE_ALL_INVALID; | ||||
|  | @ -44,7 +44,7 @@ fedisableexcept (int excepts) | |||
|     fe.l[1] &= ~(1 << (31 - FPSCR_VE)); | ||||
|   fesetenv_register (fe.fenv); | ||||
| 
 | ||||
|   new = fegetexcept (); | ||||
|   new = __fegetexcept (); | ||||
|   if (new == 0 && result != 0) | ||||
|     (void)__fe_mask_env (); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Enable floating-point exceptions.
 | ||||
|    Copyright (C) 2000 Free Software Foundation, Inc. | ||||
|    Copyright (C) 2000, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
|    Contributed by Geoffrey Keating <geoffk@geoffk.org>, 2000. | ||||
| 
 | ||||
|  | @ -26,7 +26,7 @@ feenableexcept (int excepts) | |||
|   fenv_union_t fe; | ||||
|   int result, new; | ||||
| 
 | ||||
|   result = fegetexcept (); | ||||
|   result = __fegetexcept (); | ||||
| 
 | ||||
|   if ((excepts & FE_ALL_INVALID) == FE_ALL_INVALID) | ||||
|     excepts = (excepts | FE_INVALID) & ~ FE_ALL_INVALID; | ||||
|  | @ -44,7 +44,7 @@ feenableexcept (int excepts) | |||
|     fe.l[1] |= (1 << (31 - FPSCR_VE)); | ||||
|   fesetenv_register (fe.fenv); | ||||
| 
 | ||||
|   new = fegetexcept (); | ||||
|   new = __fegetexcept (); | ||||
|   if (new != 0 && result == 0) | ||||
|     (void)__fe_nomask_env (); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Get floating-point exceptions.
 | ||||
|    Copyright (C) 2000 Free Software Foundation, Inc. | ||||
|    Copyright (C) 2000, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
|    Contributed by Geoffrey Keating <geoffk@geoffk.org>, 2000. | ||||
| 
 | ||||
|  | @ -21,7 +21,7 @@ | |||
| #include <fenv_libc.h> | ||||
| 
 | ||||
| int | ||||
| fegetexcept (void) | ||||
| __fegetexcept (void) | ||||
| { | ||||
|   fenv_union_t fe; | ||||
|   int result = 0; | ||||
|  | @ -41,3 +41,4 @@ fegetexcept (void) | |||
| 
 | ||||
|   return result; | ||||
| } | ||||
| weak_alias (__fegetexcept, fegetexcept) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Internal libc stuff for floating point environment routines.
 | ||||
|    Copyright (C) 1997, 2006 Free Software Foundation, Inc. | ||||
|    Copyright (C) 1997, 2006, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|  | @ -22,6 +22,8 @@ | |||
| 
 | ||||
| #include <fenv.h> | ||||
| 
 | ||||
| libm_hidden_proto (__fe_nomask_env) | ||||
| 
 | ||||
| /* The sticky bits in the FPSCR indicating exceptions have occurred.  */ | ||||
| #define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID) | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Raise given exceptions.
 | ||||
|    Copyright (C) 1997,99,2000,01,02 Free Software Foundation, Inc. | ||||
|    Copyright (C) 1997,1999-2002, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|  | @ -45,12 +45,15 @@ __feraiseexcept (int excepts) | |||
|      triggering any appropriate exceptions.  */ | ||||
|   fesetenv_register (u.fenv); | ||||
| 
 | ||||
|   if ((excepts & FE_INVALID) | ||||
|   if ((excepts & FE_INVALID)) | ||||
|     { | ||||
|       /* For some reason, some PowerPC chips (the 601, in particular)
 | ||||
| 	 don't have FE_INVALID_SOFTWARE implemented.  Detect this | ||||
| 	 case and raise FE_INVALID_SNAN instead.  */ | ||||
|       && !fetestexcept (FE_INVALID)) | ||||
|       u.fenv = fegetenv_register (); | ||||
|       if ((u.l[1] & FE_INVALID) == 0) | ||||
| 	set_fpscr_bit (FPSCR_VXSNAN); | ||||
|     } | ||||
| 
 | ||||
|   /* Success.  */ | ||||
|   return 0; | ||||
|  |  | |||
|  | @ -22,23 +22,170 @@ if test -n "$sysheaders"; then | |||
| fi | ||||
| 
 | ||||
| 
 | ||||
| echo "$as_me:$LINENO: checking for egrep" >&5 | ||||
| echo $ECHO_N "checking for egrep... $ECHO_C" >&6 | ||||
| if test "${ac_cv_prog_egrep+set}" = set; then | ||||
| { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 | ||||
| echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } | ||||
| if test "${ac_cv_path_GREP+set}" = set; then | ||||
|   echo $ECHO_N "(cached) $ECHO_C" >&6 | ||||
| else | ||||
|   if echo a | (grep -E '(a|b)') >/dev/null 2>&1 | ||||
|     then ac_cv_prog_egrep='grep -E' | ||||
|     else ac_cv_prog_egrep='egrep' | ||||
|   # Extract the first word of "grep ggrep" to use in msg output | ||||
| if test -z "$GREP"; then | ||||
| set dummy grep ggrep; ac_prog_name=$2 | ||||
| if test "${ac_cv_path_GREP+set}" = set; then | ||||
|   echo $ECHO_N "(cached) $ECHO_C" >&6 | ||||
| else | ||||
|   ac_path_GREP_found=false | ||||
| # Loop through the user's path and test for each of PROGNAME-LIST | ||||
| as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||||
| for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin | ||||
| do | ||||
|   IFS=$as_save_IFS | ||||
|   test -z "$as_dir" && as_dir=. | ||||
|   for ac_prog in grep ggrep; do | ||||
|   for ac_exec_ext in '' $ac_executable_extensions; do | ||||
|     ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" | ||||
|     { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue | ||||
|     # Check for GNU ac_path_GREP and select it if it is found. | ||||
|   # Check for GNU $ac_path_GREP | ||||
| case `"$ac_path_GREP" --version 2>&1` in | ||||
| *GNU*) | ||||
|   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; | ||||
| *) | ||||
|   ac_count=0 | ||||
|   echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" | ||||
|   while : | ||||
|   do | ||||
|     cat "conftest.in" "conftest.in" >"conftest.tmp" | ||||
|     mv "conftest.tmp" "conftest.in" | ||||
|     cp "conftest.in" "conftest.nl" | ||||
|     echo 'GREP' >> "conftest.nl" | ||||
|     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break | ||||
|     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break | ||||
|     ac_count=`expr $ac_count + 1` | ||||
|     if test $ac_count -gt ${ac_path_GREP_max-0}; then | ||||
|       # Best one so far, save it but keep looking for a better one | ||||
|       ac_cv_path_GREP="$ac_path_GREP" | ||||
|       ac_path_GREP_max=$ac_count | ||||
|     fi | ||||
| fi | ||||
| echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 | ||||
| echo "${ECHO_T}$ac_cv_prog_egrep" >&6 | ||||
|  EGREP=$ac_cv_prog_egrep | ||||
|     # 10*(2^10) chars as input seems more than enough | ||||
|     test $ac_count -gt 10 && break | ||||
|   done | ||||
|   rm -f conftest.in conftest.tmp conftest.nl conftest.out;; | ||||
| esac | ||||
| 
 | ||||
| 
 | ||||
| echo "$as_me:$LINENO: checking installed Linux kernel header files" >&5 | ||||
| echo $ECHO_N "checking installed Linux kernel header files... $ECHO_C" >&6 | ||||
|     $ac_path_GREP_found && break 3 | ||||
|   done | ||||
| done | ||||
| 
 | ||||
| done | ||||
| IFS=$as_save_IFS | ||||
| 
 | ||||
| 
 | ||||
| fi | ||||
| 
 | ||||
| GREP="$ac_cv_path_GREP" | ||||
| if test -z "$GREP"; then | ||||
|   { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 | ||||
| echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} | ||||
|    { (exit 1); exit 1; }; } | ||||
| fi | ||||
| 
 | ||||
| else | ||||
|   ac_cv_path_GREP=$GREP | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| fi | ||||
| { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 | ||||
| echo "${ECHO_T}$ac_cv_path_GREP" >&6; } | ||||
|  GREP="$ac_cv_path_GREP" | ||||
| 
 | ||||
| 
 | ||||
| { echo "$as_me:$LINENO: checking for egrep" >&5 | ||||
| echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } | ||||
| if test "${ac_cv_path_EGREP+set}" = set; then | ||||
|   echo $ECHO_N "(cached) $ECHO_C" >&6 | ||||
| else | ||||
|   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 | ||||
|    then ac_cv_path_EGREP="$GREP -E" | ||||
|    else | ||||
|      # Extract the first word of "egrep" to use in msg output | ||||
| if test -z "$EGREP"; then | ||||
| set dummy egrep; ac_prog_name=$2 | ||||
| if test "${ac_cv_path_EGREP+set}" = set; then | ||||
|   echo $ECHO_N "(cached) $ECHO_C" >&6 | ||||
| else | ||||
|   ac_path_EGREP_found=false | ||||
| # Loop through the user's path and test for each of PROGNAME-LIST | ||||
| as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||||
| for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin | ||||
| do | ||||
|   IFS=$as_save_IFS | ||||
|   test -z "$as_dir" && as_dir=. | ||||
|   for ac_prog in egrep; do | ||||
|   for ac_exec_ext in '' $ac_executable_extensions; do | ||||
|     ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" | ||||
|     { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue | ||||
|     # Check for GNU ac_path_EGREP and select it if it is found. | ||||
|   # Check for GNU $ac_path_EGREP | ||||
| case `"$ac_path_EGREP" --version 2>&1` in | ||||
| *GNU*) | ||||
|   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; | ||||
| *) | ||||
|   ac_count=0 | ||||
|   echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" | ||||
|   while : | ||||
|   do | ||||
|     cat "conftest.in" "conftest.in" >"conftest.tmp" | ||||
|     mv "conftest.tmp" "conftest.in" | ||||
|     cp "conftest.in" "conftest.nl" | ||||
|     echo 'EGREP' >> "conftest.nl" | ||||
|     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break | ||||
|     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break | ||||
|     ac_count=`expr $ac_count + 1` | ||||
|     if test $ac_count -gt ${ac_path_EGREP_max-0}; then | ||||
|       # Best one so far, save it but keep looking for a better one | ||||
|       ac_cv_path_EGREP="$ac_path_EGREP" | ||||
|       ac_path_EGREP_max=$ac_count | ||||
|     fi | ||||
|     # 10*(2^10) chars as input seems more than enough | ||||
|     test $ac_count -gt 10 && break | ||||
|   done | ||||
|   rm -f conftest.in conftest.tmp conftest.nl conftest.out;; | ||||
| esac | ||||
| 
 | ||||
| 
 | ||||
|     $ac_path_EGREP_found && break 3 | ||||
|   done | ||||
| done | ||||
| 
 | ||||
| done | ||||
| IFS=$as_save_IFS | ||||
| 
 | ||||
| 
 | ||||
| fi | ||||
| 
 | ||||
| EGREP="$ac_cv_path_EGREP" | ||||
| if test -z "$EGREP"; then | ||||
|   { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 | ||||
| echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} | ||||
|    { (exit 1); exit 1; }; } | ||||
| fi | ||||
| 
 | ||||
| else | ||||
|   ac_cv_path_EGREP=$EGREP | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
|    fi | ||||
| fi | ||||
| { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 | ||||
| echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } | ||||
|  EGREP="$ac_cv_path_EGREP" | ||||
| 
 | ||||
| 
 | ||||
| { echo "$as_me:$LINENO: checking installed Linux kernel header files" >&5 | ||||
| echo $ECHO_N "checking installed Linux kernel header files... $ECHO_C" >&6; } | ||||
| if test "${libc_cv_linux2010+set}" = set; then | ||||
|   echo $ECHO_N "(cached) $ECHO_C" >&6 | ||||
| else | ||||
|  | @ -62,8 +209,8 @@ fi | |||
| rm -f conftest* | ||||
| 
 | ||||
| fi | ||||
| echo "$as_me:$LINENO: result: $libc_cv_linux2010" >&5 | ||||
| echo "${ECHO_T}$libc_cv_linux2010" >&6 | ||||
| { echo "$as_me:$LINENO: result: $libc_cv_linux2010" >&5 | ||||
| echo "${ECHO_T}$libc_cv_linux2010" >&6; } | ||||
| if test "$libc_cv_linux2010" != '2.0.10 or later'; then | ||||
|   { { echo "$as_me:$LINENO: error: GNU libc requires kernel header files from | ||||
| Linux 2.0.10 or later to be installed before configuring. | ||||
|  | @ -120,7 +267,7 @@ case "$machine" in | |||
|     arch_minimum_kernel=2.0.10 | ||||
|     ;; | ||||
|   powerpc/powerpc64) | ||||
|     arch_minimum_kernel=2.4.19 | ||||
|     arch_minimum_kernel=2.4.21 | ||||
|     ;; | ||||
|   s390/s390-32) | ||||
|     libc_cv_gcc_unwind_find_fde=yes | ||||
|  | @ -166,8 +313,8 @@ else | |||
| fi | ||||
| 
 | ||||
| if test -n "$minimum_kernel"; then | ||||
|   echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5 | ||||
| echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&6 | ||||
|   { echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5 | ||||
| echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&6; } | ||||
|   decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`; | ||||
|   abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`; | ||||
|   cat >conftest.$ac_ext <<_ACEOF | ||||
|  | @ -189,8 +336,8 @@ else | |||
| fi | ||||
| rm -f conftest* | ||||
| 
 | ||||
|   echo "$as_me:$LINENO: result: $libc_minimum_kernel" >&5 | ||||
| echo "${ECHO_T}$libc_minimum_kernel" >&6 | ||||
|   { echo "$as_me:$LINENO: result: $libc_minimum_kernel" >&5 | ||||
| echo "${ECHO_T}$libc_minimum_kernel" >&6; } | ||||
|   if test "$libc_minimum_kernel" = ok; then | ||||
|     cat >>confdefs.h <<_ACEOF | ||||
| #define __LINUX_KERNEL_VERSION $decnum | ||||
|  | @ -333,8 +480,8 @@ if test $host = $build; then | |||
|   else | ||||
|     ac_prefix=$ac_default_prefix | ||||
|   fi | ||||
|   echo "$as_me:$LINENO: checking for symlinks in ${ac_prefix}/include" >&5 | ||||
| echo $ECHO_N "checking for symlinks in ${ac_prefix}/include... $ECHO_C" >&6 | ||||
|   { echo "$as_me:$LINENO: checking for symlinks in ${ac_prefix}/include" >&5 | ||||
| echo $ECHO_N "checking for symlinks in ${ac_prefix}/include... $ECHO_C" >&6; } | ||||
|   ac_message= | ||||
|   if test -L ${ac_prefix}/include/net; then | ||||
|     ac_message="$ac_message | ||||
|  | @ -355,8 +502,8 @@ Delete the links and re-run configure, or better still, move the entire | |||
| ${ac_prefix}/include directory out of the way." >&2;} | ||||
|    { (exit 1); exit 1; }; } | ||||
|   else | ||||
|     echo "$as_me:$LINENO: result: ok" >&5 | ||||
| echo "${ECHO_T}ok" >&6 | ||||
|     { echo "$as_me:$LINENO: result: ok" >&5 | ||||
| echo "${ECHO_T}ok" >&6; } | ||||
|   fi | ||||
| fi | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,132 @@ | |||
| /* Inline math functions for powerpc.
 | ||||
|    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007, 2008 | ||||
|    Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|    modify it under the terms of the GNU Lesser General Public | ||||
|    License as published by the Free Software Foundation; either | ||||
|    version 2.1 of the License, or (at your option) any later version. | ||||
| 
 | ||||
|    The GNU C Library is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|    Lesser General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Lesser General Public | ||||
|    License along with the GNU C Library; if not, write to the Free | ||||
|    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||||
|    02111-1307 USA.  */ | ||||
| 
 | ||||
| #ifndef _MATH_H | ||||
| # error "Never use <bits/mathinline.h> directly; include <math.h> instead." | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __extern_inline | ||||
| # define __MATH_INLINE __inline | ||||
| #else | ||||
| # define __MATH_INLINE __extern_inline | ||||
| #endif  /* __cplusplus */ | ||||
| 
 | ||||
| #if defined __GNUC__ && !defined _SOFT_FLOAT | ||||
| 
 | ||||
| #ifdef __USE_ISOC99 | ||||
| # if !__GNUC_PREREQ (2,97) | ||||
| #  define __unordered_cmp(x, y) \ | ||||
|   (__extension__							      \ | ||||
|    ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y);			      \ | ||||
|       unsigned __r;							      \ | ||||
|       __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y)    \ | ||||
|               : "cr7");  \ | ||||
|       __r; })) | ||||
| 
 | ||||
| #  undef isgreater | ||||
| #  undef isgreaterequal | ||||
| #  undef isless | ||||
| #  undef islessequal | ||||
| #  undef islessgreater | ||||
| #  undef isunordered | ||||
| 
 | ||||
| #  define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1) | ||||
| #  define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0) | ||||
| #  define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1) | ||||
| #  define islessequal(x, y) ((__unordered_cmp (x, y) & 0xA) != 0) | ||||
| #  define islessgreater(x, y) ((__unordered_cmp (x, y) & 0xC) != 0) | ||||
| #  define isunordered(x, y) (__unordered_cmp (x, y) & 1) | ||||
| 
 | ||||
| # endif /* __GNUC_PREREQ (2,97) */ | ||||
| 
 | ||||
| /* The gcc, version 2.7 or below, has problems with all this inlining
 | ||||
|    code.  So disable it for this version of the compiler.  */ | ||||
| # if __GNUC_PREREQ (2, 8) | ||||
| /* Test for negative number.  Used in the signbit() macro.  */ | ||||
| __MATH_INLINE int | ||||
| __NTH (__signbitf (float __x)) | ||||
| { | ||||
|   __extension__ union { float __f; int __i; } __u = { __f: __x }; | ||||
|   return __u.__i < 0; | ||||
| } | ||||
| __MATH_INLINE int | ||||
| __NTH (__signbit (double __x)) | ||||
| { | ||||
|   __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; | ||||
|   return __u.__i[0] < 0; | ||||
| } | ||||
| #  if defined __powerpc64__ && defined __LONGDOUBLE128 | ||||
| __MATH_INLINE int | ||||
| __NTH (__signbitl (long double __x)) | ||||
| { | ||||
|   __extension__ union { long double __d; long int __i[2]; } __u = { __d: __x }; | ||||
|   return __u.__i[0] < 0; | ||||
| } | ||||
| #  endif | ||||
| # endif | ||||
| #endif /* __USE_ISOC99 */ | ||||
| 
 | ||||
| #if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ | ||||
| 
 | ||||
| #ifdef __USE_ISOC99 | ||||
| 
 | ||||
| # ifndef __powerpc64__ | ||||
| __MATH_INLINE long int lrint (double __x) __THROW; | ||||
| __MATH_INLINE long int | ||||
| __NTH (lrint (double __x)) | ||||
| { | ||||
|   union { | ||||
|     double __d; | ||||
|     int __ll[2]; | ||||
|   } __u; | ||||
|   __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x)); | ||||
|   return __u.__ll[1]; | ||||
| } | ||||
| 
 | ||||
| __MATH_INLINE long int lrintf (float __x) __THROW; | ||||
| __MATH_INLINE long int | ||||
| __NTH (lrintf (float __x)) | ||||
| { | ||||
|   union { | ||||
|     double __d; | ||||
|     int __ll[2]; | ||||
|   } __u; | ||||
|   __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x)); | ||||
|   return __u.__ll[1]; | ||||
| } | ||||
| # endif | ||||
| 
 | ||||
| __MATH_INLINE double fdim (double __x, double __y) __THROW; | ||||
| __MATH_INLINE double | ||||
| __NTH (fdim (double __x, double __y)) | ||||
| { | ||||
|   return __x <= __y ? 0 : __x - __y; | ||||
| } | ||||
| 
 | ||||
| __MATH_INLINE float fdimf (float __x, float __y) __THROW; | ||||
| __MATH_INLINE float | ||||
| __NTH (fdimf (float __x, float __y)) | ||||
| { | ||||
|   return __x <= __y ? 0 : __x - __y; | ||||
| } | ||||
| 
 | ||||
| #endif /* __USE_ISOC99 */ | ||||
| #endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ | ||||
| #endif /* __GNUC__ && !_SOFT_FLOAT */ | ||||
|  | @ -1,5 +1,5 @@ | |||
| /* Procedure definition for FE_NOMASK_ENV for Linux/ppc.
 | ||||
|    Copyright (C) 2000, 2006 Free Software Foundation, Inc. | ||||
|    Copyright (C) 2000, 2006, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|  | @ -66,3 +66,4 @@ __fe_nomask_env (void) | |||
| 
 | ||||
|   return FE_ENABLED_ENV; | ||||
| } | ||||
| libm_hidden_def (__fe_nomask_env) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* Procedure definition for FE_NOMASK_ENV for Linux/ppc64.
 | ||||
|    Copyright (C) 2003, 2006 Free Software Foundation, Inc. | ||||
|    Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
| 
 | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|  | @ -17,7 +17,7 @@ | |||
|    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||||
|    02111-1307 USA.  */ | ||||
| 
 | ||||
| #include <fenv.h> | ||||
| #include <fenv_libc.h> | ||||
| #include <errno.h> | ||||
| #include <sysdep.h> | ||||
| #include <sys/syscall.h> | ||||
|  | @ -41,3 +41,4 @@ __fe_nomask_env (void) | |||
| #endif | ||||
|   return FE_ENABLED_ENV; | ||||
| } | ||||
| libm_hidden_def (__fe_nomask_env) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue