[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r17814 - in /trunk: ./ libc/ libc/conform/ libc/debug/ libc/elf/ libc/grp/ libc/include/ libc/inet/ libc/login/ libc/malloc/...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r17814 - in /trunk: ./ libc/ libc/conform/ libc/debug/ libc/elf/ libc/grp/ libc/include/ libc/inet/ libc/login/ libc/malloc/...
- From: joseph@xxxxxxxxxx
- Date: Wed, 28 Mar 2012 22:24:59 -0000
Author: joseph
Date: Wed Mar 28 22:24:59 2012
New Revision: 17814
Log:
Merge changes between r17700 and r17813 from /fsf/trunk.
Added:
trunk/libc/sysdeps/generic/ifunc-sel.h
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/generic/ifunc-sel.h
trunk/libc/sysdeps/i386/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/i386/start.S
trunk/libc/sysdeps/ieee754/dbl-64/Makefile
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/ieee754/dbl-64/Makefile
trunk/libc/sysdeps/powerpc/ifunc-sel.h
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/ifunc-sel.h
trunk/libc/sysdeps/powerpc/powerpc32/bzero.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/powerpc32/bzero.S
trunk/libc/sysdeps/powerpc/powerpc32/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/powerpc32/start.S
trunk/libc/sysdeps/powerpc/powerpc64/bzero.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/powerpc64/bzero.S
trunk/libc/sysdeps/powerpc/powerpc64/entry.h
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/powerpc64/entry.h
trunk/libc/sysdeps/powerpc/powerpc64/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/powerpc64/start.S
trunk/libc/sysdeps/powerpc/rtld-global-offsets.sym
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/powerpc/rtld-global-offsets.sym
trunk/libc/sysdeps/s390/s390-32/configure
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/s390/s390-32/configure
trunk/libc/sysdeps/s390/s390-32/configure.in
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/s390/s390-32/configure.in
trunk/libc/sysdeps/s390/s390-32/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/s390/s390-32/start.S
trunk/libc/sysdeps/s390/s390-64/configure
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/s390/s390-64/configure
trunk/libc/sysdeps/s390/s390-64/configure.in
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/s390/s390-64/configure.in
trunk/libc/sysdeps/s390/s390-64/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/s390/s390-64/start.S
trunk/libc/sysdeps/sh/configure
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/sh/configure
trunk/libc/sysdeps/sh/configure.in
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/sh/configure.in
trunk/libc/sysdeps/sh/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/sh/start.S
trunk/libc/sysdeps/sparc/sparc32/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/sparc/sparc32/start.S
trunk/libc/sysdeps/sparc/sparc64/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/sparc/sparc64/start.S
trunk/libc/sysdeps/x86_64/configure.in
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/x86_64/configure.in
trunk/libc/sysdeps/x86_64/preconfigure
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/x86_64/preconfigure
trunk/libc/sysdeps/x86_64/preconfigure.in
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/x86_64/preconfigure.in
trunk/libc/sysdeps/x86_64/start.S
- copied unchanged from r17813, fsf/trunk/libc/sysdeps/x86_64/start.S
trunk/ports/sysdeps/alpha/configure
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/alpha/configure
trunk/ports/sysdeps/alpha/configure.in
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/alpha/configure.in
trunk/ports/sysdeps/alpha/crti.S
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/alpha/crti.S
trunk/ports/sysdeps/alpha/crtn.S
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/alpha/crtn.S
trunk/ports/sysdeps/alpha/start.S
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/alpha/start.S
trunk/ports/sysdeps/arm/start.S
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/arm/start.S
trunk/ports/sysdeps/m68k/start.S
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/m68k/start.S
trunk/ports/sysdeps/mips/configure
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/mips/configure
trunk/ports/sysdeps/mips/configure.in
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/mips/configure.in
trunk/ports/sysdeps/mips/start.S
- copied unchanged from r17813, fsf/trunk/ports/sysdeps/mips/start.S
Removed:
trunk/libc/sysdeps/generic/elf/
trunk/libc/sysdeps/i386/elf/
trunk/libc/sysdeps/powerpc/elf/
trunk/libc/sysdeps/powerpc/powerpc32/elf/
trunk/libc/sysdeps/powerpc/powerpc64/elf/
trunk/libc/sysdeps/s390/s390-32/elf/
trunk/libc/sysdeps/s390/s390-64/elf/
trunk/libc/sysdeps/sh/elf/
trunk/libc/sysdeps/sparc/elf/
trunk/libc/sysdeps/sparc/sparc32/elf/
trunk/libc/sysdeps/sparc/sparc64/elf/
trunk/libc/sysdeps/unix/i386/start.c
trunk/libc/sysdeps/unix/sparc/start.c
trunk/libc/sysdeps/unix/start.c
trunk/libc/sysdeps/x86_64/elf/
trunk/libc/sysdeps/x86_64/fpu/multiarch/brandred-fma4.c
trunk/ports/sysdeps/alpha/elf/
trunk/ports/sysdeps/arm/elf/
trunk/ports/sysdeps/m68k/elf/
trunk/ports/sysdeps/mips/elf/
trunk/ports/sysdeps/unix/arm/start.c
Modified:
trunk/ (props changed)
trunk/libc/ChangeLog
trunk/libc/NEWS
trunk/libc/config.make.in
trunk/libc/configure
trunk/libc/configure.in
trunk/libc/conform/Makefile
trunk/libc/debug/backtracesyms.c
trunk/libc/debug/backtracesymsfd.c
trunk/libc/elf/tst-auditmod1.c
trunk/libc/elf/tst-auditmod3b.c
trunk/libc/elf/tst-auditmod4b.c
trunk/libc/elf/tst-auditmod5b.c
trunk/libc/elf/tst-auditmod6b.c
trunk/libc/elf/tst-auditmod6c.c
trunk/libc/elf/tst-auditmod7b.c
trunk/libc/grp/Makefile
trunk/libc/include/link.h
trunk/libc/inet/Makefile
trunk/libc/login/Makefile
trunk/libc/malloc/mallocbug.c
trunk/libc/math/e_exp2l.c
trunk/libc/math/libm-test.inc
trunk/libc/math/s_cexp.c
trunk/libc/math/s_cexpf.c
trunk/libc/math/s_cexpl.c
trunk/libc/math/w_acoshl.c
trunk/libc/math/w_acosl.c
trunk/libc/math/w_asinl.c
trunk/libc/math/w_atan2l.c
trunk/libc/math/w_atanhl.c
trunk/libc/math/w_coshl.c
trunk/libc/math/w_exp10l.c
trunk/libc/math/w_exp2l.c
trunk/libc/math/w_fmodl.c
trunk/libc/math/w_hypotl.c
trunk/libc/math/w_j0l.c
trunk/libc/math/w_j1l.c
trunk/libc/math/w_jnl.c
trunk/libc/math/w_lgammal.c
trunk/libc/math/w_log10l.c
trunk/libc/math/w_log2l.c
trunk/libc/math/w_logl.c
trunk/libc/math/w_powl.c
trunk/libc/math/w_remainderl.c
trunk/libc/math/w_scalbl.c
trunk/libc/math/w_sinhl.c
trunk/libc/math/w_sqrtl.c
trunk/libc/math/w_tgammal.c
trunk/libc/nptl/ChangeLog
trunk/libc/nptl/tst-cond16.c
trunk/libc/nptl/tst-cond18.c
trunk/libc/nscd/Makefile
trunk/libc/nss/Makefile
trunk/libc/nss/getnssent.c
trunk/libc/posix/Makefile
trunk/libc/posix/confstr.c
trunk/libc/posix/confstr.inc
trunk/libc/pwd/Makefile
trunk/libc/resolv/Makefile
trunk/libc/resolv/nss_dns/dns-host.c
trunk/libc/rt/Makefile
trunk/libc/stdio-common/_itowa.c
trunk/libc/stdio-common/_itowa.h
trunk/libc/sunrpc/Makefile
trunk/libc/sysdeps/generic/_itoa.h
trunk/libc/sysdeps/generic/ldsodefs.h
trunk/libc/sysdeps/generic/math_private.h
trunk/libc/sysdeps/i386/Versions
trunk/libc/sysdeps/i386/configure
trunk/libc/sysdeps/i386/configure.in
trunk/libc/sysdeps/i386/fpu/e_pow.S
trunk/libc/sysdeps/i386/fpu/e_powf.S
trunk/libc/sysdeps/i386/fpu/e_powl.S
trunk/libc/sysdeps/i386/fpu/libm-test-ulps
trunk/libc/sysdeps/ieee754/k_standard.c
trunk/libc/sysdeps/ieee754/ldbl-128/k_cosl.c
trunk/libc/sysdeps/ieee754/ldbl-128/k_sincosl.c
trunk/libc/sysdeps/ieee754/ldbl-128/k_sinl.c
trunk/libc/sysdeps/ieee754/ldbl-128/w_expl.c
trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c
trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_powl.c
trunk/libc/sysdeps/ieee754/ldbl-128ibm/k_cosl.c
trunk/libc/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
trunk/libc/sysdeps/ieee754/ldbl-128ibm/k_sinl.c
trunk/libc/sysdeps/ieee754/ldbl-96/w_expl.c
trunk/libc/sysdeps/powerpc/fpu/libm-test-ulps
trunk/libc/sysdeps/powerpc/powerpc32/configure
trunk/libc/sysdeps/powerpc/powerpc32/configure.in
trunk/libc/sysdeps/powerpc/powerpc64/Makefile
trunk/libc/sysdeps/powerpc/powerpc64/configure
trunk/libc/sysdeps/powerpc/powerpc64/configure.in
trunk/libc/sysdeps/s390/s390-32/bsd-_setjmp.S
trunk/libc/sysdeps/s390/s390-32/bsd-setjmp.S
trunk/libc/sysdeps/s390/s390-32/setjmp.S
trunk/libc/sysdeps/s390/s390-64/bsd-_setjmp.S
trunk/libc/sysdeps/s390/s390-64/bsd-setjmp.S
trunk/libc/sysdeps/s390/s390-64/setjmp.S
trunk/libc/sysdeps/sparc/Makefile
trunk/libc/sysdeps/sparc/configure
trunk/libc/sysdeps/sparc/configure.in
trunk/libc/sysdeps/sparc/fpu/libm-test-ulps
trunk/libc/sysdeps/sparc/sparc32/Makefile
trunk/libc/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
trunk/libc/sysdeps/unix/sysv/linux/s390/bits/mman.h
trunk/libc/sysdeps/unix/sysv/linux/sh/bits/mman.h
trunk/libc/sysdeps/unix/sysv/linux/sparc/bits/mman.h
trunk/libc/sysdeps/x86_64/bits/link.h
trunk/libc/sysdeps/x86_64/configure
trunk/libc/sysdeps/x86_64/dl-irel.h
trunk/libc/sysdeps/x86_64/dl-tls.h
trunk/libc/sysdeps/x86_64/dl-tlsdesc.h
trunk/libc/sysdeps/x86_64/fpu/e_powl.S
trunk/libc/sysdeps/x86_64/fpu/libm-test-ulps
trunk/libc/sysdeps/x86_64/fpu/multiarch/Makefile
trunk/libc/sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c
trunk/libc/sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c
trunk/ports/ChangeLog.alpha
trunk/ports/ChangeLog.arm
trunk/ports/ChangeLog.hppa
trunk/ports/ChangeLog.m68k
trunk/ports/ChangeLog.mips
trunk/ports/sysdeps/arm/configure
trunk/ports/sysdeps/arm/configure.in
trunk/ports/sysdeps/m68k/m680x0/fpu/bits/mathinline.h
trunk/ports/sysdeps/m68k/m680x0/fpu/libm-test-ulps
trunk/ports/sysdeps/m68k/m680x0/fpu/s_cexp.c
trunk/ports/sysdeps/unix/sysv/linux/arm/bits/mman.h
trunk/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h
trunk/ports/sysdeps/unix/sysv/linux/mips/bits/mman.h
Propchange: trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 28 22:24:59 2012
@@ -1,1 +1,1 @@
-/fsf/trunk:15224-17700
+/fsf/trunk:15224-17813
Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Wed Mar 28 22:24:59 2012
@@ -1,3 +1,388 @@
+2012-03-28 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * sysdeps/sparc/Makefile: Add -fPIC to ASFLAGS-.os here....
+ * sysdeps/sparc/sparc32/Makefile: rather than here...
+ * sysdeps/sparc/sparc64/Makefile: and here.
+
+2012-03-28 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * malloc/mallocbug.c: Avoid warnings about unused variables.
+
+2012-02-22 Siddhesh Poyarekar <siddhesh@xxxxxxxxxx>
+
+ [BZ #13760]
+ * resolv/nss_dns/dns-host.c (gaih_getanswer): Look for errno
+ in the right place. Discard and retry query if response is
+ larger than input buffer size.
+
+2012-03-28 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ [BZ #369]
+ [BZ #2678]
+ [BZ #3866]
+ * sysdeps/i386/fpu/e_pow.S (__ieee754_pow): Take absolute value of
+ x for large integer exponent.
+ * sysdeps/i386/fpu/e_powf.S (__ieee754_powf): Likewise.
+ * sysdeps/i386/fpu/e_powl.S (__ieee754_powl): Likewise. Adjust
+ sign of result as needed afterwards.
+ * sysdeps/x86_64/fpu/e_powl.S (__ieee754_powl): Likewise.
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Handle sign of
+ result for underflowing pow the same as for overflow.
+ (__kernel_standard_l): Handle powl overflow and underflow here
+ rather than calling __kernel_standard.
+ * math/libm-test.inc (pow_test): Add more tests.
+
+ [BZ #3868]
+ [BZ #13879]
+ [BZ #13910]
+ [BZ #13911]
+ [BZ #13912]
+ [BZ #13913]
+ [BZ #13915]
+ [BZ #13916]
+ [BZ #13917]
+ [BZ #13918]
+ [BZ #13919]
+ [BZ #13920]
+ [BZ #13921]
+ * sysdeps/generic/math_private.h (__kernel_standard_l): Declare.
+ * sysdeps/ieee754/k_standard.c: Include <float.h>.
+ (__kernel_standard_l): New function.
+ * math/w_acoshl.c (__acoshl): Use __kernel_standard_l instead of
+ __kernel_standard.
+ * math/w_acosl.c (__acosl): Likewise.
+ * math/w_asinl.c (__asinl): Likewise.
+ * math/w_atan2l.c (__atan2l): Likewise.
+ * math/w_atanhl.c (__atanhl): Likewise.
+ * math/w_coshl.c (__coshl): Likewise.
+ * math/w_exp10l.c (__exp10l): Likewise.
+ * math/w_exp2l.c (__exp2l): Likewise.
+ * math/w_fmodl.c (__fmodl): Likewise.
+ * math/w_hypotl.c (__hypotl): Likewise.
+ * math/w_j0l.c (__j0l, __y0l): Likewise.
+ * math/w_j1l.c (__j1l, __y1l): Likewise.
+ * math/w_jnl.c (__jnl, __ynl): Likewise.
+ * math/w_lgammal.c (__lgammal): Likewise.
+ * math/w_log10l.c (__log10l): Likewise.
+ * math/w_log2l.c (__log2l): Likewise.
+ * math/w_logl.c (__logl): Likewise.
+ * math/w_powl.c (__powl): Likewise.
+ * math/w_remainderl.c (__remainderl): Likewise.
+ * math/w_scalbl.c (sysv_scalbl): Likewise.
+ * math/w_sinhl.c (__sinhl): Likewise.
+ * math/w_sqrtl.c (__sqrtl): Likewise.
+ * math/w_tgammal.c (__tgammal): Likewise.
+ * sysdeps/ieee754/ldbl-128/w_expl.c (__expl): Likewise.
+ * sysdeps/ieee754/ldbl-96/w_expl.c (__expl): Likewise.
+ * math/libm-test.inc (acos_test): Add more tests.
+ (acosh_test): Likewise.
+ (asin_test): Likewise.
+ (atanh_test): Likewise.
+ (exp_test): Likewise.
+ (exp10_test): Likewise.
+ (exp2_test): Likewise.
+ (expm1_test): Likewise.
+ (lgamma_test): Likewise.
+ (log_test): Likewise.
+ (log10_test): Likewise.
+ (log1p_test): Likewise.
+ (log2_test): Likewise.
+ (pow_test): Do not allow some spurious overflow exceptions.
+ (sqrt_test): Add more tests.
+ (tgamma_test): Likewise.
+ (y0_test): Likewise.
+ (y1_test): Likewise.
+ (yn_test): Likewise.
+
+2012-03-27 Anton Blanchard <anton@xxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Define MAP_STACK and
+ MAP_HUGETLB.
+ * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise.
+
+2012-03-27 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * conform/Makefile: Run run-conformtest.sh using $(BASH).
+
+ * sysdeps/sparc/sparc64/Makefile (ASFLAGS-.os): Move before
+ have-as-vis3 check.
+
+2012-03-27 Andreas Jaeger <aj@xxxxxxx>
+
+ * sysdeps/x86_64/elf/configure.in: Moved to ...
+ * sysdeps/x86_64/configure.in: ... here.
+ * sysdeps/x86_64/elf/start.S: Moved to ...
+ * sysdeps/x86_64/start.S: ... here.
+ * sysdeps/x86_64/elf/configure: Delete.
+
+ * sysdeps/x86_64/configure.in: Merge contents from
+ sysdeps/i386/configure.in (without i686 check).
+
+ * sysdeps/i386/elf/Versions: Merge into ...
+ * sysdeps/i386/Versions: ... this.
+ * sysdeps/i386/elf/Versions: Delete file.
+ * sysdeps/i386/elf/start.S: Moved to ...
+ * sysdeps/i386/start.S: ...here.
+ * sysdeps/i386/elf/configure.in: Merge into...
+ * sysdeps/i386/configure.in: ...here.
+ * sysdeps/i386/elf/configure.in: Delete file.
+ * sysdeps/i386/elf/configure: Delete file.
+
+ * sysdeps/generic/elf/backtracesyms.c: Moved to ...
+ * debug/backtracesyms.c: ... here.
+ * sysdeps/generic/elf/backtracesymsfd.c: Moved to ...
+ * debug/backtracesymsfd.c: ... here.
+ * sysdeps/generic/elf/ifunc-sel.h: Moved to ...
+ * sysdeps/generic/ifunc-sel.h: ... here.
+
+ * sysdeps/unix/i386/start.c: Delete file.
+ * sysdeps/unix/sparc/start.c: Delete file.
+ * sysdeps/unix/start.c: Delete file.
+
+ * sysdeps/sh/elf/configure.in: Moved to ...
+ * sysdeps/sh/configure.in: ... here.
+ * sysdeps/sh/elf/start.S: Moved to ...
+ * sysdeps/sh/start.S: ... here.
+ * sysdeps/sh/elf/configure: Delete file.
+
+ * sysdeps/powerpc/powerpc64/elf/bzero.S: Moved to ...
+ * sysdeps/powerpc/powerpc64/bzero.S: ... here.
+ * sysdeps/powerpc/powerpc64/elf/entry.h: Moved to ...
+ * sysdeps/powerpc/powerpc64/entry.h: ... here.
+ * sysdeps/powerpc/powerpc64/elf/start.S: Moved to ...
+ * sysdeps/powerpc/powerpc64/start.S: here.
+ * sysdeps/powerpc/powerpc64/elf/Makefile: Merge into ...
+ * sysdeps/powerpc/powerpc64/Makefile: ... this.
+ * sysdeps/powerpc/powerpc64/elf/configure.in: Merge into ...
+ * sysdeps/powerpc/powerpc64/configure.in: ... this.
+ * sysdeps/powerpc/powerpc64/elf/configure: Delete file.
+
+ * sysdeps/powerpc/powerpc32/elf/bzero.S: Moved to ...
+ * sysdeps/powerpc/powerpc32/bzero.S: ... here.
+ * sysdeps/powerpc/powerpc32/elf/start.S: Moved to ...
+ * sysdeps/powerpc/powerpc32/start.S: ... here.
+ * sysdeps/powerpc/powerpc32/elf/configure.in: Merge into ...
+ * sysdeps/powerpc/powerpc32/configure.in: ... this.
+ * sysdeps/powerpc/powerpc32/elf/configure: Delete file.
+
+ * sysdeps/powerpc/elf/ifunc-sel.h: Moved to ...
+ * sysdeps/powerpc/ifunc-sel.h: ... here.
+ * sysdeps/powerpc/elf/rtld-global-offsets.sym: Moved to ...
+ * sysdeps/powerpc/rtld-global-offsets.sym: ... here.
+
+ * sysdeps/sparc/elf/configure.in: Moved to ...
+ * sysdeps/sparc/configure.in: ... here.
+ * sysdeps/sparc/elf/configure: Delete file.
+ * sysdeps/sparc/sparc32/elf/start.S: Moved to ...
+ * sysdeps/sparc/sparc32/start.S: ... here.
+ * sysdeps/sparc/sparc64/elf/start.S: Moved to ...
+ * sysdeps/sparc/sparc64/start.S: ... here.
+ * sysdeps/sparc/sparc32/elf/Makefile: Merged into ...
+ * sysdeps/sparc/sparc32/Makefile: ... this.
+ * sysdeps/sparc/sparc64/elf/Makefile: Merged into ...
+ * sysdeps/sparc/sparc64/Makefile: ... this.
+
+ * sysdeps/s390/s390-32/elf/bsd-_setjmp.S: Moved to ...
+ * sysdeps/s390/s390-32/bsd-_setjmp.S: ... here.
+ * sysdeps/s390/s390-32/elf/bsd-setjmp.S: Moved to ...
+ * sysdeps/s390/s390-32/bsd-setjmp.S: ... here.
+ * sysdeps/s390/s390-32/elf/setjmp.S: Moved to ...
+ * sysdeps/s390/s390-32/setjmp.S: ... here.
+ * sysdeps/s390/s390-32/elf/configure.in: Moved to ...
+ * sysdeps/s390/s390-32/configure.in: ... here.
+ * sysdeps/s390/s390-32/elf/configure: Delete file.
+ * sysdeps/s390/s390-32/elf/start.S: Moved to ...
+ * sysdeps/s390/s390-32/start.S: ... here.
+
+ * sysdeps/s390/s390-64/elf/bsd-_setjmp.S: Moved to ...
+ * sysdeps/s390/s390-64/bsd-_setjmp.S: ... here.
+ * sysdeps/s390/s390-64/elf/bsd-setjmp.S: Moved to ...
+ * sysdeps/s390/s390-64/bsd-setjmp.S: ... here.
+ * sysdeps/s390/s390-64/elf/setjmp.S: Moved to ...
+ * sysdeps/s390/s390-64/setjmp.S: ... here.
+ * sysdeps/s390/s390-64/elf/configure.in: Moved to ...
+ * sysdeps/s390/s390-64/configure.in: ... here
+ * sysdeps/s390/s390-64/elf/configure: Delete file.
+ * sysdeps/s390/s390-64/elf/start.S: Moved to ...
+ * sysdeps/s390/s390-64/start.S: ... here.
+ * sysdeps/s390/s390-64/elf/configure: Delete.
+
+ * configure.in: Remove support for elf directories in sysdeps.
+
+ * configure: Regenerated.
+ * sysdeps/i386/configure: Regenerated.
+ * sysdeps/powerpc/powerpc32/configure: Regenerated.
+ * sysdeps/powerpc/powerpc64/configure: Regenerated.
+ * sysdeps/s390/s390-32/configure: Regenerated.
+ * sysdeps/s390/s390-64/configure: Regenerated.
+ * sysdeps/sh/configure: Regenerated.
+ * sysdeps/sparc/configure: Regenerated.
+ * sysdeps/x86_64/configure: Regenerated.
+
+2012-03-26 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ * sysdeps/powerpc/fpu/libm-test-ulps: Update.
+
+ * sysdeps/ieee754/ldbl-128ibm/e_expl.c (lomark): Adjust to take
+ denormal result into account.
+
+2012-03-25 Roland McGrath <roland@xxxxxxxxxxxxx>
+
+ * posix/confstr.c (confstr): Lift RESTENVS definition to function scope.
+ Reported by Allan McRae <allan@xxxxxxxxxxxxx>.
+
+2012-03-23 Jeff Law <law@xxxxxxxxxx>
+
+ * nss/getnssent.c (__nss_getent): Fix typo.
+
+2012-03-23 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * sysdeps/sparc/fpu/libm-test-ulps: Update.
+
+2012-03-23 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/dl-tlsdesc.h (tlsdesc): Use anonymous union
+ to pad to uint64_t for each field.
+ (dl_tls_index): Replace unsigned long with uint64_t.
+
+2012-03-23 Daniel Jacobowitz <dmj@xxxxxxxxxx>
+ Paul Pluzhnikov <ppluzhnikov@xxxxxxxxxx>
+
+ [BZ #6528]
+ * grp/Makefile (otherlibs): Don't set it.
+ * inet/Makefile (otherlibs): Likewise.
+ * login/Makefile (otherlibs): Likewise.
+ * nscd/Makefile (otherlibs): Likewise.
+ * posix/Makefile (otherlibs): Likewise.
+ * pwd/Makefile (otherlibs): Likewise.
+ * rt/Makefile (otherlibs): Likewise.
+ * sunrpc/Makefile (otherlibs): Likewise.
+ * nss/Makefile (otherlibs): Likewise.
+ Add libnss_files to routines and static-only-routines.
+ ($(objpfx)getent): Remove rule.
+ * resolv/Makefile: Add libnss_dns and libresolv to routines and
+ static-only-routines.
+
+2012-03-22 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ [BZ #13892]
+ * math/s_cexp.c: Include <float.h>.
+ (__cexp): Handle exp result overflowing not necessarily
+ overflowing both real and imaginary parts of result.
+ * math/s_cexpf.c: Likewise.
+ * math/s_cexpl.c: Likewise.
+ * math/libm-test.inc (cexp_test): Add more tests.
+ * sysdeps/i386/fpu/libm-test-ulps: Update.
+ * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
+
+2012-03-22 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * include/link.h (ELFW): New macro.
+ * sysdeps/x86_64/dl-irel.h: Replace Elf64_XXX with ElfW(XXX).
+ Replace ELF64_R_TYPE with ELFW(R_TYPE).
+
+2012-03-22 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/dl-tls.h (dl_tls_index): Replace unsigned long
+ with uint64_t.
+
+2012-03-22 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/generic/ldsodefs.h (struct La_x32_regs): New forward
+ declaration.
+ (struct La_x32_retval): Likewise.
+
+2012-03-22 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/preconfigure.in: New file.
+ * sysdeps/x86_64/preconfigure: New generated file.
+
+2012-03-22 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ [BZ #13824]
+ * math/e_exp2l.c: Include <float.h>.
+ (__ieee754_exp2l): Handle overflow and underflow cases
+ separately. Only pass fractional part of argument to
+ __ieee754_expl.
+ * math/libm-test.inc (exp2_test): Add more tests.
+
+ * sysdeps/ieee754/ldbl-128/k_cosl.c (__kernel_cosl): Negate y if
+ negating x to take absolute value.
+ * sysdeps/ieee754/ldbl-128/k_sincosl.c (__kernel_sincosl):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/k_cosl.c (__kernel_cosl): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/k_sincosl.c (__kernel_sincosl):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128/k_sinl.c (__kernel_sinl): Negate y when
+ computing low part if x was negated.
+ * sysdeps/ieee754/ldbl-128ibm/k_sinl.c (__kernel_sinl): Likewise.
+
+2012-03-21 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * elf/tst-auditmod1.c: Support la_x32_gnu_pltenter and
+ la_x32_gnu_pltexit.
+ (pltexit): Cast int_retval to ptrdiff_t.
+ * elf/tst-auditmod3b.c: Likewise.
+ * elf/tst-auditmod4b.c: Likewise.
+ * elf/tst-auditmod5b.c: Likewise.
+ * elf/tst-auditmod6b.c: Likewise.
+ * elf/tst-auditmod6c.c: Likewise.
+ * elf/tst-auditmod7b.c: Likewise.
+
+ * sysdeps/generic/ldsodefs.h (audit_ifaces): Add x32_gnu_pltenter
+ and x32_gnu_pltexit.
+
+ * sysdeps/x86_64/bits/link.h: Check __x86_64__ instead of
+ __ELF_NATIVE_CLASS.
+ (La_x32_regs): New macro.
+ (La_x32_retval): Likewise.
+ (la_x32_gnu_pltenter): New function prototype.
+ (la_x32_gnu_pltexit): Likewise.
+
+2012-03-21 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ * sysdeps/ieee754/ldbl-128ibm/e_powl.c (huge, tiny): Correct
+ exponent.
+
+ * sysdeps/powerpc/fpu/libm-test-ulps: Update.
+
+ * configure.in (libc_cv_cc_nofma): Check for option to disable
+ generation of FMA instructions.
+ * configure: Regenerate.
+ * config.make.in (config-cflags-nofma): Set from libc_cv_cc_nofma.
+ * sysdeps/ieee754/dbl-64/Makefile: New file.
+ * sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
+ Remove brandred-fma4.
+ (CFLAGS-brandred-fma4.c): Remove.
+ * sysdeps/x86_64/fpu/multiarch/brandred-fma4.c: Remove.
+ * sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c (__branred): Don't
+ define.
+ * sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c (__branred): Don't
+ define.
+
+2012-03-21 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * stdio-common/_itoa.c: Check _ITOA_NEEDED instead of
+ LLONG_MAX != LONG_MAX.
+ (_itoa_word): Use _ITOA_WORD_TYPE on value.
+ (_fitoa_word): Likewise.
+ * stdio-common/_itowa.c: Check _ITOA_NEEDED instead of
+ LLONG_MAX != LONG_MAX.
+ * stdio-common/_itowa.h: Include <_itoa.h>.
+ (_itowa_word): Use _ITOA_WORD_TYPE on value.
+ (_itowa): New macro. Defined only if _ITOA_NEEDED is false.
+ * sysdeps/generic/_itoa.h (_ITOA_NEEDED): New macro. Defined
+ only if not defined.
+ (_ITOA_WORD_TYPE): Likewise.
+ (_itoa_word): Use _ITOA_WORD_TYPE on value.
+ Check !_ITOA_NEEDED instead of LONG_MAX == LLONG_MAX.
+
+2012-03-21 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * sysdeps/sparc/fpu/libm-test-ulps: Update.
+
2012-03-21 H.J. Lu <hongjiu.lu@xxxxxxxxx>
* sysdeps/unix/sysv/linux/configure.in: Check x86_64* instead
@@ -20,9 +405,9 @@
2012-03-21 Thomas Schwinge <thomas@xxxxxxxxxxxxxxxx>
- * conform/conformtest.pl: Handle --tmpdir argument, defaulting to /tmp.
- * conform/run-conformtest.sh: Pass --tmpdir argument when invoking
- conformtest.pl
+ * conform/conformtest.pl: Handle --tmpdir argument, defaulting to /tmp.
+ * conform/run-conformtest.sh: Pass --tmpdir argument when invoking
+ conformtest.pl
2012-03-21 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
Modified: trunk/libc/NEWS
==============================================================================
--- trunk/libc/NEWS (original)
+++ trunk/libc/NEWS Wed Mar 28 22:24:59 2012
@@ -9,14 +9,16 @@
* The following bugs are resolved with this release:
- 174, 350, 411, 2541, 2547, 2548, 2551, 2552, 2553, 2554, 2562, 2563, 2565,
- 2566, 2576, 3335, 3976, 3992, 4026, 4108, 4596, 4822, 5077, 5461, 5805,
- 5993, 6471, 6884, 6907, 6911, 9739, 9902, 10110, 10135, 10140, 10210,
- 10545, 10716, 11174, 11322, 11365, 11451, 11494, 12047, 13058, 13525,
- 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
- 13552, 13553, 13555, 13559, 13566, 13583, 13618, 13637, 13656, 13658,
- 13673, 13695, 13704, 13706, 13726, 13738, 13786, 13792, 13806, 13840,
- 13841, 13844, 13846, 13851, 13852, 13854, 13871, 13883
+ 174, 350, 369, 411, 2541, 2547, 2548, 2551, 2552, 2553, 2554, 2562, 2563,
+ 2565, 2566, 2576, 2678, 3335, 3866, 3868, 3976, 3992, 4026, 4108, 4596,
+ 4822, 5077, 5461, 5805, 5993, 6471, 6730, 6884, 6907, 6911, 9739, 9902,
+ 10110, 10135, 10140, 10210, 10545, 10716, 11174, 11322, 11365, 11451,
+ 11494, 12047, 13058, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
+ 13532, 13533, 13547, 13551, 13552, 13553, 13555, 13559, 13566, 13583,
+ 13618, 13637, 13656, 13658, 13673, 13695, 13704, 13706, 13726, 13738,
+ 13760, 13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851,
+ 13852, 13854, 13871, 13879, 13883, 13892, 13910, 13911, 13912, 13913,
+ 13915, 13916, 13917, 13918, 13919, 13920, 13921
* ISO C11 support:
Modified: trunk/libc/config.make.in
==============================================================================
--- trunk/libc/config.make.in (original)
+++ trunk/libc/config.make.in Wed Mar 28 22:24:59 2012
@@ -38,6 +38,7 @@
config-cflags-avx = @libc_cv_cc_avx@
config-cflags-sse2avx = @libc_cv_cc_sse2avx@
config-cflags-novzeroupper = @libc_cv_cc_novzeroupper@
+config-cflags-nofma = @libc_cv_cc_nofma@
config-asflags-i686 = @libc_cv_as_i686@
defines = @DEFINES@
Modified: trunk/libc/configure
==============================================================================
--- trunk/libc/configure (original)
+++ trunk/libc/configure Wed Mar 28 22:24:59 2012
@@ -618,6 +618,7 @@
use_ldconfig
libc_cv_sparc_as_vis3
libc_cv_as_i686
+libc_cv_cc_nofma
libc_cv_cc_fma4
libc_cv_cc_novzeroupper
libc_cv_cc_sse2avx
@@ -4372,27 +4373,6 @@
# We have now validated the configuration.
-
-# Look for an `elf' subdirectory of each machine directory.
-# We prepend these rather than inserting them whereever the machine appears
-# because things specified by the machine's ELF ABI should override
-# OS-specific things, and should always be the same for any OS on the
-# machine (otherwise what's the point of an ABI?).
-elf_dirs=
-for d in $add_ons_pfx ''; do
- for m in $mach; do
- try="${d}sysdeps$m/elf"
- case $d in
- /*) try_srcdir= ;;
- *) try_srcdir=$srcdir/ ;;
- esac
- if test -d $try_srcdir$try; then
- elf_dirs="$elf_dirs $try"
- fi
- done
-done
-sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-
# Peek into option-groups.config to check if sysdeps/ieee754/[l]dbl-wrap needs
# to be included into $sysnames.
grep "OPTION_EGLIBC_LIBM_BIG = n" option-groups.config > /dev/null 2>&1
@@ -4496,7 +4476,7 @@
done
# Add the default directories.
-default_sysnames="sysdeps/generic/elf sysdeps/generic"
+default_sysnames="sysdeps/generic"
sysnames="$names $default_sysnames"
# The other names were emitted during the scan.
@@ -7110,6 +7090,26 @@
as_fn_error $? "support for the tls_model attribute is required" "$LINENO" 5
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option to disable generation of FMA instructions" >&5
+$as_echo_n "checking for compiler option to disable generation of FMA instructions... " >&6; }
+if ${libc_cv_cc_nofma+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ libc_cv_cc_nofma=
+for opt in -ffp-contract=off -mno-fused-madd; do
+ if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_cc_nofma=$opt; break
+fi
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_nofma" >&5
+$as_echo "$libc_cv_cc_nofma" >&6; }
+
if test -n "$submachine"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option for CPU variant" >&5
$as_echo_n "checking for compiler option for CPU variant... " >&6; }
@@ -7709,6 +7709,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** be removed." >&5
$as_echo "$as_me: WARNING: *** be removed." >&2;}
fi
+
Modified: trunk/libc/configure.in
==============================================================================
--- trunk/libc/configure.in (original)
+++ trunk/libc/configure.in Wed Mar 28 22:24:59 2012
@@ -748,27 +748,6 @@
# We have now validated the configuration.
-
-# Look for an `elf' subdirectory of each machine directory.
-# We prepend these rather than inserting them whereever the machine appears
-# because things specified by the machine's ELF ABI should override
-# OS-specific things, and should always be the same for any OS on the
-# machine (otherwise what's the point of an ABI?).
-elf_dirs=
-for d in $add_ons_pfx ''; do
- for m in $mach; do
- try="${d}sysdeps$m/elf"
- case $d in
- /*) try_srcdir= ;;
- *) try_srcdir=$srcdir/ ;;
- esac
- if test -d $try_srcdir$try; then
- elf_dirs="$elf_dirs $try"
- fi
- done
-done
-sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-
# Peek into option-groups.config to check if sysdeps/ieee754/[l]dbl-wrap needs
# to be included into $sysnames.
grep "OPTION_EGLIBC_LIBM_BIG = n" option-groups.config > /dev/null 2>&1
@@ -873,7 +852,7 @@
done
# Add the default directories.
-default_sysnames="sysdeps/generic/elf sysdeps/generic"
+default_sysnames="sysdeps/generic"
sysnames="$names $default_sysnames"
AC_SUBST(sysnames)
# The other names were emitted during the scan.
@@ -2020,6 +1999,14 @@
AC_MSG_ERROR([support for the tls_model attribute is required])
fi
+dnl Determine how to disable generation of FMA instructions.
+AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
+ libc_cv_cc_nofma, [dnl
+libc_cv_cc_nofma=
+for opt in -ffp-contract=off -mno-fused-madd; do
+ LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
+done])
+
if test -n "$submachine"; then
AC_CACHE_CHECK([for compiler option for CPU variant],
libc_cv_cc_submachine, [dnl
@@ -2163,6 +2150,7 @@
AC_SUBST(libc_cv_cc_sse2avx)
AC_SUBST(libc_cv_cc_novzeroupper)
AC_SUBST(libc_cv_cc_fma4)
+AC_SUBST(libc_cv_cc_nofma)
AC_SUBST(libc_cv_as_i686)
AC_SUBST(libc_cv_sparc_as_vis3)
Modified: trunk/libc/conform/Makefile
==============================================================================
--- trunk/libc/conform/Makefile (original)
+++ trunk/libc/conform/Makefile Wed Mar 28 22:24:59 2012
@@ -31,7 +31,7 @@
$(objpfx)run-conformtest.out: run-conformtest.sh conformtest.pl \
$(wildcard data/*.h-data) \
$(wildcard data/*/*.h-data)
- -$(SHELL) -e $< $(objpfx) $(PERL) '$(CC)' \
+ -$(BASH) -e $< $(objpfx) $(PERL) '$(CC)' \
'-I../include $(+sysdep-includes) $(sysincludes) -I..'
generated = $(wildcard $(objpfx)conform-*.out)
Modified: trunk/libc/debug/backtracesyms.c
==============================================================================
--- trunk/libc/debug/backtracesyms.c (original)
+++ trunk/libc/debug/backtracesyms.c Wed Mar 28 22:24:59 2012
@@ -1,5 +1,5 @@
/* Return list with names for address in backtrace.
- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1998.
@@ -17,13 +17,20 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <assert.h>
#include <execinfo.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <ldsodefs.h>
-/* Assume the worst for the width of an address. */
-#define WORD_WIDTH 16
+#if __ELF_NATIVE_CLASS == 32
+# define WORD_WIDTH 8
+#else
+/* We assyme 64bits. */
+# define WORD_WIDTH 16
+#endif
char **
@@ -31,16 +38,37 @@
void *const *array;
int size;
{
+ Dl_info info[size];
+ int status[size];
int cnt;
size_t total = 0;
char **result;
- /* We can compute the text size needed for the symbols since we print
- them all as "[+0x<addr>]". */
- total = size * (WORD_WIDTH + 6);
+ /* Fill in the information we can get from `dladdr'. */
+ for (cnt = 0; cnt < size; ++cnt)
+ {
+ struct link_map *map;
+ status[cnt] = _dl_addr (array[cnt], &info[cnt], &map, NULL);
+ if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
+ {
+ /* We have some info, compute the length of the string which will be
+ "<file-name>(<sym-name>+offset) [address]. */
+ total += (strlen (info[cnt].dli_fname ?: "")
+ + strlen (info[cnt].dli_sname ?: "")
+ + 3 + WORD_WIDTH + 3 + WORD_WIDTH + 5);
+
+ /* The load bias is more useful to the user than the load
+ address. The use of these addresses is to calculate an
+ address in the ELF file, so its prelinked bias is not
+ something we want to subtract out. */
+ info[cnt].dli_fbase = (void *) map->l_addr;
+ }
+ else
+ total += 5 + WORD_WIDTH;
+ }
/* Allocate memory for the result. */
- result = malloc (size * sizeof (char *) + total);
+ result = (char **) malloc (size * sizeof (char *) + total);
if (result != NULL)
{
char *last = (char *) (result + size);
@@ -48,8 +76,45 @@
for (cnt = 0; cnt < size; ++cnt)
{
result[cnt] = last;
- last += 1 + sprintf (last, "[+%p]", array[cnt]);
+
+ if (status[cnt]
+ && info[cnt].dli_fname != NULL && info[cnt].dli_fname[0] != '\0')
+ {
+ if (info[cnt].dli_sname == NULL)
+ /* We found no symbol name to use, so describe it as
+ relative to the file. */
+ info[cnt].dli_saddr = info[cnt].dli_fbase;
+
+ if (info[cnt].dli_sname == NULL && info[cnt].dli_saddr == 0)
+ last += 1 + sprintf (last, "%s(%s) [%p]",
+ info[cnt].dli_fname ?: "",
+ info[cnt].dli_sname ?: "",
+ array[cnt]);
+ else
+ {
+ char sign;
+ ptrdiff_t offset;
+ if (array[cnt] >= (void *) info[cnt].dli_saddr)
+ {
+ sign = '+';
+ offset = array[cnt] - info[cnt].dli_saddr;
+ }
+ else
+ {
+ sign = '-';
+ offset = info[cnt].dli_saddr - array[cnt];
+ }
+
+ last += 1 + sprintf (last, "%s(%s%c%#tx) [%p]",
+ info[cnt].dli_fname ?: "",
+ info[cnt].dli_sname ?: "",
+ sign, offset, array[cnt]);
+ }
+ }
+ else
+ last += 1 + sprintf (last, "[%p]", array[cnt]);
}
+ assert (last <= (char *) result + size * sizeof (char *) + total);
}
return result;
Modified: trunk/libc/debug/backtracesymsfd.c
==============================================================================
--- trunk/libc/debug/backtracesymsfd.c (original)
+++ trunk/libc/debug/backtracesymsfd.c Wed Mar 28 22:24:59 2012
@@ -1,5 +1,5 @@
/* Write formatted list with names for addresses in backtrace to a file.
- Copyright (C) 1998, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1998-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1998.
@@ -22,7 +22,7 @@
#include <sys/uio.h>
#include <_itoa.h>
-#include <not-cancel.h>
+#include <ldsodefs.h>
#if __ELF_NATIVE_CLASS == 32
# define WORD_WIDTH 8
@@ -38,25 +38,87 @@
int size;
int fd;
{
- struct iovec iov[3];
+ struct iovec iov[9];
int cnt;
for (cnt = 0; cnt < size; ++cnt)
{
char buf[WORD_WIDTH];
+ char buf2[WORD_WIDTH];
+ Dl_info info;
+ struct link_map *map;
+ size_t last = 0;
- iov[0].iov_base = (void *) "[0x";
- iov[0].iov_len = 3;
+ if (_dl_addr (array[cnt], &info, &map, NULL)
+ && info.dli_fname != NULL && info.dli_fname[0] != '\0')
+ {
+ /* Name of the file. */
+ iov[0].iov_base = (void *) info.dli_fname;
+ iov[0].iov_len = strlen (info.dli_fname);
+ last = 1;
- iov[1].iov_base = _itoa_word ((unsigned long int) array[cnt],
- &buf[WORD_WIDTH], 16, 0);
- iov[1].iov_len = &buf[WORD_WIDTH] - (char *) iov[1].iov_base;
+ if (info.dli_sname != NULL || map->l_addr != 0)
+ {
+ size_t diff;
- iov[2].iov_base = (void *) "]\n";
- iov[2].iov_len = 2;
+ iov[last].iov_base = (void *) "(";
+ iov[last].iov_len = 1;
+ ++last;
- /* We prefer to use the non-cancelable interface if it is available. */
- writev_not_cancel_no_status (fd, iov, 3);
+ if (info.dli_sname != NULL)
+ {
+ /* We have a symbol name. */
+ iov[last].iov_base = (void *) info.dli_sname;
+ iov[last].iov_len = strlen (info.dli_sname);
+ ++last;
+ }
+ else
+ /* We have no symbol, so describe it as relative to the file.
+ The load bias is more useful to the user than the load
+ address. The use of these addresses is to calculate an
+ address in the ELF file, so its prelinked bias is not
+ something we want to subtract out. */
+ info.dli_saddr = (void *) map->l_addr;
+
+ if (array[cnt] >= (void *) info.dli_saddr)
+ {
+ iov[last].iov_base = (void *) "+0x";
+ diff = array[cnt] - info.dli_saddr;
+ }
+ else
+ {
+ iov[last].iov_base = (void *) "-0x";
+ diff = info.dli_saddr - array[cnt];
+ }
+ iov[last].iov_len = 3;
+ ++last;
+
+ iov[last].iov_base = _itoa_word ((unsigned long int) diff,
+ &buf2[WORD_WIDTH], 16, 0);
+ iov[last].iov_len = (&buf2[WORD_WIDTH]
+ - (char *) iov[last].iov_base);
+ ++last;
+
+ iov[last].iov_base = (void *) ")";
+ iov[last].iov_len = 1;
+ ++last;
+ }
+ }
+
+ iov[last].iov_base = (void *) "[0x";
+ iov[last].iov_len = 3;
+ ++last;
+
+ iov[last].iov_base = _itoa_word ((unsigned long int) array[cnt],
+ &buf[WORD_WIDTH], 16, 0);
+ iov[last].iov_len = &buf[WORD_WIDTH] - (char *) iov[last].iov_base;
+ ++last;
+
+ iov[last].iov_base = (void *) "]\n";
+ iov[last].iov_len = 2;
+ ++last;
+
+ __writev (fd, iov, last);
}
}
weak_alias (__backtrace_symbols_fd, backtrace_symbols_fd)
Modified: trunk/libc/elf/tst-auditmod1.c
==============================================================================
--- trunk/libc/elf/tst-auditmod1.c (original)
+++ trunk/libc/elf/tst-auditmod1.c Wed Mar 28 22:24:59 2012
@@ -109,10 +109,17 @@
# define La_retval La_i86_retval
# define int_retval lrv_eax
#elif defined __x86_64__
-# define pltenter la_x86_64_gnu_pltenter
-# define pltexit la_x86_64_gnu_pltexit
-# define La_regs La_x86_64_regs
-# define La_retval La_x86_64_retval
+# ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+# else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+# endif
# define int_retval lrv_rax
#elif defined __powerpc__ && __WORDSIZE == 32
# define pltenter la_ppc32_gnu_pltenter
@@ -188,7 +195,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
return 0;
}
Modified: trunk/libc/elf/tst-auditmod3b.c
==============================================================================
--- trunk/libc/elf/tst-auditmod3b.c (original)
+++ trunk/libc/elf/tst-auditmod3b.c Wed Mar 28 22:24:59 2012
@@ -105,10 +105,17 @@
return sym->st_value;
}
-#define pltenter la_x86_64_gnu_pltenter
-#define pltexit la_x86_64_gnu_pltexit
-#define La_regs La_x86_64_regs
-#define La_retval La_x86_64_retval
+#ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+#else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+#endif
#define int_retval lrv_rax
#include <tst-audit.h>
@@ -140,7 +147,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
__m128i xmm = _mm_set1_epi32 (-1);
asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" );
Modified: trunk/libc/elf/tst-auditmod4b.c
==============================================================================
--- trunk/libc/elf/tst-auditmod4b.c (original)
+++ trunk/libc/elf/tst-auditmod4b.c Wed Mar 28 22:24:59 2012
@@ -94,10 +94,17 @@
return sym->st_value;
}
-#define pltenter la_x86_64_gnu_pltenter
-#define pltexit la_x86_64_gnu_pltexit
-#define La_regs La_x86_64_regs
-#define La_retval La_x86_64_retval
+#ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+#else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+#endif
#define int_retval lrv_rax
#include <tst-audit.h>
@@ -177,7 +184,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
#ifdef __AVX__
if (check_avx () && strcmp (symname, "audit_test") == 0)
Modified: trunk/libc/elf/tst-auditmod5b.c
==============================================================================
--- trunk/libc/elf/tst-auditmod5b.c (original)
+++ trunk/libc/elf/tst-auditmod5b.c Wed Mar 28 22:24:59 2012
@@ -95,10 +95,17 @@
return sym->st_value;
}
-#define pltenter la_x86_64_gnu_pltenter
-#define pltexit la_x86_64_gnu_pltexit
-#define La_regs La_x86_64_regs
-#define La_retval La_x86_64_retval
+#ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+#else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+#endif
#define int_retval lrv_rax
#include <tst-audit.h>
@@ -150,7 +157,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
__m128i xmm;
Modified: trunk/libc/elf/tst-auditmod6b.c
==============================================================================
--- trunk/libc/elf/tst-auditmod6b.c (original)
+++ trunk/libc/elf/tst-auditmod6b.c Wed Mar 28 22:24:59 2012
@@ -94,10 +94,17 @@
return sym->st_value;
}
-#define pltenter la_x86_64_gnu_pltenter
-#define pltexit la_x86_64_gnu_pltexit
-#define La_regs La_x86_64_regs
-#define La_retval La_x86_64_retval
+#ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+#else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+#endif
#define int_retval lrv_rax
#include <tst-audit.h>
@@ -179,7 +186,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
#ifdef __AVX__
if (check_avx () && strcmp (symname, "audit_test") == 0)
Modified: trunk/libc/elf/tst-auditmod6c.c
==============================================================================
--- trunk/libc/elf/tst-auditmod6c.c (original)
+++ trunk/libc/elf/tst-auditmod6c.c Wed Mar 28 22:24:59 2012
@@ -94,10 +94,17 @@
return sym->st_value;
}
-#define pltenter la_x86_64_gnu_pltenter
-#define pltexit la_x86_64_gnu_pltexit
-#define La_regs La_x86_64_regs
-#define La_retval La_x86_64_retval
+#ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+#else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+#endif
#define int_retval lrv_rax
#include <tst-audit.h>
@@ -185,7 +192,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
#ifdef __AVX__
if (check_avx () && strcmp (symname, "audit_test") == 0)
Modified: trunk/libc/elf/tst-auditmod7b.c
==============================================================================
--- trunk/libc/elf/tst-auditmod7b.c (original)
+++ trunk/libc/elf/tst-auditmod7b.c Wed Mar 28 22:24:59 2012
@@ -94,10 +94,17 @@
return sym->st_value;
}
-#define pltenter la_x86_64_gnu_pltenter
-#define pltexit la_x86_64_gnu_pltexit
-#define La_regs La_x86_64_regs
-#define La_retval La_x86_64_retval
+#ifdef __LP64__
+# define pltenter la_x86_64_gnu_pltenter
+# define pltexit la_x86_64_gnu_pltexit
+# define La_regs La_x86_64_regs
+# define La_retval La_x86_64_retval
+#else
+# define pltenter la_x32_gnu_pltenter
+# define pltexit la_x32_gnu_pltexit
+# define La_regs La_x32_regs
+# define La_retval La_x32_retval
+#endif
#define int_retval lrv_rax
#include <tst-audit.h>
@@ -177,7 +184,8 @@
const char *symname)
{
printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
- symname, (long int) sym->st_value, ndx, outregs->int_retval);
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
#ifdef __AVX__
if (check_avx () && strcmp (symname, "audit_test") == 0)
Modified: trunk/libc/grp/Makefile
==============================================================================
--- trunk/libc/grp/Makefile (original)
+++ trunk/libc/grp/Makefile Wed Mar 28 22:24:59 2012
@@ -42,12 +42,6 @@
include ../Rules
-ifeq (yes,$(build-static-nss))
-otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a
-endif
-
-
ifeq ($(have-thread-library),yes)
OPTION_EGLIBC_INET-CFLAGS-$(OPTION_EGLIBC_INET) = -DUSE_NSCD=1
Modified: trunk/libc/include/link.h
==============================================================================
--- trunk/libc/include/link.h (original)
+++ trunk/libc/include/link.h Wed Mar 28 22:24:59 2012
@@ -330,4 +330,9 @@
size_t size, void *data),
void *data);
+/* We use this macro to refer to ELF macros independent of the native
+ wordsize. `ELFW(R_TYPE)' is used in place of `ELF32_R_TYPE' or
+ `ELF64_R_TYPE'. */
+#define ELFW(type) _ElfW (ELF, __ELF_NATIVE_CLASS, type)
+
#endif /* include/link.h */
Modified: trunk/libc/inet/Makefile
==============================================================================
--- trunk/libc/inet/Makefile (original)
+++ trunk/libc/inet/Makefile Wed Mar 28 22:24:59 2012
@@ -99,8 +99,3 @@
ifeq ($(build-static-nss),yes)
CFLAGS += -DSTATIC_NSS
endif
-
-ifeq (yes,$(build-static-nss))
-otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a
-endif
Modified: trunk/libc/login/Makefile
==============================================================================
--- trunk/libc/login/Makefile (original)
+++ trunk/libc/login/Makefile Wed Mar 28 22:24:59 2012
@@ -52,11 +52,6 @@
CFLAGS-getpt.c = -fexceptions
-ifeq (yes,$(build-static-nss))
-otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a $(common-objpfx)libc.a
-endif
-
ifeq (yesyes,$(have-fpie)$(build-shared))
pt_chown-cflags += $(pie-ccflag)
endif
Modified: trunk/libc/malloc/mallocbug.c
==============================================================================
--- trunk/libc/malloc/mallocbug.c (original)
+++ trunk/libc/malloc/mallocbug.c Wed Mar 28 22:24:59 2012
@@ -5,12 +5,15 @@
#define size_t unsigned int
+/* Defined as global variables to avoid warnings about unused variables. */
+char *dummy0;
+char *dummy1;
+char *fill_info_table1;
+
+
int
main (int argc, char *argv[])
{
- char *dummy0;
- char *dummy1;
- char *fill_info_table1;
char *over_top;
size_t over_top_size = 0x3000;
char *over_top_dup;
@@ -19,11 +22,11 @@
size_t i;
/* Here's what memory is supposed to look like (hex):
- size contents
- 3000 original_info_table, later fill_info_table1
+ size contents
+ 3000 original_info_table, later fill_info_table1
3fa000 dummy0
3fa000 dummy1
- 6000 info_table_2
+ 6000 info_table_2
3000 over_top
*/
Modified: trunk/libc/math/e_exp2l.c
==============================================================================
--- trunk/libc/math/e_exp2l.c (original)
+++ trunk/libc/math/e_exp2l.c Wed Mar 28 22:24:59 2012
@@ -1,11 +1,49 @@
+/* Compute 2^x.
+ Copyright (C) 2012 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, see
+ <http://www.gnu.org/licenses/>. */
+
#include <math.h>
#include <math_private.h>
+#include <float.h>
long double
__ieee754_exp2l (long double x)
{
- /* This is a very stupid and inprecise implementation. It'll get
- replaced sometime (soon?). */
- return __ieee754_expl (M_LN2l * x);
+ if (__builtin_expect (isless (x, (long double) LDBL_MAX_EXP), 1))
+ {
+ if (__builtin_expect (isgreaterequal (x, (long double) (LDBL_MIN_EXP
+ - LDBL_MANT_DIG
+ - 1)), 1))
+ {
+ int intx = (int) x;
+ long double fractx = x - intx;
+ return __scalbnl (__ieee754_expl (M_LN2l * fractx), intx);
+ }
+ else
+ {
+ /* Underflow or exact zero. */
+ if (__isinfl (x))
+ return 0;
+ else
+ return LDBL_MIN * LDBL_MIN;
+ }
+ }
+ else
+ /* Infinity, NaN or overflow. */
+ return LDBL_MAX * x;
}
strong_alias (__ieee754_exp2l, __exp2l_finite)
Modified: trunk/libc/math/libm-test.inc
==============================================================================
--- trunk/libc/math/libm-test.inc (original)
+++ trunk/libc/math/libm-test.inc Wed Mar 28 22:24:59 2012
@@ -754,6 +754,8 @@
/* |x| > 1: */
TEST_f_f (acos, 1.125L, nan_value, INVALID_EXCEPTION);
TEST_f_f (acos, -1.125L, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (acos, max_value, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (acos, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (acos, 0, M_PI_2l);
TEST_f_f (acos, minus_zero, M_PI_2l);
@@ -783,6 +785,7 @@
/* x < 1: */
TEST_f_f (acosh, -1.125L, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (acosh, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (acosh, 1, 0);
TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L);
@@ -808,6 +811,8 @@
/* asin x == NaN plus invalid exception for |x| > 1. */
TEST_f_f (asin, 1.125L, nan_value, INVALID_EXCEPTION);
TEST_f_f (asin, -1.125L, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (asin, max_value, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (asin, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (asin, 0, 0);
TEST_f_f (asin, minus_zero, minus_zero);
@@ -893,6 +898,8 @@
/* atanh (x) == NaN plus invalid exception if |x| > 1. */
TEST_f_f (atanh, 1.125L, nan_value, INVALID_EXCEPTION);
TEST_f_f (atanh, -1.125L, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (atanh, max_value, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (atanh, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L);
@@ -1917,6 +1924,35 @@
TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L);
#endif
+ TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L);
+ TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L);
+
+#ifndef TEST_FLOAT
+ TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L);
+ TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L);
+#endif
+
+#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
+ TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L);
+ TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION);
+#endif
+
+#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
+ TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION);
+#endif
+
+#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
+ TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION);
+#endif
+
+ TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION);
+ TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION);
+ TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION);
+
END (cexp, complex);
}
@@ -2978,6 +3014,11 @@
TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
#endif
+ /* Bug 13922: OVERFLOW exception may be missing. */
+ TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION_OK);
+ /* Bug 13705: spurious OVERFLOW exception may be present. */
+ TEST_f_f (exp, -max_value, 0, OVERFLOW_EXCEPTION_OK);
+
END (exp);
}
@@ -3111,6 +3152,11 @@
TEST_f_f (exp10, -1, 0.1L);
TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION);
TEST_f_f (exp10, -1e6, 0);
+#ifndef TEST_LDOUBLE /* Bug 13914: spurious exceptions. */
+ TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION);
+ /* Bug 13924: spurious OVERFLOW exception may be present. */
+ TEST_f_f (exp10, -max_value, 0, OVERFLOW_EXCEPTION_OK);
+#endif
TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L);
END (exp10);
@@ -3138,7 +3184,24 @@
TEST_f_f (exp2, -1, 0.5);
TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION);
TEST_f_f (exp2, -1e6, 0);
+ TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION);
+ TEST_f_f (exp2, -max_value, 0);
TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L);
+
+ TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L);
+ TEST_f_f (exp2, 127, 0x1p127);
+ TEST_f_f (exp2, -149, 0x1p-149);
+
+#ifndef TEST_FLOAT
+ TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L);
+ TEST_f_f (exp2, 1023, 0x1p1023);
+ TEST_f_f (exp2, -1074, 0x1p-1074);
+#endif
+
+#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
+ TEST_f_f (exp2, 16383, 0x1p16383L);
+ TEST_f_f (exp2, -16400, 0x1p-16400L);
+#endif
END (exp2);
}
@@ -3175,6 +3238,11 @@
/* Bug 13787: OVERFLOW exception may be missing. */
TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION_OK);
check_int ("errno for expm1(large) == ERANGE", errno, ERANGE, 0, 0, 0);
+ /* Bug 13787: OVERFLOW exception may be missing. */
+ TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION_OK);
+#ifndef TEST_LDOUBLE /* Bug 13923. */
+ TEST_f_f (expm1, -max_value, -1);
+#endif
END (expm1);
}
@@ -3937,6 +4005,8 @@
TEST_f_f (lgamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
check_int ("errno for lgamma(-integer) == ERANGE", errno, ERANGE, 0, 0, 0);
TEST_f_f (lgamma, minus_infty, plus_infty);
+ TEST_f_f (lgamma, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ TEST_f_f (lgamma, max_value, plus_infty, OVERFLOW_EXCEPTION);
TEST_f_f1 (lgamma, 1, 0, 1);
@@ -4838,6 +4908,7 @@
TEST_f_f (log, 1, 0);
TEST_f_f (log, -1, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (log, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (log, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (log, plus_infty, plus_infty);
TEST_f_f (log, nan_value, nan_value);
@@ -4870,6 +4941,7 @@
/* log10 (x) == NaN plus invalid exception if x < 0. */
TEST_f_f (log10, -1, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (log10, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (log10, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (log10, plus_infty, plus_infty);
@@ -4902,6 +4974,7 @@
TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
TEST_f_f (log1p, -2, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (log1p, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (log1p, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (log1p, plus_infty, plus_infty);
@@ -4933,6 +5006,7 @@
TEST_f_f (log2, 1, 0);
TEST_f_f (log2, -1, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (log2, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (log2, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (log2, plus_infty, plus_infty);
@@ -5541,8 +5615,7 @@
TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
check_int ("errno for pow(0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
errno = 0;
- /* Bug 13879: spurious OVERFLOW exception may be present. */
- TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|OVERFLOW_EXCEPTION_OK);
+ TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
check_int ("errno for pow(0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
errno = 0;
TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
@@ -5557,8 +5630,7 @@
TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
check_int ("errno for pow(-0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
errno = 0;
- /* Bug 13879: spurious OVERFLOW exception may be present. */
- TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|OVERFLOW_EXCEPTION_OK);
+ TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
check_int ("errno for pow(-0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION);
@@ -5758,6 +5830,259 @@
#if defined TEST_DOUBLE || defined TEST_LDOUBLE
TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0);
#endif
+
+ TEST_ff_f (pow, -1.0, -0xffffff, -1.0);
+ TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0);
+ TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0);
+ TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0);
+ TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0);
+ TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0);
+# endif
+#endif
+ TEST_ff_f (pow, -1.0, -max_value, 1.0);
+
+ TEST_ff_f (pow, -1.0, 0xffffff, -1.0);
+ TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0);
+ TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0);
+ TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0);
+ TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0);
+ TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0);
+# endif
+#endif
+ TEST_ff_f (pow, -1.0, max_value, 1.0);
+
+ TEST_ff_f (pow, -2.0, 126, 0x1p126);
+ TEST_ff_f (pow, -2.0, 127, -0x1p127);
+ TEST_ff_f (pow, -2.0, -126, 0x1p-126);
+ TEST_ff_f (pow, -2.0, -127, -0x1p-127);
+
+ TEST_ff_f (pow, -2.0, -0xffffff, minus_zero);
+ TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero);
+ TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero);
+ TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
+ TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
+ TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+# endif
+#endif
+ TEST_ff_f (pow, -2.0, -max_value, plus_zero);
+
+ TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+#endif
+ /* Bug 13873: OVERFLOW exception may be missing. */
+ TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION_OK);
+
+ TEST_ff_f (pow, -max_value, 0.5, nan_value, INVALID_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 1.5, nan_value, INVALID_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 1000.5, nan_value, INVALID_EXCEPTION);
+ TEST_ff_f (pow, -max_value, -2, plus_zero);
+ TEST_ff_f (pow, -max_value, -3, minus_zero);
+ TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION);
+
+ TEST_ff_f (pow, -max_value, -0xffffff, minus_zero);
+ TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero);
+ TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero);
+ TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
+ TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
+ TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+# endif
+#endif
+ /* Bug 13872: spurious OVERFLOW exception may be present. */
+ TEST_ff_f (pow, -max_value, -max_value, plus_zero, OVERFLOW_EXCEPTION_OK);
+
+ TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+#endif
+ /* Bug 13873: OVERFLOW exception may be missing. */
+ TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION_OK);
+
+ TEST_ff_f (pow, -0.5, 126, 0x1p-126);
+ TEST_ff_f (pow, -0.5, 127, -0x1p-127);
+ TEST_ff_f (pow, -0.5, -126, 0x1p126);
+ TEST_ff_f (pow, -0.5, -127, -0x1p127);
+
+ TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+#endif
+ /* Bug 13873: OVERFLOW exception may be missing. */
+ TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION_OK);
+
+ TEST_ff_f (pow, -0.5, 0xffffff, minus_zero);
+ TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero);
+ TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero);
+ TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
+ TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
+ TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+# endif
+#endif
+ TEST_ff_f (pow, -0.5, max_value, plus_zero);
+
+ TEST_ff_f (pow, -min_value, 0.5, nan_value, INVALID_EXCEPTION);
+ TEST_ff_f (pow, -min_value, 1.5, nan_value, INVALID_EXCEPTION);
+ TEST_ff_f (pow, -min_value, 1000.5, nan_value, INVALID_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, 1, -min_value);
+ TEST_ff_f (pow, -min_value, 2, plus_zero);
+ TEST_ff_f (pow, -min_value, 3, minus_zero);
+
+ TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
+ TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
+# endif
+#endif
+ /* Bug 13873: OVERFLOW exception may be missing. */
+ TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION_OK);
+
+ TEST_ff_f (pow, -min_value, 0xffffff, minus_zero);
+ TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero);
+#ifndef TEST_FLOAT
+ TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero);
+ TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero);
+#endif
+#ifdef TEST_LDOUBLE
+# if LDBL_MANT_DIG >= 64
+ TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero);
+ TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 106
+ TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
+ TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+# endif
+# if LDBL_MANT_DIG >= 113
+ TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
+ TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+# endif
+#endif
+ /* Bug 13872: spurious OVERFLOW exception may be present. */
+ TEST_ff_f (pow, -min_value, max_value, plus_zero, OVERFLOW_EXCEPTION_OK);
END (pow);
}
@@ -7052,6 +7377,7 @@
/* sqrt (x) == NaN plus invalid exception for x < 0. */
TEST_f_f (sqrt, -1, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (sqrt, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (sqrt, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (sqrt, nan_value, nan_value);
@@ -7290,10 +7616,12 @@
START (tgamma);
TEST_f_f (tgamma, plus_infty, plus_infty);
+ TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION);
TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
/* tgamma (x) == NaN plus invalid exception for integer x <= 0. */
TEST_f_f (tgamma, -2, nan_value, INVALID_EXCEPTION);
+ TEST_f_f (tgamma, -max_value, nan_value, INVALID_EXCEPTION);
TEST_f_f (tgamma, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (tgamma, nan_value, nan_value);
@@ -7437,6 +7765,7 @@
START (y0);
TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION);
+ TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION);
TEST_f_f (y0, 0.0, minus_infty);
TEST_f_f (y0, nan_value, nan_value);
TEST_f_f (y0, plus_infty, 0);
@@ -7477,6 +7806,7 @@
START (y1);
TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION);
+ TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION);
TEST_f_f (y1, 0.0, minus_infty);
TEST_f_f (y1, plus_infty, 0);
TEST_f_f (y1, nan_value, nan_value);
@@ -7518,6 +7848,7 @@
/* yn (0, x) == y0 (x) */
TEST_ff_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION);
+ TEST_ff_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION);
TEST_ff_f (yn, 0, 0.0, minus_infty);
TEST_ff_f (yn, 0, nan_value, nan_value);
TEST_ff_f (yn, 0, plus_infty, 0);
Modified: trunk/libc/math/s_cexp.c
==============================================================================
--- trunk/libc/math/s_cexp.c (original)
+++ trunk/libc/math/s_cexp.c Wed Mar 28 22:24:59 2012
@@ -1,5 +1,5 @@
/* Return value of complex exponential function for double complex value.
- Copyright (C) 1997, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -21,7 +21,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
-
+#include <float.h>
__complex__ double
__cexp (__complex__ double x)
@@ -36,20 +36,35 @@
if (__builtin_expect (icls >= FP_ZERO, 1))
{
/* Imaginary part is finite. */
- double exp_val = __ieee754_exp (__real__ x);
+ const int t = (int) ((DBL_MAX_EXP - 1) * M_LN2);
double sinix, cosix;
__sincos (__imag__ x, &sinix, &cosix);
- if (isfinite (exp_val))
+ if (__real__ x > t)
{
- __real__ retval = exp_val * cosix;
- __imag__ retval = exp_val * sinix;
+ double exp_t = __ieee754_exp (t);
+ __real__ x -= t;
+ sinix *= exp_t;
+ cosix *= exp_t;
+ if (__real__ x > t)
+ {
+ __real__ x -= t;
+ sinix *= exp_t;
+ cosix *= exp_t;
+ }
+ }
+ if (__real__ x > t)
+ {
+ /* Overflow (original real part of x > 3t). */
+ __real__ retval = DBL_MAX * cosix;
+ __imag__ retval = DBL_MAX * sinix;
}
else
{
- __real__ retval = __copysign (exp_val, cosix);
- __imag__ retval = __copysign (exp_val, sinix);
+ double exp_val = __ieee754_exp (__real__ x);
+ __real__ retval = exp_val * cosix;
+ __imag__ retval = exp_val * sinix;
}
}
else
Modified: trunk/libc/math/s_cexpf.c
==============================================================================
--- trunk/libc/math/s_cexpf.c (original)
+++ trunk/libc/math/s_cexpf.c Wed Mar 28 22:24:59 2012
@@ -1,5 +1,5 @@
/* Return value of complex exponential function for float complex value.
- Copyright (C) 1997, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -21,7 +21,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
-
+#include <float.h>
__complex__ float
__cexpf (__complex__ float x)
@@ -36,20 +36,35 @@
if (__builtin_expect (icls >= FP_ZERO, 1))
{
/* Imaginary part is finite. */
- float exp_val = __ieee754_expf (__real__ x);
+ const int t = (int) ((FLT_MAX_EXP - 1) * M_LN2);
float sinix, cosix;
__sincosf (__imag__ x, &sinix, &cosix);
- if (isfinite (exp_val))
+ if (__real__ x > t)
{
- __real__ retval = exp_val * cosix;
- __imag__ retval = exp_val * sinix;
+ float exp_t = __ieee754_expf (t);
+ __real__ x -= t;
+ sinix *= exp_t;
+ cosix *= exp_t;
+ if (__real__ x > t)
+ {
+ __real__ x -= t;
+ sinix *= exp_t;
+ cosix *= exp_t;
+ }
+ }
+ if (__real__ x > t)
+ {
+ /* Overflow (original real part of x > 3t). */
+ __real__ retval = FLT_MAX * cosix;
+ __imag__ retval = FLT_MAX * sinix;
}
else
{
- __real__ retval = __copysignf (exp_val, cosix);
- __imag__ retval = __copysignf (exp_val, sinix);
+ float exp_val = __ieee754_expf (__real__ x);
+ __real__ retval = exp_val * cosix;
+ __imag__ retval = exp_val * sinix;
}
}
else
Modified: trunk/libc/math/s_cexpl.c
==============================================================================
--- trunk/libc/math/s_cexpl.c (original)
+++ trunk/libc/math/s_cexpl.c Wed Mar 28 22:24:59 2012
@@ -1,5 +1,5 @@
/* Return value of complex exponential function for long double complex value.
- Copyright (C) 1997, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -21,7 +21,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
-
+#include <float.h>
__complex__ long double
__cexpl (__complex__ long double x)
@@ -36,20 +36,35 @@
if (__builtin_expect (icls >= FP_ZERO, 1))
{
/* Imaginary part is finite. */
- long double exp_val = __ieee754_expl (__real__ x);
+ const int t = (int) ((LDBL_MAX_EXP - 1) * M_LN2l);
long double sinix, cosix;
__sincosl (__imag__ x, &sinix, &cosix);
- if (isfinite (exp_val))
+ if (__real__ x > t)
{
- __real__ retval = exp_val * cosix;
- __imag__ retval = exp_val * sinix;
+ long double exp_t = __ieee754_expl (t);
+ __real__ x -= t;
+ sinix *= exp_t;
+ cosix *= exp_t;
+ if (__real__ x > t)
+ {
+ __real__ x -= t;
+ sinix *= exp_t;
+ cosix *= exp_t;
+ }
+ }
+ if (__real__ x > t)
+ {
+ /* Overflow (original real part of x > 3t). */
+ __real__ retval = LDBL_MAX * cosix;
+ __imag__ retval = LDBL_MAX * sinix;
}
else
{
- __real__ retval = __copysignl (exp_val, cosix);
- __imag__ retval = __copysignl (exp_val, sinix);
+ long double exp_val = __ieee754_expl (__real__ x);
+ __real__ retval = exp_val * cosix;
+ __imag__ retval = exp_val * sinix;
}
}
else
Modified: trunk/libc/math/w_acoshl.c
==============================================================================
--- trunk/libc/math/w_acoshl.c (original)
+++ trunk/libc/math/w_acoshl.c Wed Mar 28 22:24:59 2012
@@ -26,7 +26,7 @@
{
if (__builtin_expect (isless (x, 1.0L), 0) && _LIB_VERSION != _IEEE_)
/* acosh(x<1) */
- return __kernel_standard (x, x, 229);
+ return __kernel_standard_l (x, x, 229);
return __ieee754_acoshl (x);
}
Modified: trunk/libc/math/w_acosl.c
==============================================================================
--- trunk/libc/math/w_acosl.c (original)
+++ trunk/libc/math/w_acosl.c Wed Mar 28 22:24:59 2012
@@ -30,7 +30,7 @@
{
/* acos(|x|>1) */
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 201);
+ return __kernel_standard_l (x, x, 201);
}
return __ieee754_acosl (x);
Modified: trunk/libc/math/w_asinl.c
==============================================================================
--- trunk/libc/math/w_asinl.c (original)
+++ trunk/libc/math/w_asinl.c Wed Mar 28 22:24:59 2012
@@ -30,7 +30,7 @@
{
/* asin(|x|>1) */
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 202);
+ return __kernel_standard_l (x, x, 202);
}
return __ieee754_asinl (x);
Modified: trunk/libc/math/w_atan2l.c
==============================================================================
--- trunk/libc/math/w_atan2l.c (original)
+++ trunk/libc/math/w_atan2l.c Wed Mar 28 22:24:59 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxx>, 2011.
@@ -28,7 +28,7 @@
__atan2l (long double y, long double x)
{
if (__builtin_expect (x == 0.0L && y == 0.0L, 0) && _LIB_VERSION == _SVID_)
- return __kernel_standard (y, x, 203); /* atan2(+-0,+-0) */
+ return __kernel_standard_l (y, x, 203); /* atan2(+-0,+-0) */
return __ieee754_atan2l (y, x);
}
Modified: trunk/libc/math/w_atanhl.c
==============================================================================
--- trunk/libc/math/w_atanhl.c (original)
+++ trunk/libc/math/w_atanhl.c Wed Mar 28 22:24:59 2012
@@ -26,10 +26,10 @@
{
if (__builtin_expect (isgreaterequal (fabsl (x), 1.0L), 0)
&& _LIB_VERSION != _IEEE_)
- return __kernel_standard (x, x,
- fabsl (x) > 1.0L
- ? 230 /* atanh(|x|>1) */
- : 231); /* atanh(|x|==1) */
+ return __kernel_standard_l (x, x,
+ fabsl (x) > 1.0L
+ ? 230 /* atanh(|x|>1) */
+ : 231); /* atanh(|x|==1) */
return __ieee754_atanhl (x);
}
Modified: trunk/libc/math/w_coshl.c
==============================================================================
--- trunk/libc/math/w_coshl.c (original)
+++ trunk/libc/math/w_coshl.c Wed Mar 28 22:24:59 2012
@@ -28,7 +28,7 @@
long double z = __ieee754_coshl (x);
if (__builtin_expect (!__finitel (z), 0) && __finitel (x)
&& _LIB_VERSION != _IEEE_)
- return __kernel_standard (x, x, 205); /* cosh overflow */
+ return __kernel_standard_l (x, x, 205); /* cosh overflow */
return z;
}
Modified: trunk/libc/math/w_exp10l.c
==============================================================================
--- trunk/libc/math/w_exp10l.c (original)
+++ trunk/libc/math/w_exp10l.c Wed Mar 28 22:24:59 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxx>, 2011.
@@ -31,7 +31,7 @@
if (__builtin_expect (!__finitel (z), 0)
&& __finitel (x) && _LIB_VERSION != _IEEE_)
/* exp10l overflow (246) if x > 0, underflow (247) if x < 0. */
- return __kernel_standard (x, x, 246 + !!__signbitl (x));
+ return __kernel_standard_l (x, x, 246 + !!__signbitl (x));
return z;
}
Modified: trunk/libc/math/w_exp2l.c
==============================================================================
--- trunk/libc/math/w_exp2l.c (original)
+++ trunk/libc/math/w_exp2l.c Wed Mar 28 22:24:59 2012
@@ -12,7 +12,7 @@
if (__builtin_expect (!__finitel (z), 0)
&& __finitel (x) && _LIB_VERSION != _IEEE_)
/* exp2 overflow: 244, exp2 underflow: 245 */
- return __kernel_standard (x, x, 244 + !!__signbitl (x));
+ return __kernel_standard_l (x, x, 244 + !!__signbitl (x));
return z;
}
Modified: trunk/libc/math/w_fmodl.c
==============================================================================
--- trunk/libc/math/w_fmodl.c (original)
+++ trunk/libc/math/w_fmodl.c Wed Mar 28 22:24:59 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxx>, 2011.
@@ -26,7 +26,7 @@
if (__builtin_expect (__isinf_nsl (x) || y == 0.0L, 0)
&& _LIB_VERSION != _IEEE_ && !__isnanl (y) && !__isnanl (x))
/* fmod(+-Inf,y) or fmod(x,0) */
- return __kernel_standard (x, y, 227);
+ return __kernel_standard_l (x, y, 227);
return __ieee754_fmodl (x, y);
}
Modified: trunk/libc/math/w_hypotl.c
==============================================================================
--- trunk/libc/math/w_hypotl.c (original)
+++ trunk/libc/math/w_hypotl.c Wed Mar 28 22:24:59 2012
@@ -29,7 +29,7 @@
z = __ieee754_hypotl(x,y);
if(__builtin_expect(!__finitel(z), 0)
&& __finitel(x) && __finitel(y) && _LIB_VERSION != _IEEE_)
- return __kernel_standard(x, y, 204); /* hypot overflow */
+ return __kernel_standard_l(x, y, 204); /* hypot overflow */
return z;
}
Modified: trunk/libc/math/w_j0l.c
==============================================================================
--- trunk/libc/math/w_j0l.c (original)
+++ trunk/libc/math/w_j0l.c Wed Mar 28 22:24:59 2012
@@ -28,7 +28,7 @@
if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j0(|x|>X_TLOSS) */
- return __kernel_standard (x, x, 234);
+ return __kernel_standard_l (x, x, 234);
return __ieee754_j0l (x);
}
@@ -46,14 +46,14 @@
{
/* d = zero/(x-x) */
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 209);
+ return __kernel_standard_l (x, x, 209);
}
else if (x == 0.0L)
/* d = -one/(x-x) */
- return __kernel_standard (x, x, 208);
+ return __kernel_standard_l (x, x, 208);
else if (_LIB_VERSION != _POSIX_)
/* y0(x>X_TLOSS) */
- return __kernel_standard (x, x, 235);
+ return __kernel_standard_l (x, x, 235);
}
return __ieee754_y0l (x);
Modified: trunk/libc/math/w_j1l.c
==============================================================================
--- trunk/libc/math/w_j1l.c (original)
+++ trunk/libc/math/w_j1l.c Wed Mar 28 22:24:59 2012
@@ -28,7 +28,7 @@
if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j1(|x|>X_TLOSS) */
- return __kernel_standard (x, x, 236);
+ return __kernel_standard_l (x, x, 236);
return __ieee754_j1l (x);
}
@@ -46,14 +46,14 @@
{
/* d = zero/(x-x) */
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 211);
+ return __kernel_standard_l (x, x, 211);
}
else if (x == 0.0L)
/* d = -one/(x-x) */
- return __kernel_standard (x, x, 210);
+ return __kernel_standard_l (x, x, 210);
else if (_LIB_VERSION != _POSIX_)
/* y1(x>X_TLOSS) */
- return __kernel_standard (x, x, 237);
+ return __kernel_standard_l (x, x, 237);
}
return __ieee754_y1l (x);
Modified: trunk/libc/math/w_jnl.c
==============================================================================
--- trunk/libc/math/w_jnl.c (original)
+++ trunk/libc/math/w_jnl.c Wed Mar 28 22:24:59 2012
@@ -59,7 +59,7 @@
|| __isnanl(x))
return z;
if(fabsl(x)>X_TLOSS) {
- return __kernel_standard((double)n,x,238); /* jn(|x|>X_TLOSS,n) */
+ return __kernel_standard_l((double)n,x,238); /* jn(|x|>X_TLOSS,n) */
} else
return z;
#endif
@@ -77,13 +77,13 @@
if(x <= 0.0){
if(x==0.0)
/* d= -one/(x-x); */
- return __kernel_standard((double)n,x,212);
+ return __kernel_standard_l((double)n,x,212);
else
/* d = zero/(x-x); */
- return __kernel_standard((double)n,x,213);
+ return __kernel_standard_l((double)n,x,213);
}
if(x>X_TLOSS && _LIB_VERSION != _POSIX_) {
- return __kernel_standard((double)n,x,239); /* yn(x>X_TLOSS,n) */
+ return __kernel_standard_l((double)n,x,239); /* yn(x>X_TLOSS,n) */
} else
return z;
#endif
Modified: trunk/libc/math/w_lgammal.c
==============================================================================
--- trunk/libc/math/w_lgammal.c (original)
+++ trunk/libc/math/w_lgammal.c Wed Mar 28 22:24:59 2012
@@ -35,10 +35,10 @@
: &local_signgam);
if(__builtin_expect(!__finitel(y), 0)
&& __finitel(x) && _LIB_VERSION != _IEEE_)
- return __kernel_standard(x, x,
- __floorl(x)==x&&x<=0.0L
- ? 215 /* lgamma pole */
- : 214); /* lgamma overflow */
+ return __kernel_standard_l(x, x,
+ __floorl(x)==x&&x<=0.0L
+ ? 215 /* lgamma pole */
+ : 214); /* lgamma overflow */
return y;
}
Modified: trunk/libc/math/w_log10l.c
==============================================================================
--- trunk/libc/math/w_log10l.c (original)
+++ trunk/libc/math/w_log10l.c Wed Mar 28 22:24:59 2012
@@ -30,12 +30,12 @@
if (x == 0.0L)
{
feraiseexcept (FE_DIVBYZERO);
- return __kernel_standard (x, x, 218); /* log10(0) */
+ return __kernel_standard_l (x, x, 218); /* log10(0) */
}
else
{
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 219); /* log10(x<0) */
+ return __kernel_standard_l (x, x, 219); /* log10(x<0) */
}
}
Modified: trunk/libc/math/w_log2l.c
==============================================================================
--- trunk/libc/math/w_log2l.c (original)
+++ trunk/libc/math/w_log2l.c Wed Mar 28 22:24:59 2012
@@ -30,12 +30,12 @@
if (x == 0.0L)
{
feraiseexcept (FE_DIVBYZERO);
- return __kernel_standard (x, x, 248); /* log2(0) */
+ return __kernel_standard_l (x, x, 248); /* log2(0) */
}
else
{
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 249); /* log2(x<0) */
+ return __kernel_standard_l (x, x, 249); /* log2(x<0) */
}
}
Modified: trunk/libc/math/w_logl.c
==============================================================================
--- trunk/libc/math/w_logl.c (original)
+++ trunk/libc/math/w_logl.c Wed Mar 28 22:24:59 2012
@@ -30,12 +30,12 @@
if (x == 0.0L)
{
feraiseexcept (FE_DIVBYZERO);
- return __kernel_standard (x, x, 216); /* log(0) */
+ return __kernel_standard_l (x, x, 216); /* log(0) */
}
else
{
feraiseexcept (FE_INVALID);
- return __kernel_standard (x, x, 217); /* log(x<0) */
+ return __kernel_standard_l (x, x, 217); /* log(x<0) */
}
}
Modified: trunk/libc/math/w_powl.c
==============================================================================
--- trunk/libc/math/w_powl.c (original)
+++ trunk/libc/math/w_powl.c Wed Mar 28 22:24:59 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxx>, 2011.
@@ -33,25 +33,25 @@
{
if (y == 0.0L)
/* pow(NaN,0.0) */
- return __kernel_standard (x, y, 242);
+ return __kernel_standard_l (x, y, 242);
}
else if (__finitel (x) && __finitel (y))
{
if (__isnanl (z))
/* pow neg**non-int */
- return __kernel_standard (x, y, 224);
+ return __kernel_standard_l (x, y, 224);
else if (x == 0.0L && y < 0.0L)
{
if (signbit (x) && signbit (z))
/* pow(-0.0,negative) */
- return __kernel_standard (x, y, 223);
+ return __kernel_standard_l (x, y, 223);
else
/* pow(+0.0,negative) */
- return __kernel_standard (x, y, 243);
+ return __kernel_standard_l (x, y, 243);
}
else
/* pow overflow */
- return __kernel_standard (x, y, 221);
+ return __kernel_standard_l (x, y, 221);
}
}
}
@@ -62,11 +62,11 @@
{
if (y == 0.0L)
/* pow(0.0,0.0) */
- return __kernel_standard (x, y, 220);
+ return __kernel_standard_l (x, y, 220);
}
else
/* pow underflow */
- return __kernel_standard (x, y, 222);
+ return __kernel_standard_l (x, y, 222);
}
return z;
Modified: trunk/libc/math/w_remainderl.c
==============================================================================
--- trunk/libc/math/w_remainderl.c (original)
+++ trunk/libc/math/w_remainderl.c Wed Mar 28 22:24:59 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxx>, 2011.
@@ -27,7 +27,7 @@
if (((__builtin_expect (y == 0.0L, 0) && ! __isnanl (x))
|| (__builtin_expect (__isinf_nsl (x), 0) && ! __isnanl (y)))
&& _LIB_VERSION != _IEEE_)
- return __kernel_standard (x, y, 228); /* remainder domain */
+ return __kernel_standard_l (x, y, 228); /* remainder domain */
return __ieee754_remainderl (x, y);
}
Modified: trunk/libc/math/w_scalbl.c
==============================================================================
--- trunk/libc/math/w_scalbl.c (original)
+++ trunk/libc/math/w_scalbl.c Wed Mar 28 22:24:59 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxx>, 2011.
@@ -30,12 +30,12 @@
if (__builtin_expect (__isinfl (z), 0))
{
if (__finitel (x))
- return __kernel_standard (x, fn, 232); /* scalb overflow */
+ return __kernel_standard_l (x, fn, 232); /* scalb overflow */
else
__set_errno (ERANGE);
}
else if (__builtin_expect (z == 0.0L, 0) && z != x)
- return __kernel_standard (x, fn, 233); /* scalb underflow */
+ return __kernel_standard_l (x, fn, 233); /* scalb underflow */
return z;
}
Modified: trunk/libc/math/w_sinhl.c
==============================================================================
--- trunk/libc/math/w_sinhl.c (original)
+++ trunk/libc/math/w_sinhl.c Wed Mar 28 22:24:59 2012
@@ -27,7 +27,7 @@
long double z = __ieee754_sinhl (x);
if (__builtin_expect (!__finitel (z), 0) && __finitel (x)
&& _LIB_VERSION != _IEEE_)
- return __kernel_standard (x, x, 225); /* sinh overflow */
+ return __kernel_standard_l (x, x, 225); /* sinh overflow */
return z;
}
Modified: trunk/libc/math/w_sqrtl.c
==============================================================================
--- trunk/libc/math/w_sqrtl.c (original)
+++ trunk/libc/math/w_sqrtl.c Wed Mar 28 22:24:59 2012
@@ -25,7 +25,7 @@
__sqrtl (long double x)
{
if (__builtin_expect (isless (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
- return __kernel_standard (x, x, 226); /* sqrt(negative) */
+ return __kernel_standard_l (x, x, 226); /* sqrt(negative) */
return __ieee754_sqrtl (x);
}
Modified: trunk/libc/math/w_tgammal.c
==============================================================================
--- trunk/libc/math/w_tgammal.c (original)
+++ trunk/libc/math/w_tgammal.c Wed Mar 28 22:24:59 2012
@@ -30,11 +30,11 @@
if(__builtin_expect(!__finitel(y), 0) && __finitel(x)
&& _LIB_VERSION != _IEEE_) {
if(x==0.0)
- return __kernel_standard(x,x,250); /* tgamma pole */
+ return __kernel_standard_l(x,x,250); /* tgamma pole */
else if(__floorl(x)==x&&x<0.0L)
- return __kernel_standard(x,x,241); /* tgamma domain */
+ return __kernel_standard_l(x,x,241); /* tgamma domain */
else
- return __kernel_standard(x,x,240); /* tgamma overflow */
+ return __kernel_standard_l(x,x,240); /* tgamma overflow */
}
return local_signgam < 0 ? - y : y;
}
Modified: trunk/libc/nptl/ChangeLog
==============================================================================
--- trunk/libc/nptl/ChangeLog (original)
+++ trunk/libc/nptl/ChangeLog Wed Mar 28 22:24:59 2012
@@ -1,3 +1,9 @@
+2012-03-27 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * tst-cond16.c (do_test): Use a thread stack size which is either
+ PTHREAD_STACK_MIN or the page size, whichever is larger.
+ * tst-cond18.c (do_test): Likewise.
+
2012-03-19 H.J. Lu <hongjiu.lu@xxxxxxxxx>
* sysdeps/x86_64/pthreaddef.h (CURRENT_STACK_FRAME): Use
Modified: trunk/libc/nptl/tst-cond16.c
==============================================================================
--- trunk/libc/nptl/tst-cond16.c (original)
+++ trunk/libc/nptl/tst-cond16.c Wed Mar 28 22:24:59 2012
@@ -76,9 +76,15 @@
count *= 4;
pthread_t th[count];
- int i, ret;
+ pthread_attr_t attr;
+ int i, ret, sz;
+ pthread_attr_init (&attr);
+ sz = __getpagesize ();
+ if (sz < PTHREAD_STACK_MIN)
+ sz = PTHREAD_STACK_MIN;
+ pthread_attr_setstacksize (&attr, sz);
for (i = 0; i < count; ++i)
- if ((ret = pthread_create (&th[i], NULL, tf, NULL)) != 0)
+ if ((ret = pthread_create (&th[i], &attr, tf, NULL)) != 0)
{
errno = ret;
printf ("pthread_create %d failed: %m\n", i);
Modified: trunk/libc/nptl/tst-cond18.c
==============================================================================
--- trunk/libc/nptl/tst-cond18.c (original)
+++ trunk/libc/nptl/tst-cond18.c Wed Mar 28 22:24:59 2012
@@ -87,10 +87,16 @@
count *= 8;
pthread_t th[count + 1];
- int i, ret;
+ pthread_attr_t attr;
+ int i, ret, sz;
+ pthread_attr_init (&attr);
+ sz = __getpagesize ();
+ if (sz < PTHREAD_STACK_MIN)
+ sz = PTHREAD_STACK_MIN;
+ pthread_attr_setstacksize (&attr, sz);
for (i = 0; i <= count; ++i)
- if ((ret = pthread_create (&th[i], NULL, tf, (void *) (long) i)) != 0)
+ if ((ret = pthread_create (&th[i], &attr, tf, (void *) (long) i)) != 0)
{
errno = ret;
printf ("pthread_create %d failed: %m\n", i);
Modified: trunk/libc/nscd/Makefile
==============================================================================
--- trunk/libc/nscd/Makefile (original)
+++ trunk/libc/nscd/Makefile Wed Mar 28 22:24:59 2012
@@ -51,11 +51,6 @@
extra-objs-$(OPTION_EGLIBC_INET) += $(nscd-modules:=.o)
-endif
-
-ifeq (yes,$(build-static-nss))
-otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a
endif
all-nscd-modules := $(nscd-modules) selinux
Modified: trunk/libc/nss/Makefile
==============================================================================
--- trunk/libc/nss/Makefile (original)
+++ trunk/libc/nss/Makefile Wed Mar 28 22:24:59 2012
@@ -50,11 +50,6 @@
include ../Makeconfig
-ifeq (yes,$(build-static-nss))
-otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a
-endif
-
# Specify rules for the nss_* modules. We have some services.
services := files db
@@ -81,10 +76,12 @@
install-others += $(inst_vardbdir)/Makefile
-# Build static module if requested
-ifneq ($(build-static-nss),yes)
[... 4191 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits