This patch added a new fmemopen version, for glibc 2.22, that aims to be
POSIX complaint. It fixes some long-stading glibc fmemopen issues, such
as:
* it changes the way fseek with SEEK_END works on fmemopen to seek
relative to buffer size instead of first '\0'. This is default mode and
'b' opening mode does not change internal behavior (bz#6544).
* fix apending opening mode to use as start position either first null
byte of len specified in function call (bz#13152 and #13151).
* remove binary option 'b' and internal different handling (bz#12836)
* fix seek/SEE_END with negative values (bz#14292).
A compatibility symbol is provided to with old behavior for older symbols
version (2.2.5).
* include/stdio.h (fmemopen): Remove hidden prototype.
(__fmemopen): Add new hidden prototype.
* libio/Makefile: Add oldfmemopen object.
* libio/Versions [GLIBC_2.22]: Add new fmemopen symbol.
* libio/fmemopen.c (__fmemopen): Function rewrite to be POSIX
compliance.
* libio/oldfmemopen.c: New file: old fmemopen implementation for
symbol compatibility.
* stdio-common/Makefile [tests]: Add new tst-fmemopen3.
* stdio-common/psiginfo.c [psiginfo]: Call __fmemopen instead of
fmemopen.
* stdio-common/tst-fmemopen3.c: New file: more fmemopen tests, focus
on append and read mode.
* sysdeps/unix/sysv/linux/aarch64/libc.abilist [GLIBC_2.22]: Add
fmemopen.
* sysdeps/unix/sysv/linux/alpha/libc.abilist [GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/arm/libc.abilist [GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/i386/libc.abilist [GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/ia64/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/microblaze/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/sh/libc.abilist [GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
[GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist [GLIBC_2.22]:
Likewise.
* sysdeps/unix/sysv/linux/hppa/libc.abilist [GLIBC_2.22]: Likewise.
* sysdeps/unix/sysv/linux/nios2/libc.abilist [GLIBC_2.22]: Likewise.
For maximum paranoia we run ld.so through the normal set
of tests for all of the shared libraries. This includes
running ld.so through check-localplt, check-textrel, and
check-execstack. While none of these should trigger any
failures given the way ld.so is built, it might possibly
fail if a developer does something wrong. This paranoia
was triggered by a discussion over the use of __strcpy
vs. strcpy [1] and if the symbol could leak and use the
libc.so version.
The check-localplt test fails right away because localplt.data
needs updating for all arches. By default we add 6 new symbols:
__tls_get_addr, __libc_memalign, malloc, calloc, realloc and
free. Other machines like i386, power, and s390 require some
different symbol sets e.g. ___tls_get_addr vs. __tls_get_addr
for i386.
Verified for i386
Verified for x86_64
Verified for ppc32
Verified for ppc64
Verified for ppc64le
Verified for arm
Verified for aarch64
Verified for s390
Verified for s390x
Guessed for alpha
Guessed for ia64
Guessed for m68k
Guessed for microblaze
Guessed for sparc32
Guessed for sparc64
Defaults for sh
Defaults for mips
Defaults for hppa
Defaults for tile
Machine manintainers notified to double check the data
used in localplt.data.
[1] https://sourceware.org/ml/libc-alpha/2014-10/msg00548.html
This patch introduces two new convenience functions to set the default
thread attributes used for creating threads. This allows a programmer
to set the default thread attributes just once in a process and then
run pthread_create without additional attributes.
This feature is specifically for the C++ compiler to offload calling
thread_local object destructors on thread program exit, to glibc.
This is to overcome the possible complication of destructors of
thread_local objects getting called after the DSO in which they're
defined is unloaded by the dynamic linker. The DSO is marked as
'unloadable' if it has a constructed thread_local object and marked as
'unloadable' again when all the constructed thread_local objects
defined in it are destroyed.
* Makerules (%.abilist): Add vpath on sysdep_dirs.
(check-abi-%): Remove AWK script prerequisite and explicit
abilist directory.
(check-abi): Rewrite to just diff the symlist with the abilist.
(config-tls, config-abi-config): Delete, no longer used.
(update-abi-%): Remove AWK script and explicit abilist directory.
(update-abi): Rewrite to simply compare and conditionally copy the
symlist and the sysdep abilist file. Remove update-abi-config
checks.
* abilist/ld.abilist: Remove.
* abilist/libBrokenLocale.abilist: Remove.
* abilist/libanl.abilist: Remove.
* abilist/libcrypt.abilist: Remove.
* abilist/libdl.abilist: Remove.
* abilist/librt.abilist: Remove.
* abilist/libthread_db.abilist: Remove.
* abilist/libutil.abilist: Remove.
* scripts/extract-abilist.awk: Remove.
* scripts/merge-abilist.awk: Remove.
* sysdeps/generic/libcidn.abilist: New file.
* sysdeps/generic/libnss_compat.abilist: New file.
* sysdeps/generic/libnss_db.abilist: New file.
* sysdeps/generic/libnss_dns.abilist: New file.
* sysdeps/generic/libnss_files.abilist: New file.
* sysdeps/generic/libnss_hesiod.abilist: New file.
* sysdeps/generic/libnss_nis.abilist: New file.
* sysdeps/generic/libnss_nisplus.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libBrokenLocale.abilist: New
file.
* sysdeps/unix/sysv/linux/i386/nptl/libc.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libm.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libpthread.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/librt.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libthread_db.abilist: New
file.
* sysdeps/unix/sysv/linux/i386/nptl/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libBrokenLocale.abilist: New
file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libc.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libm.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libpthread.abilist: New
file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/librt.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libthread_db.abilist: New
file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/ld.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libanl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libc.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libcrypt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libdl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libm.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libnsl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/librt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libutil.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld.abilist: New
file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libresolv.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libresolv.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libutil.abilist: New
file.
* sysdeps/unix/sysv/linux/sh/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libBrokenLocale.abilist: New
file.
* sysdeps/unix/sysv/linux/sh/nptl/libc.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libm.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libpthread.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/librt.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libthread_db.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libutil.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libutil.abilist: New
file.
__fe_nomask_env.
* sysdeps/powerpc/fpu/fe_nomask.c: Add libm_hidden_def.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: Likewise.
* sysdeps/powerpc/bits/fenv.h: Make safe for C++.
* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: New file.
* sysdeps/powerpc/fpu/fegetexcept.c (__fegetexcept): Rename
function from fegetexcept and make old name weak alias.
* include/fenv.h: Declare __fegetexcept.
* sysdeps/powerpc/fpu/fedisblxcpt.c: Use __fegetexcept instead of
fegetexcept.
* sysdeps/powerpc/fpu/feenablxcpt.c: Likewise.
* sysdeps/powerpc/fpu/fraiseexcpt.c (__feraiseexcept): Avoid call
to fetestexcept.
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Use __frexpl
instead of frexpl to avoid local PLT.
* math/s_significandl.c (__significandl): Use __ilogbl instead of
ilogbl to avoid local PLT.
* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Use __ldexpl
instead of ldexpl to avoid local PLT.
* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use
__roundl not roundl to avoid local PLT.
* sysdeps/ieee754/ldbl-128/e_j0l.c: Use function names which avoid
local PLTs. Use __sincosl instead of separate sinl and cosl
calls.
* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
Peter Bergner <bergner@us.ibm.com>
* sysdeps/powerpc/bits/fenv.h: Declare __fe_mask_env extern.
Define FE_NOMASK_ENV as FE_EANBLED_ENV. Define FE_MASK_ENV.
* sysdeps/powerpc/fpu/Makefile: Add fe_mask to libm-support.
* sysdeps/powerpc/fpu/fe_mask.c: New file.
* sysdeps/powerpc/fpu/fe_nomask.c: Correct comment.
* sysdeps/powerpc/fpu/fedisblxcpt.c (fedisableexcept):
Call __fe_mask_env() if all FP exceptions disabled.
* sysdeps/powerpc/fpu/feholdexcpt.c (feholdexcept): Copy high 32-bits
from old FPSCR to new fenv to propagate DFP rounding modes.
Call __fe_mask_env() if FP exceptions previously enabled.
* sysdeps/powerpc/fpu/fesetenv.c (fesetenv): Change mask to merge
exceptions from env. Use __fe_nomask_env() or __fe_mask_env() when
transitioning from all exceptions disabled to any exception enabled
or visa versa.
* sysdeps/powerpc/fpu/feupdateenv.c (__feupdateenv): Change mask to
merge exceptions from env. Call __fe_nomask_env or __fe_mask_env
when transitioning from all exceptions disabled to any exception
enabled or visa versa.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: Moved to...
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: ...here.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: Moved to...
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: ...here.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c: New file.
Jakub Jelinek <jakub@redhat.com>
Roland McGrath <roland@redhat.com>
Steven Munroe <sjmunroe@us.ibm.com>
Alan Modra <amodra@bigpond.net.au>
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Comment fix.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
* math/libm-test.inc (check_float_internal): Allow ulp <= 0.5.
(erfc_test): Don't run erfcl (27.0L) test if erfcl (27.0L) is
denormal.
[TEST_LDOUBLE] (ceil_test, floor_test, llrint_test, llround_test,
rint_test, round_test, trunc_test): Add new tests.
* sysdeps/powerpc/powerpc32/fpu/s_copysignl.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fabs.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fabsl.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fdim.c: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fmax.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fmin.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_isnan.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_ceill.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_copysignl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fabs.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fabsl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fdim.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_floorl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fmax.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fmin.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_isnan.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llrintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llroundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lrintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lroundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_rintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_roundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_truncl.S: New file.
* sysdeps/unix/sysv/linux/powerpc/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/configure.in: New file.
* sysdeps/unix/sysv/linux/powerpc/configure: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
(__LONG_DOUBLE_MATH_OPTIONAL): Define.
(__NO_LONG_DOUBLE_MATH): Define.
* sysdeps/unix/sysv/linux/powerpc/nldbl-abi.h: New file.
* sysdeps/powerpc/fpu/s_isnan.c: Include math_ldbl_opt.h.
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (ceill): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (copysignl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (floorl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llrintl, lrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_llround.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llroundl, lroundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (rintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (roundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (truncl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (ceill): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (copysignl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (floorl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (lrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (lroundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (rintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (roundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (truncl): Add compatibility symbols.
* misc/qefgcvt_r.c [LDBL_MIN_10_EXP == -291] (FLOAT_MIN_10_NORM): New.
* sysdeps/powerpc/fpu/bits/mathdef.h (__NO_LONG_DOUBLE_MATH): Remove.
* sysdeps/powerpc/Implies: Add ieee754/ldbl-128ibm.
* sysdeps/powerpc/powerpc32/Implies: Remove powerpc/soft-fp.
* sysdeps/ieee754/ldbl-128ibm/Makefile: New file.
* sysdeps/ieee754/ldbl-128ibm/e_acoshl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_acosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_asinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_coshl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_expl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_j0l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_jnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_log10l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_log2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_logl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_powl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/ieee754.h: New file.
* sysdeps/ieee754/ldbl-128ibm/k_cosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_sinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_tanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c: New file.
* sysdeps/ieee754/ldbl-128ibm/math_ldbl.h: New file.
* sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/printf_fphex.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_atanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_cosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_erfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_fabsl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_finitel.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_frexpl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_isinfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_isnanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_logbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_modfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_remquol.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_signbitl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_sinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_tanhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_tanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_truncl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/strtold_l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/t_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/w_expl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_floorl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_roundl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_ceill.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_lroundl.c: New file.
* sysdeps/ieee754/ldbl-128/e_powl.c: Fix old comment.