diff options
| author | Jakub Jelinek <jakub@redhat.com> | 2008-04-12 07:48:58 +0000 |
|---|---|---|
| committer | Jakub Jelinek <jakub@redhat.com> | 2008-04-12 07:48:58 +0000 |
| commit | 14e44061ad888abbea7239599a9109b41776e41c (patch) | |
| tree | 258e74578e51d985048e70482acab48bc5cf591a | |
| parent | a346458fa85decb63d2bf237c62f58ca46450c3b (diff) | |
| download | glibc-14e44061ad888abbea7239599a9109b41776e41c.tar.xz glibc-14e44061ad888abbea7239599a9109b41776e41c.zip | |
Updated to fedora-glibc-20080412T0741cvs/fedora-glibc-2_8-1
30 files changed, 280 insertions, 74 deletions
@@ -1,3 +1,54 @@ +2008-04-11 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h (__signbitl): + Also use for 32-bit. + * sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c (__nearbyintl): Use + __nextafter instead of nextafter to avoid local PLT. + * sysdeps/powerpc/fpu/e_sqrt.c: Avoid call to fetestexcept. + * sysdeps/powerpc/fpu/e_sqrtf.c: Likewise. + + * scripts/data/localplt-powerpc64-linux-gnu.data: New file. + + * sysdeps/powerpc/fpu/fenv_libc.h: Add libm_hidden_proto for + __fe_nomask_env. + * sysdeps/powerpc/fpu/fe_nomask.c: Add libm_hidden_def. Include + <fenv_libc.h> instead of <fenv.h>. + * 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. + + * elf/tls-macros.h [__powerpc64__] (__TLS_GET_ADDR): Define according + to the ABI in use. + [__powerpc64__] (TLS_LD): Use __TLS_GET_ADDR instead of + .__tls_get_addr. + [__powerpc64__] (TLS_GD): Likewise. + 2007-11-20 Ryan S. Arnold <rsa@us.ibm.com> [BZ #4997] diff --git a/elf/tls-macros.h b/elf/tls-macros.h index 37cbe7514f..6463a6c3f9 100644 --- a/elf/tls-macros.h +++ b/elf/tls-macros.h @@ -813,12 +813,17 @@ register void *__gp __asm__("$29"); : "=b" (__result) ); \ __result; \ }) +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define __TLS_GET_ADDR ".__tls_get_addr" +# else +# define __TLS_GET_ADDR "__tls_get_addr" +# endif /* PowerPC64 Local Dynamic TLS access. */ # define TLS_LD(x) \ ({ int * __result; \ asm ( \ " addi 3,2," #x "@got@tlsld\n" \ - " bl .__tls_get_addr\n" \ + " bl " __TLS_GET_ADDR "\n" \ " nop \n" \ " addis %0,3," #x "@dtprel@ha\n" \ " addi %0,%0," #x "@dtprel@l\n" \ @@ -834,7 +839,7 @@ register void *__gp __asm__("$29"); ({ int * __result; \ asm ( \ " addi 3,2," #x "@got@tlsgd\n" \ - " bl .__tls_get_addr\n" \ + " bl " __TLS_GET_ADDR "\n" \ " nop \n" \ " mr %0,3\n" \ : "=b" (__result) : \ diff --git a/fedora/branch.mk b/fedora/branch.mk index 80cc48e13e..b35fb36cea 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-f8 -fedora-sync-date := 2008-04-11 19:34 UTC -fedora-sync-tag := fedora-glibc-20080411T1934 +fedora-sync-date := 2008-04-12 07:41 UTC +fedora-sync-tag := fedora-glibc-20080412T0741 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index 18eb47dab5..2b39ca9e26 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -19,7 +19,7 @@ Summary: The GNU libc libraries Name: glibc Version: @glibcversion@ -Release: 16 +Release: 1 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional @@ -976,6 +976,9 @@ rm -f *.filelist* %endif %changelog +* Sat Apr 12 2008 Jakub Jelinek <jakub@redhat.com> 2.8-1 +- 2.8 release + * Fri Apr 11 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-16 - update to trunk - misc fixes (BZ#4997, BZ#5741) diff --git a/include/features.h b/include/features.h index 6191d2044c..18093befcf 100644 --- a/include/features.h +++ b/include/features.h @@ -316,7 +316,7 @@ /* Major and minor version number of the GNU C library package. Use these macros to test for features in specific releases. */ #define __GLIBC__ 2 -#define __GLIBC_MINOR__ 7 +#define __GLIBC_MINOR__ 8 #define __GLIBC_PREREQ(maj, min) \ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) diff --git a/include/fenv.h b/include/fenv.h index 673eb4b977..3aec7e52bb 100644 --- a/include/fenv.h +++ b/include/fenv.h @@ -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); diff --git a/math/s_significandl.c b/math/s_significandl.c index 9fa0e4ff91..238b79ae55 100644 --- a/math/s_significandl.c +++ b/math/s_significandl.c @@ -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) diff --git a/scripts/data/localplt-powerpc64-linux-gnu.data b/scripts/data/localplt-powerpc64-linux-gnu.data new file mode 100644 index 0000000000..2219aa9048 --- /dev/null +++ b/scripts/data/localplt-powerpc64-linux-gnu.data @@ -0,0 +1,6 @@ +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: matherr diff --git a/sysdeps/i386/i686/memcpy.S b/sysdeps/i386/i686/memcpy.S index ff5c66e9d4..0b2da1ea27 100644 --- a/sysdeps/i386/i686/memcpy.S +++ b/sysdeps/i386/i686/memcpy.S @@ -71,10 +71,10 @@ ENTRY (BP_SYM (memcpy)) 1: pushl %eax movl %ecx, %eax shrl $2, %ecx + andl $3, %eax rep movsl movl %eax, %ecx - andl $3, %ecx rep movsb popl %eax diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c index 67ef371153..f235372916 100644 --- a/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -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; } diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c index 3a977c2a84..7ec073d9e2 100644 --- a/sysdeps/ieee754/ldbl-128/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c @@ -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; } diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c index 3c4088f75f..daf2cba323 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c @@ -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]; diff --git a/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c b/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c index 4908d4e4f3..735006575f 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c @@ -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; } diff --git a/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c b/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c index f1863fb688..5ccf541b71 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c @@ -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). */ diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c b/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c index 2561fda329..36c5a164dc 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c @@ -1,6 +1,6 @@ /* Round to int long double floating-point values without raising inexact. IBM extended format long double version. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 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 @@ -84,8 +84,8 @@ __nearbyintl (x) { /* Else the high double is pre rounded and we need to adjust for that. */ - - tau = nextafter (u.dd[0], 0.0); + + tau = __nextafter (u.dd[0], 0.0); tau = (u.dd[0] - tau) * 2.0; high = u.dd[0] - tau; low = u.dd[1] + tau; @@ -106,7 +106,7 @@ __nearbyintl (x) { /* Else the high double is pre rounded and we need to adjust for that. */ - tau = nextafter (u.dd[0], 0.0); + tau = __nextafter (u.dd[0], 0.0); tau = (u.dd[0] - tau) * 2.0; high = u.dd[0] - tau; low = u.dd[1] + tau; diff --git a/sysdeps/powerpc/bits/fenv.h b/sysdeps/powerpc/bits/fenv.h index 10582a6ff6..1a5720abe6 100644 --- a/sysdeps/powerpc/bits/fenv.h +++ b/sysdeps/powerpc/bits/fenv.h @@ -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) |
