[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/...



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