This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] long double update
- From: Dwayne Grant McConnell <decimal at us dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com
- Date: Fri, 11 Nov 2005 16:42:01 -0600 (Central Standard Time)
- Subject: [PATCH] long double update
Here is an updated version of Jakub's patch from
http://sourceware.org/ml/libc-alpha/2004-07/msg00026.html
I had to make a few changes to get it to merge cleanly with latest CVS
head.
In moving forward with my ppc64 long double patch from
http://sources.redhat.com/ml/libc-alpha/2005-03/msg00156.html
I'm thinking of breaking up Jakub's patch into arch neutral and arch
specific portions because I'm not familiar with the sparc specific stuff.
--
Dwayne Grant McConnell <decimal@us.ibm.com>
Lotus Notes Mail: Dwayne McConnell [Mail]/Austin/IBM@IBMUS
Lotus Notes Calendar: Dwayne McConnell [Calendar]/Austin/IBM@IBMUS
2004-07-12 Jakub Jelinek <jakub@redhat.com>
* extra-lib.mk (object-suffixes-$(lib)): Add
$($(lib)-extra-object-suffixes).
* math/math.h [__NO_LONG_DOUBLE_MATH] (__nldbl_nexttowardf): New
prototype.
(nexttowardf): Redirect to __nldbl_nexttowardf.
(nexttoward): Redirect to nextafter.
(__MATHDECL_2, __MATHDECL_1): Redirect *l functions to
non-*l versions if __LONG_DOUBLE_MATH_OPTIONAL and
__NO_LONG_DOUBLE_MATH.
* math/complex.h (__MATHDECL_1): Likewise.
* math/bits/mathcalls.h (nexttoward): Don't prototype if
__NLDBL_COMPAT.
* misc/sys/cdefs.h: Include bits/wordsize.h.
(__NLDBL_REDIR, __NLDBL_REDIR2): Define.
* libio/stdio.h (fprintf, printf, sprintf, vfprintf, vprintf, vsprintf,
fscanf, scanf, sscanf, snprintf, vsnprintf, vfscanf, vscanf, vsscanf,
vasprintf, __asprintf, asprintf, vdprintf, dprintf, obstack_printf,
obstack_vprintf): Add __NLDBL_REDIR.
* libio/libioP.h: Include bits/wordsize.h.
[__LONG_DOUBLE_MATH_OPTIONAL]: Include stdbool.h, math_ldbl_opt.h.
(NLDBL_0, NLDBL_ARG, NLDBL_DECL, DBL_IS_LDBL): Define.
(___vfprintf, ___vfwprintf, ___vdprintf, ___vsprintf,
___obstack_vprintf, ___vasprintf, ___vsnprintf, ___vswprintf,
__IO_vfscanf, __IO_vfwscanf, ___vsscanf, ___vswscanf): New prototypes.
* wcsmbs/wchar.h: Include bits/wordsize.h.
(fwprintf, wprintf, swprintf, vfwprintf, vwprintf, vswprintf, fwscanf,
wscanf, swscanf, vfwscanf, vwscanf, vswscanf): Add __NLDBL_REDIR.
* stdio-common/printf.h: Include bits/wordsize.h.
(printf_size): Add __NLDBL_REDIR.
* libio/libio.h (_IO_vfscanf, _IO_vfprintf, _IO_vfwscanf,
_IO_vfwprintf): Add __NLDBL_REDIR.
* libio/swscanf.c: Handle __LONG_DOUBLE_MATH_OPTIONAL.
* libio/vwprintf.c: Likewise.
* libio/vsnprintf.c: Likewise.
* libio/fwprintf.c: Likewise.
* libio/fwscanf.c: Likewise.
* libio/obprintf.c: Likewise.
* libio/wscanf.c: Likewise.
* libio/iovsprintf.c: Likewise.
* libio/vwscanf.c: Likewise.
* libio/vswprintf.c: Likewise.
* libio/swprintf.c: Likewise.
* libio/vscanf.c: Likewise.
* libio/iovsscanf.c: Likewise.
* libio/iovdprintf.c: Likewise.
* libio/wprintf.c: Likewise.
* libio/iovswscanf.c: Likewise.
* libio/vasprintf.c: Likewise.
* stdio-common/scanf.c: Likewise.
* stdio-common/fscanf.c: Likewise.
* stdio-common/printf_size.c: Likewise.
* stdio-common/sscanf.c: Likewise.
* stdio-common/vfscanf.c: Likewise.
* stdio-common/fprintf.c: Likewise.
* stdio-common/printf.c: Likewise.
* stdio-common/asprintf.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
* stdio-common/sprintf.c: Likewise.
* stdio-common/dprintf.c: Likewise.
* stdio-common/vprintf.c: Likewise.
* stdio-common/snprintf.c: Likewise.
* stdio-common/printf_fp.c: Likewise.
* stdlib/stdlib.h (strtold, strtold_l, __strtold_internal): Add
__NLDBL_REDIR2.
* wcsmbs/wchar.h (wcstold, wcstold_l, __wcstold_internal): Likewise.
* stdlib/strtod_l.c: Include math_ldbl_opt.h.
(____STRTOF_INTERNAL): Define.
(INTERNAL (__STRTOF)): Rename to ____STRTOF_INTERNAL.
(__STRTOF): Call ____STRTOF_INTERNAL instead.
[LONG_DOUBLE_COMPAT] (strtold_l, wcstold_l, __strtold_l, __wcstold_l):
Add compatibility symbols.
* stdlib/strtod.c: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (strtold, wcstold, __strtold_internal,
__wcstold_internal): Add compatibility symbols.
* stdlib/strtold.c: Include bits/wordsize.h, wchar.h.
(NEW, NEW1): Define.
(__new_strtold, __new_wcstold): New prototypes.
(____new_strtold_internal, ____new_wcstold_internal): Likewise.
Add libc_hidden_proto.
(STRTOF): Define to NEW (*told).
[__LONG_DOUBLE_MATH_OPTIONAL] (wcstold, strtold): Add
long_double_symbol.
[__LONG_DOUBLE_MATH_OPTIONAL] (__wcstold_internal,
__strtold_internal): Likewise. Add libc_hidden_ver.
* stdlib/stdlib.h (qecvt, qfcvt, qgcvt, qecvt_r, qfcvt_r): Add
__NLDBL_REDIR2.
* include/stdlib.h (ecvt_r, fcvt_r, qecvt_r, qfcvt_r): Remove
libc_hidden_proto.
(__ecvt, __fcvt, __gcvt, __ecvt_r, __fcvt_r, __qecvt, __qfcvt,
__qgcvt, __qecvt_r, __qfcvt_r): New prototypes.
* misc/efgcvt_r.c: Include shlib-compat.h.
(LONG_DOUBLE_CVT): Define.
(__APPEND, __APPEND2): Define.
(*fcvt_r): Use __APPEND instead of APPEND. Remove libc_hidden_def.
(*ecvt_r): Likewise.
(cvt_symbol): Define. Use it on fcvt_r and ecvt_r.
* misc/efgcvt.c: Include shlib-compat.h.
(LONG_DOUBLE_CVT): Define.
(__APPEND, __APPEND2): Define.
(fcvt): Use __APPEND instead of APPEND. Remove libc_hidden_def.
(ecvt, gcvt): Likewise.
(cvt_symbol): Define. Use it on fcvt, ecvt and gcvt.
* stdlib/monetary.h: Include bits/wordsize.h.
(strfmon, strfmon_l): Add __NLDBL_REDIR.
* include/monetary.h: Include stdbool.h and bits/wordsize.h.
(__vstrfmon_l): Add bool argument if __LONG_DOUBLE_MATH_OPTIONAL.
* stdlib/strfmon.c: Handle __LONG_DOUBLE_MATH_OPTIONAL.
* stdlib/strfmon_l.c: Handle __LONG_DOUBLE_MATH_OPTIONAL.
* math/conj.c: Moved to...
* sysdeps/generic/conj.c: ... here. New file.
* math/carg.c: Moved to...
* sysdeps/generic/carg.c: ... here. New file.
* math/cabsl.c: Moved to...
* sysdeps/generic/cabsl.c: ... here. New file.
* math/cimagl.c: Moved to...
* sysdeps/generic/cimagl.c: ... here. New file.
* math/cabs.c: Moved to...
* sysdeps/generic/cabs.c: ... here. New file.
* math/conjl.c: Moved to...
* sysdeps/generic/conjl.c: ... here. New file.
* math/creall.c: Moved to...
* sysdeps/generic/creall.c: ... here. New file.
* math/creal.c: Moved to...
* sysdeps/generic/creal.c: ... here. New file.
* math/cimag.c: Moved to...
* sysdeps/generic/cimag.c: ... here. New file.
* math/cargl.c: Moved to...
* sysdeps/generic/cargl.c: ... here. New file.
* sysdeps/generic/math_ldbl_opt.h: New file.
* sysdeps/generic/w_j1l.c (j1l, y1l): Rename to __
prefixed variants. Add weak_alias.
* sysdeps/generic/w_j0l.c (j0l, y0l): Likewise.
* sysdeps/generic/w_jnl.c (jnl, ynl): Likewise.
* sysdeps/ieee754/ldbl-96/s_nexttoward.c (__nexttowardl): Remove
strong_alias.
(nexttowardl): Remove weak_alias.
* sysdeps/ieee754/ldbl-96/s_erfl.c (__erfl, __erfcl): Remove
strong_alias.
(erfl, erfcl): Remove weak_alias.
* sysdeps/ieee754/ldbl-64-128/s_asinhl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_atanl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_cbrtl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_ceill.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_copysignl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_cosl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_erfl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_expm1l.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_fabsl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_finitel.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_floorl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_frexpl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_ilogbl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_isinfl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_isnanl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_llrintl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_llroundl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_log1pl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_logbl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_lrintl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_lroundl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_modfl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_nextafterl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_nexttoward.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_remquol.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_rintl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_roundl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_scalblnl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_scalbnl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_signbitl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_sincosl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_sinl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_tanhl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_tanl.c: New file.
* sysdeps/ieee754/ldbl-64-128/s_truncl.c: New file.
* sysdeps/ieee754/ldbl-64-128/strtold_l.c: New file.
* sysdeps/ieee754/ldbl-64-128/w_expl.c: New file.
* sysdeps/ieee754/ldbl-opt/Makefile: New file.
* sysdeps/ieee754/ldbl-opt/cabs.c: New file.
* sysdeps/ieee754/ldbl-opt/cabsl.c: New file.
* sysdeps/ieee754/ldbl-opt/carg.c: New file.
* sysdeps/ieee754/ldbl-opt/cargl.c: New file.
* sysdeps/ieee754/ldbl-opt/cimag.c: New file.
* sysdeps/ieee754/ldbl-opt/cimagl.c: New file.
* sysdeps/ieee754/ldbl-opt/conj.c: New file.
* sysdeps/ieee754/ldbl-opt/conjl.c: New file.
* sysdeps/ieee754/ldbl-opt/creal.c: New file.
* sysdeps/ieee754/ldbl-opt/creall.c: New file.
* sysdeps/ieee754/ldbl-opt/libio-compat.c: New file.
* sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-acos.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-acosh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-asin.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-asinh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-atan.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-atan2.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-atanh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cabs.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cacos.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-carg.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-casin.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-casinh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-catan.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-catanh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ccos.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ceil.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cexp.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cimag.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-clog.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-clog10.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-compat.h: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-conj.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-copysign.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cos.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cosh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cpow.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-cproj.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-creal.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-csin.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-csinh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ctan.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-drem.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-erf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-erfc.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-exp.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-exp10.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-exp2.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-expm1.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fabs.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fdim.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-finite.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-floor.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fma.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fmax.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fmin.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fmod.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-frexp.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-gamma.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-hypot.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-isinf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-isnan.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-j0.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-j1.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-jn.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-llrint.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-llround.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-log.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-log10.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-log1p.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-log2.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-logb.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-lrint.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-lround.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-modf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-nan.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-pow.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-printf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-remainder.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-remquo.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-rint.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-round.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-scalb.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-scanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-signbit.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-significand.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-sin.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-sincos.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-sinh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-strtold.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-tan.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-tanh.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-trunc.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-y0.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-y1.c: New file.
* sysdeps/ieee754/ldbl-opt/nldbl-yn.c: New file.
* sysdeps/ieee754/ldbl-opt/s_asinh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_atan.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cacos.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cacosh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cacoshl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cacosl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_casin.c: New file.
* sysdeps/ieee754/ldbl-opt/s_casinh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_casinhl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_casinl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_catan.c: New file.
* sysdeps/ieee754/ldbl-opt/s_catanh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_catanhl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_catanl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cbrt.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ccos.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ccosh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ccoshl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ccosl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ceil.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cexp.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cexpl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_clog.c: New file.
* sysdeps/ieee754/ldbl-opt/s_clog10.c: New file.
* sysdeps/ieee754/ldbl-opt/s_clog10l.c: New file.
* sysdeps/ieee754/ldbl-opt/s_clogl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_copysign.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cpow.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cpowl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cproj.c: New file.
* sysdeps/ieee754/ldbl-opt/s_cprojl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_csin.c: New file.
* sysdeps/ieee754/ldbl-opt/s_csinh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_csinhl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_csinl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_csqrt.c: New file.
* sysdeps/ieee754/ldbl-opt/s_csqrtl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ctan.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ctanh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ctanhl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ctanl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_erf.c: New file.
* sysdeps/ieee754/ldbl-opt/s_expm1.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fabs.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fdim.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fdiml.c: New file.
* sysdeps/ieee754/ldbl-opt/s_finite.c: New file.
* sysdeps/ieee754/ldbl-opt/s_floor.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fma.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fmal.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fmax.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fmaxl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fmin.c: New file.
* sysdeps/ieee754/ldbl-opt/s_fminl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_frexp.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ilogb.c: New file.
* sysdeps/ieee754/ldbl-opt/s_isinf.c: New file.
* sysdeps/ieee754/ldbl-opt/s_isnan.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ldexp.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ldexpl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_llrint.c: New file.
* sysdeps/ieee754/ldbl-opt/s_llround.c: New file.
* sysdeps/ieee754/ldbl-opt/s_log1p.c: New file.
* sysdeps/ieee754/ldbl-opt/s_logb.c: New file.
* sysdeps/ieee754/ldbl-opt/s_lrint.c: New file.
* sysdeps/ieee754/ldbl-opt/s_lround.c: New file.
* sysdeps/ieee754/ldbl-opt/s_modf.c: New file.
* sysdeps/ieee754/ldbl-opt/s_nan.c: New file.
* sysdeps/ieee754/ldbl-opt/s_nanl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_nearbyint.c: New file.
* sysdeps/ieee754/ldbl-opt/s_nextafter.c: New file.
* sysdeps/ieee754/ldbl-opt/s_remquo.c: New file.
* sysdeps/ieee754/ldbl-opt/s_rint.c: New file.
* sysdeps/ieee754/ldbl-opt/s_round.c: New file.
* sysdeps/ieee754/ldbl-opt/s_scalbln.c: New file.
* sysdeps/ieee754/ldbl-opt/s_scalbn.c: New file.
* sysdeps/ieee754/ldbl-opt/s_signbit.c: New file.
* sysdeps/ieee754/ldbl-opt/s_significand.c: New file.
* sysdeps/ieee754/ldbl-opt/s_significandl.c: New file.
* sysdeps/ieee754/ldbl-opt/s_sin.c: New file.
* sysdeps/ieee754/ldbl-opt/s_sincos.c: New file.
* sysdeps/ieee754/ldbl-opt/s_tan.c: New file.
* sysdeps/ieee754/ldbl-opt/s_tanh.c: New file.
* sysdeps/ieee754/ldbl-opt/s_trunc.c: New file.
* sysdeps/ieee754/ldbl-opt/w_acos.c: New file.
* sysdeps/ieee754/ldbl-opt/w_acosh.c: New file.
* sysdeps/ieee754/ldbl-opt/w_acoshl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_acosl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_asin.c: New file.
* sysdeps/ieee754/ldbl-opt/w_asinl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_atan2.c: New file.
* sysdeps/ieee754/ldbl-opt/w_atan2l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_atanh.c: New file.
* sysdeps/ieee754/ldbl-opt/w_atanhl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_cosh.c: New file.
* sysdeps/ieee754/ldbl-opt/w_coshl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_drem.c: New file.
* sysdeps/ieee754/ldbl-opt/w_dreml.c: New file.
* sysdeps/ieee754/ldbl-opt/w_exp.c: New file.
* sysdeps/ieee754/ldbl-opt/w_exp10.c: New file.
* sysdeps/ieee754/ldbl-opt/w_exp10l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_exp2.c: New file.
* sysdeps/ieee754/ldbl-opt/w_exp2l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_fmod.c: New file.
* sysdeps/ieee754/ldbl-opt/w_fmodl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_hypot.c: New file.
* sysdeps/ieee754/ldbl-opt/w_hypotl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_j0.c: New file.
* sysdeps/ieee754/ldbl-opt/w_j0l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_j1.c: New file.
* sysdeps/ieee754/ldbl-opt/w_j1l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_jn.c: New file.
* sysdeps/ieee754/ldbl-opt/w_jnl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_lgamma.c: New file.
* sysdeps/ieee754/ldbl-opt/w_lgamma_r.c: New file.
* sysdeps/ieee754/ldbl-opt/w_lgammal.c: New file.
* sysdeps/ieee754/ldbl-opt/w_lgammal_r.c: New file.
* sysdeps/ieee754/ldbl-opt/w_log.c: New file.
* sysdeps/ieee754/ldbl-opt/w_log10.c: New file.
* sysdeps/ieee754/ldbl-opt/w_log10l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_log2.c: New file.
* sysdeps/ieee754/ldbl-opt/w_log2l.c: New file.
* sysdeps/ieee754/ldbl-opt/w_logl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_pow.c: New file.
* sysdeps/ieee754/ldbl-opt/w_powl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_remainder.c: New file.
* sysdeps/ieee754/ldbl-opt/w_remainderl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_scalb.c: New file.
* sysdeps/ieee754/ldbl-opt/w_scalbl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_sinh.c: New file.
* sysdeps/ieee754/ldbl-opt/w_sinhl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_sqrt.c: New file.
* sysdeps/ieee754/ldbl-opt/w_sqrtl.c: New file.
* sysdeps/ieee754/ldbl-opt/w_tgamma.c: New file.
* sysdeps/ieee754/ldbl-opt/w_tgammal.c: New file.
* sysdeps/unix/sysv/linux/sparc/bits/wordsize.h: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/Implies: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/configure.in: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/configure: New file.
* sysdeps/sparc/sparc32/Implies: Move ldbl-128 first and flt-32
after dbl-64.
* sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (long-double-fcts):
Set to optional.
(long-double-fcts-ver): Set to GLIBC_2_3_4.
(sysdep-CFLAGS): Add -mlong-double-128.
* sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Add
functions which use IEEE quad long double for GLIBC_2.3.4.
Add __nldbl_* wrappers for GLIBC_2.3.4.
(libm): Add functions which use IEEE quad long double for GLIBC_2.3.4.
Add __nldbl_nexttowardf@@GLIBC_2.3.4.
* sysdeps/sparc/sparc32/fpu/s_fabsl.c: New file.
* sysdeps/sparc/sparc32/fpu/s_fabs.c: New file.
* sysdeps/sparc/sparc32/fpu/s_fabsf.S: New file.
* sysdeps/sparc/sparc32/fpu/e_sqrtl.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_qtoui.c: Removed.
* sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c: Removed.
* sysdeps/sparc/sparc32/soft-fp/q_qtox.c: Removed.
* sysdeps/sparc/sparc32/soft-fp/q_uitoq.c: Removed.
* sysdeps/sparc/sparc32/soft-fp/q_xtoq.c: Removed.
* sysdeps/sparc/sparc32/soft-fp/q_qtoux.c: Removed.
* sysdeps/sparc/sparc32/soft-fp/q_lltoq.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_utoq.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_qtou.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_qtoull.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_qtoll.c: New file.
* sysdeps/sparc/sparc32/soft-fp/Versions: New file.
* sysdeps/sparc/fpu/bits/mathinline.h (__unordered_cmp,
__unordered_v9cmp): Define differently depending on
-m32 -mlong-double-{64,128}.
(__signbitl, sqrtl, __ieee754_sqrtl): New inlines.
* sysdeps/sparc/fpu/bits/mathdef.h (__NO_LONG_DOUBLE_MATH): Remove.
* sysdeps/sparc/sparc32/soft-fp/Makefile (sparc32-quad-routines):
Set.
(sysdep-routines): Add sparc32-quad-routines.
* sysdeps/sparc/sparc32/soft-fp/sfp-machine.h: Include stdlib.h.
(FP_HANDLE_EXCEPTIONS): Call ___Q_simulate_exceptions as a normal
function.
* sysdeps/sparc/sparc32/soft-fp/q_sqrt.c (__ieee754_sqrtl): New
alias to _Q_sqrt.
* sysdeps/sparc/sparc32/soft-fp/q_div.c (_Q_div): Fix a typo.
* sysdeps/sparc/sparc64/soft-fp/sfp-machine.h: Include stdlib.h.
* sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update.
diff -urN libc.orig/extra-lib.mk libc/extra-lib.mk
--- libc.orig/extra-lib.mk 2004-12-02 17:54:47.000000000 -0500
+++ libc/extra-lib.mk 2005-11-11 13:30:38.733606736 -0500
@@ -9,7 +9,9 @@
lib := $(firstword $(extra-libs-left))
extra-libs-left := $(filter-out $(lib),$(extra-libs-left))
-object-suffixes-$(lib) := $(filter-out $($(lib)-inhibit-o),$(object-suffixes))
+object-suffixes-$(lib) := $(filter-out $($(lib)-inhibit-o),\
+ $(object-suffixes) \
+ $($(lib)-extra-object-suffixes))
ifneq (,$($(lib)-static-only-routines))
ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version)))
diff -urN libc.orig/include/monetary.h libc/include/monetary.h
--- libc.orig/include/monetary.h 2004-03-14 15:43:05.000000000 -0500
+++ libc/include/monetary.h 2005-11-11 13:30:38.000000000 -0500
@@ -1,5 +1,7 @@
#include <stdlib/monetary.h>
#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
extern ssize_t __vstrfmon_l (char *s, size_t maxsize, __locale_t loc,
- const char *format, va_list ap);
+ const char *format, va_list ap NLDBL_DECL);
diff -urN libc.orig/include/stdlib.h libc/include/stdlib.h
--- libc.orig/include/stdlib.h 2005-07-15 06:47:18.000000000 -0400
+++ libc/include/stdlib.h 2005-11-11 13:30:38.683614336 -0500
@@ -23,10 +23,6 @@
libc_hidden_proto (getenv)
libc_hidden_proto (bsearch)
libc_hidden_proto (qsort)
-libc_hidden_proto (ecvt_r)
-libc_hidden_proto (fcvt_r)
-libc_hidden_proto (qecvt_r)
-libc_hidden_proto (qfcvt_r)
libc_hidden_proto (lrand48_r)
libc_hidden_proto (wctomb)
libc_hidden_proto (__secure_getenv)
@@ -184,6 +180,28 @@
return ____strtoull_l_internal (__nptr, __endptr, __base, 0, __loc);
}
+extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign);
+extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign);
+extern char *__gcvt (double __value, int __ndigit, char *__buf);
+extern int __ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len);
+extern int __fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len);
+extern char *__qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign);
+extern char *__qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign);
+extern char *__qgcvt (long double __value, int __ndigit, char *__buf);
+extern int __qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len);
+extern int __qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len);
# ifndef NOT_IN_libc
# undef MB_CUR_MAX
diff -urN libc.orig/libio/fwprintf.c libc/libio/fwprintf.c
--- libc.orig/libio/fwprintf.c 2001-08-17 03:05:37.000000000 -0400
+++ libc/libio/fwprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 1999, 2000, 2001, 2004
+ 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
@@ -16,11 +17,11 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include "libioP.h"
#include <stdarg.h>
#include <stdio.h>
#include <wchar.h>
-
/* Write formatted output to STREAM from the format string FORMAT. */
/* VARARGS2 */
int
@@ -30,9 +31,15 @@
int done;
va_start (arg, format);
- done = __vfwprintf (stream, format, arg);
+ done = ___vfwprintf (stream, format, arg NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+weak_alias (__fwprintf, ___fwprintf)
+long_double_symbol (libc, ___fwprintf, fwprintf);
+#else
weak_alias (__fwprintf, fwprintf)
+#endif
diff -urN libc.orig/libio/fwscanf.c libc/libio/fwscanf.c
--- libc.orig/libio/fwscanf.c 2001-07-06 00:54:54.000000000 -0400
+++ libc/libio/fwscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 1999, 2000, 2004 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
@@ -16,6 +16,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>
#include <wchar.h>
@@ -23,14 +24,20 @@
/* Read formatted input from STREAM according to the format string FORMAT. */
/* VARARGS2 */
int
-fwscanf (FILE *stream, const wchar_t *format, ...)
+__fwscanf (FILE *stream, const wchar_t *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = __vfwscanf (stream, format, arg);
+ done = __IO_vfwscanf (stream, format, arg, NULL NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __fwscanf, fwscanf);
+#else
+strong_alias (__fwscanf, fwscanf)
+#endif
diff -urN libc.orig/libio/iovdprintf.c libc/libio/iovdprintf.c
--- libc.orig/libio/iovdprintf.c 2003-03-27 06:53:59.000000000 -0500
+++ libc/libio/iovdprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995,1997-2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ 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
@@ -29,10 +30,7 @@
#include <stdio_ext.h>
int
-_IO_vdprintf (d, format, arg)
- int d;
- const char *format;
- _IO_va_list arg;
+___vdprintf (int d, const char *format, _IO_va_list arg NLDBL_DECL)
{
struct _IO_FILE_plus tmpfil;
struct _IO_wide_data wd;
@@ -57,13 +55,21 @@
_IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING)
| _IO_DELETE_DONT_CLOSE);
- done = INTUSE(_IO_vfprintf) (&tmpfil.file, format, arg);
+ done = ___vfprintf (&tmpfil.file, format, arg NLDBL_ARG);
_IO_FINISH (&tmpfil.file);
return done;
}
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+int
+_IO_vdprintf (int d, const char *format, _IO_va_list arg)
+{
+ return ___vdprintf (d, format, arg, 0);
+}
+long_double_symbol (libc, _IO_vdprintf, vdprintf);
+#elif defined weak_alias
+strong_alias (___vdprintf, _IO_vdprintf)
weak_alias (_IO_vdprintf, vdprintf)
#endif
diff -urN libc.orig/libio/iovsprintf.c libc/libio/iovsprintf.c
--- libc.orig/libio/iovsprintf.c 2003-05-27 03:39:21.000000000 -0400
+++ libc/libio/iovsprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2004 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
@@ -25,14 +25,13 @@
This exception applies to code released by its copyright holders
in files containing the exception. */
-#include "libioP.h"
+#include <libioP.h>
+#include <stdio.h>
#include "strfile.h"
int
-_IO_vsprintf (string, format, args)
- char *string;
- const char *format;
- _IO_va_list args;
+___vsprintf (char *string, const char *format, _IO_va_list args
+ NLDBL_DECL)
{
_IO_strfile sf;
int ret;
@@ -43,12 +42,23 @@
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
_IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, -1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf._sbf, format, args);
+ ret = ___vfprintf ((_IO_FILE *) &sf._sbf, format, args NLDBL_ARG);
_IO_putc_unlocked ('\0', (_IO_FILE *) &sf._sbf);
return ret;
}
-INTDEF(_IO_vsprintf)
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+int
+__IO_vsprintf (char *string, const char *format, _IO_va_list args)
+{
+ return ___vsprintf (string, format, args, 0);
+}
+weak_alias (__IO_vsprintf, __vsprintf)
+long_double_symbol (libc, __IO_vsprintf, _IO_vsprintf);
+long_double_symbol (libc, __vsprintf, vsprintf);
+INTDEF2(__IO_vsprintf, _IO_vsprintf)
+#elif defined weak_alias
+strong_alias (___vsprintf, _IO_vsprintf)
+INTDEF(_IO_vsprintf)
weak_alias (_IO_vsprintf, vsprintf)
#endif
diff -urN libc.orig/libio/iovsscanf.c libc/libio/iovsscanf.c
--- libc.orig/libio/iovsscanf.c 2003-05-27 03:39:21.000000000 -0400
+++ libc/libio/iovsscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2004 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
@@ -25,14 +25,12 @@
This exception applies to code released by its copyright holders
in files containing the exception. */
-#include "libioP.h"
+#include <libioP.h>
#include "strfile.h"
int
-_IO_vsscanf (string, format, args)
- const char *string;
- const char *format;
- _IO_va_list args;
+___vsscanf (const char *string, const char *format, _IO_va_list args
+ NLDBL_DECL)
{
int ret;
_IO_strfile sf;
@@ -42,11 +40,23 @@
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
_IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
- ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL);
+ ret = __IO_vfscanf ((_IO_FILE *) &sf._sbf, format, args, NULL NLDBL_ARG);
return ret;
}
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+
+int
+weak_function
+_IO_vsscanf (const char *string, const char *format, _IO_va_list args)
+{
+ return ___vsscanf (string, format, args, 0);
+}
+weak_alias (_IO_vsscanf, __IO_vsscanf)
+long_double_symbol (libc, _IO_vsscanf, __vsscanf);
+long_double_symbol (libc, __IO_vsscanf, vsscanf);
+#elif defined weak_alias
+strong_alias (___vsscanf, _IO_vsscanf)
weak_alias (_IO_vsscanf, __vsscanf)
weak_alias (_IO_vsscanf, vsscanf)
#endif
diff -urN libc.orig/libio/iovswscanf.c libc/libio/iovswscanf.c
--- libc.orig/libio/iovswscanf.c 2002-08-04 16:37:03.000000000 -0400
+++ libc/libio/iovswscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997, 1998, 1999, 2000, 2001, 2002, 2004
+ 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
@@ -30,10 +31,8 @@
#include <wchar.h>
int
-vswscanf (string, format, args)
- const wchar_t *string;
- const wchar_t *format;
- _IO_va_list args;
+___vswscanf (const wchar_t *string, const wchar_t *format, _IO_va_list args
+ NLDBL_DECL)
{
int ret;
_IO_strfile sf;
@@ -44,7 +43,20 @@
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, 0, &wd, &_IO_wstr_jumps);
_IO_fwide (&sf._sbf._f, 1);
_IO_wstr_init_static (&sf._sbf._f, (wchar_t *)string, 0, NULL);
- ret = _IO_vfwscanf ((_IO_FILE *) &sf._sbf, format, args, NULL);
+ ret = __IO_vfwscanf ((_IO_FILE *) &sf._sbf, format, args, NULL NLDBL_ARG);
return ret;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+
+int
+__vswscanf (const wchar_t *string, const wchar_t *format, _IO_va_list args)
+{
+ return ___vswscanf (string, format, args, 0);
+}
+long_double_symbol (libc, __vswscanf, vswscanf);
+libc_hidden_ver (__vswscanf, vswscanf)
+#else
+strong_alias (___vswscanf, vswscanf)
libc_hidden_def (vswscanf)
+#endif
diff -urN libc.orig/libio/libio.h libc/libio/libio.h
--- libc.orig/libio/libio.h 2005-02-16 20:16:15.000000000 -0500
+++ libc/libio/libio.h 2005-11-11 13:30:38.660617832 -0500
@@ -471,10 +471,13 @@
# define _IO_cleanup_region_end(_Doit) /**/
#endif /* !_IO_MTSAFE_IO */
-extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
- _IO_va_list, int *__restrict) __THROW;
-extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
- _IO_va_list) __THROW;
+extern int __NLDBL_REDIR (_IO_vfscanf,
+ (_IO_FILE * __restrict, const char * __restrict,
+ _IO_va_list, int *__restrict)) __THROW;
+extern int __NLDBL_REDIR (_IO_vfprintf,
+ (_IO_FILE *__restrict, const char *__restrict,
+ _IO_va_list)) __THROW;
+
extern _IO_ssize_t _IO_padn (_IO_FILE *, int, _IO_ssize_t) __THROW;
extern _IO_size_t _IO_sgetn (_IO_FILE *, void *, _IO_size_t) __THROW;
@@ -520,10 +523,13 @@
__result; })
# endif
-extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict,
- _IO_va_list, int *__restrict) __THROW;
-extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict,
- _IO_va_list) __THROW;
+extern int __NLDBL_REDIR (_IO_vfwscanf,
+ (_IO_FILE * __restrict, const wchar_t * __restrict,
+ _IO_va_list, int *__restrict)) __THROW;
+extern int __NLDBL_REDIR (_IO_vfwprintf,
+ (_IO_FILE *__restrict, const wchar_t *__restrict,
+ _IO_va_list)) __THROW;
+
extern _IO_ssize_t _IO_wpadn (_IO_FILE *, wint_t, _IO_ssize_t) __THROW;
extern void _IO_free_wbackup_area (_IO_FILE *) __THROW;
#endif
diff -urN libc.orig/libio/libioP.h libc/libio/libioP.h
--- libc.orig/libio/libioP.h 2004-11-27 14:23:30.000000000 -0500
+++ libc/libio/libioP.h 2005-11-11 13:30:38.663617376 -0500
@@ -998,3 +998,49 @@
if ((fp->_flags & _IO_USER_LOCK) == 0)
_IO_funlockfile (fp);
}
+
+#include <bits/wordsize.h>
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# include <stdbool.h>
+# include <math_ldbl_opt.h>
+# define NLDBL_0 , 0
+# define NLDBL_ARG , dbl_is_ldbl
+# define NLDBL_DECL , bool dbl_is_ldbl
+# define DBL_IS_LDBL dbl_is_ldbl
+#else
+# include <math.h>
+# define NLDBL_0
+# define NLDBL_ARG
+# define NLDBL_DECL
+# ifdef __NO_LONG_DOUBLE_MATH
+# define DBL_IS_LDBL 1
+# else
+# define DBL_IS_LDBL 0
+# endif
+#endif
+
+extern int ___vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ _IO_va_list NLDBL_DECL) attribute_hidden;
+extern int ___vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict,
+ _IO_va_list NLDBL_DECL) attribute_hidden;
+extern int ___vdprintf (int, const char *, _IO_va_list NLDBL_DECL)
+ attribute_hidden;
+extern int ___vsprintf (char *, const char *, _IO_va_list NLDBL_DECL)
+ attribute_hidden;
+struct obstack;
+extern int ___obstack_vprintf (struct obstack *, const char *, _IO_va_list
+ NLDBL_DECL) attribute_hidden;
+extern int ___vasprintf (char **, const char *, _IO_va_list NLDBL_DECL)
+ attribute_hidden;
+extern int ___vsnprintf (char *, _IO_size_t, const char *, _IO_va_list
+ NLDBL_DECL) attribute_hidden;
+extern int ___vswprintf (wchar_t *, _IO_size_t, const wchar_t *, _IO_va_list
+ NLDBL_DECL) attribute_hidden;
+extern int __IO_vfscanf (_IO_FILE *, const char *, _IO_va_list, int *
+ NLDBL_DECL) attribute_hidden;
+extern int __IO_vfwscanf (_IO_FILE *, const wchar_t *, _IO_va_list, int *
+ NLDBL_DECL) attribute_hidden;
+extern int ___vsscanf (const char *, const char *, _IO_va_list NLDBL_DECL)
+ attribute_hidden;
+extern int ___vswscanf (const wchar_t *, const wchar_t *, _IO_va_list
+ NLDBL_DECL) attribute_hidden;
diff -urN libc.orig/libio/obprintf.c libc/libio/obprintf.c
--- libc.orig/libio/obprintf.c 2004-01-14 13:40:03.000000000 -0500
+++ libc/libio/obprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -119,7 +119,8 @@
int
-_IO_obstack_vprintf (struct obstack *obstack, const char *format, va_list args)
+___obstack_vprintf (struct obstack *obstack, const char *format, va_list args
+ NLDBL_DECL)
{
struct obstack_FILE
{
@@ -166,7 +167,7 @@
new_f.ofile.obstack = obstack;
- result = INTUSE(_IO_vfprintf) (&new_f.ofile.file.file, format, args);
+ result = ___vfprintf (&new_f.ofile.file.file, format, args NLDBL_ARG);
/* Shrink the buffer to the space we really currently need. */
obstack_blank_fast (obstack, (new_f.ofile.file.file._IO_write_ptr
@@ -174,10 +175,30 @@
return result;
}
-#ifdef weak_alias
-weak_alias (_IO_obstack_vprintf, obstack_vprintf)
-#endif
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+int
+_IO_obstack_vprintf (struct obstack *obstack, const char *format, va_list args)
+{
+ return ___obstack_vprintf (obstack, format, args, 0);
+}
+
+int
+_IO_obstack_printf (struct obstack *obstack, const char *format, ...)
+{
+ int result;
+ va_list ap;
+ va_start (ap, format);
+ result = ___obstack_vprintf (obstack, format, ap, 0);
+ va_end (ap);
+ return result;
+}
+long_double_symbol (libc, _IO_obstack_vprintf, obstack_vprintf);
+long_double_symbol (libc, _IO_obstack_printf, obstack_printf);
+
+#else
+
+strong_alias (___obstack_vprintf, _IO_obstack_vprintf)
int
_IO_obstack_printf (struct obstack *obstack, const char *format, ...)
@@ -189,6 +210,8 @@
va_end (ap);
return result;
}
-#ifdef weak_alias
+# ifdef weak_alias
+weak_alias (_IO_obstack_vprintf, obstack_vprintf)
weak_alias (_IO_obstack_printf, obstack_printf)
+# endif
#endif
diff -urN libc.orig/libio/stdio.h libc/libio/stdio.h
--- libc.orig/libio/stdio.h 2005-09-01 11:14:59.000000000 -0400
+++ libc/libio/stdio.h 2005-11-11 13:57:05.867639872 -0500
@@ -318,42 +318,47 @@
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int fprintf (FILE *__restrict __stream,
- __const char *__restrict __format, ...);
+extern int __NLDBL_REDIR (fprintf, (FILE *__restrict __stream,
+ __const char *__restrict __format, ...));
/* Write formatted output to stdout.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int printf (__const char *__restrict __format, ...);
+extern int __NLDBL_REDIR (printf, (__const char *__restrict __format, ...));
/* Write formatted output to S. */
-extern int sprintf (char *__restrict __s,
- __const char *__restrict __format, ...) __THROW;
+extern int __NLDBL_REDIR (sprintf, (char *__restrict __s,
+ __const char *__restrict __format, ...))
+ __THROW;
/* Write formatted output to S from argument list ARG.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
- _G_va_list __arg);
+extern int __NLDBL_REDIR (vfprintf, (FILE *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg));
/* Write formatted output to stdout from argument list ARG.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vprintf (__const char *__restrict __format, _G_va_list __arg);
+extern int __NLDBL_REDIR (vprintf, (__const char *__restrict __format,
+ _G_va_list __arg));
/* Write formatted output to S from argument list ARG. */
-extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
- _G_va_list __arg) __THROW;
+extern int __NLDBL_REDIR (vsprintf, (char *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg)) __THROW;
__END_NAMESPACE_STD
#if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
__BEGIN_NAMESPACE_C99
/* Maximum chars of output to write in MAXLEN. */
-extern int snprintf (char *__restrict __s, size_t __maxlen,
- __const char *__restrict __format, ...)
+extern int __NLDBL_REDIR (snprintf, (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...))
__THROW __attribute__ ((__format__ (__printf__, 3, 4)));
-extern int vsnprintf (char *__restrict __s, size_t __maxlen,
- __const char *__restrict __format, _G_va_list __arg)
+extern int __NLDBL_REDIR (vsnprintf, (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format,
+ _G_va_list __arg))
__THROW __attribute__ ((__format__ (__printf__, 3, 0)));
__END_NAMESPACE_C99
#endif
@@ -361,14 +366,15 @@
#ifdef __USE_GNU
/* Write formatted output to a string dynamically allocated with `malloc'.
Store the address of the string in *PTR. */
-extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
- _G_va_list __arg)
+extern int __NLDBL_REDIR (vasprintf, (char **__restrict __ptr,
+ __const char *__restrict __f,
+ _G_va_list __arg))
__THROW __attribute__ ((__format__ (__printf__, 2, 0)));
-extern int __asprintf (char **__restrict __ptr,
- __const char *__restrict __fmt, ...)
+extern int __NLDBL_REDIR (__asprintf, (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...))
__THROW __attribute__ ((__format__ (__printf__, 2, 3)));
-extern int asprintf (char **__restrict __ptr,
- __const char *__restrict __fmt, ...)
+extern int __NLDBL_REDIR (asprintf, (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...))
__THROW __attribute__ ((__format__ (__printf__, 2, 3)));
/* Write formatted output to a file descriptor.
@@ -377,10 +383,11 @@
cancellation point. But due to similarity with an POSIX interface
or due to the implementation they are cancellation points and
therefore not marked with __THROW. */
-extern int vdprintf (int __fd, __const char *__restrict __fmt,
- _G_va_list __arg)
+extern int __NLDBL_REDIR (vdprintf, (int __fd, __const char *__restrict __fmt,
+ _G_va_list __arg))
__attribute__ ((__format__ (__printf__, 2, 0)));
-extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+extern int __NLDBL_REDIR (dprintf, (int __fd, __const char *__restrict __fmt,
+ ...))
__attribute__ ((__format__ (__printf__, 2, 3)));
#endif
@@ -390,16 +397,16 @@
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int fscanf (FILE *__restrict __stream,
- __const char *__restrict __format, ...) __wur;
+extern int __NLDBL_REDIR (fscanf, (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __wur);
/* Read formatted input from stdin.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int scanf (__const char *__restrict __format, ...) __wur;
+extern int __NLDBL_REDIR (scanf, (__const char *__restrict __format, ...) __wur);
/* Read formatted input from S. */
-extern int sscanf (__const char *__restrict __s,
- __const char *__restrict __format, ...) __THROW;
+extern int __NLDBL_REDIR (sscanf, (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __THROW);
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
@@ -408,20 +415,23 @@
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
- _G_va_list __arg)
+extern int __NLDBL_REDIR (vfscanf, (FILE *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg))
__attribute__ ((__format__ (__scanf__, 2, 0))) __wur;
/* Read formatted input from stdin into argument list ARG.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vscanf (__const char *__restrict __format, _G_va_list __arg)
+extern int __NLDBL_REDIR (vscanf, (__const char *__restrict __format,
+ _G_va_list __arg))
__attribute__ ((__format__ (__scanf__, 1, 0))) __wur;
/* Read formatted input from S into argument list ARG. */
-extern int vsscanf (__const char *__restrict __s,
- __const char *__restrict __format, _G_va_list __arg)
+extern int __NLDBL_REDIR (vsscanf, (__const char *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg))
__THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
__END_NAMESPACE_C99
#endif /* Use ISO C9x. */
@@ -791,12 +801,14 @@
struct obstack; /* See <obstack.h>. */
/* Write formatted output to an obstack. */
-extern int obstack_printf (struct obstack *__restrict __obstack,
- __const char *__restrict __format, ...)
+extern int __NLDBL_REDIR (obstack_printf,
+ (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...))
__THROW __attribute__ ((__format__ (__printf__, 2, 3)));
-extern int obstack_vprintf (struct obstack *__restrict __obstack,
- __const char *__restrict __format,
- _G_va_list __args)
+extern int __NLDBL_REDIR (obstack_vprintf,
+ (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ _G_va_list __args))
__THROW __attribute__ ((__format__ (__printf__, 2, 0)));
#endif /* Use GNU. */
diff -urN libc.orig/libio/swprintf.c libc/libio/swprintf.c
--- libc.orig/libio/swprintf.c 2003-03-05 14:58:03.000000000 -0500
+++ libc/libio/swprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,5 +1,5 @@
-/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003
- Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1997, 1998, 1999, 2000, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -17,20 +17,27 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include "libioP.h"
#include <stdarg.h>
#include <wchar.h>
/* Write formatted output into S, according to the format string FORMAT. */
/* VARARGS3 */
int
-swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
+__swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = __vswprintf (s, n, format, arg);
+ done = ___vswprintf (s, n, format, arg NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __swprintf, swprintf);
+#else
+strong_alias (__swprintf, swprintf)
+#endif
diff -urN libc.orig/libio/swscanf.c libc/libio/swscanf.c
--- libc.orig/libio/swscanf.c 2003-03-05 14:58:03.000000000 -0500
+++ libc/libio/swscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1998, 1999, 2003, 2004
+ 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
@@ -16,20 +17,27 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <libioP.h>
#include <stdarg.h>
#include <wchar.h>
/* Read formatted input from S, according to the format string FORMAT. */
/* VARARGS2 */
int
-swscanf (const wchar_t *s, const wchar_t *format, ...)
+___swscanf (const wchar_t *s, const wchar_t *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = vswscanf (s, format, arg);
+ done = ___vswscanf (s, format, arg NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, ___swscanf, swscanf);
+#else
+strong_alias (___swscanf, swscanf)
+#endif
diff -urN libc.orig/libio/vasprintf.c libc/libio/vasprintf.c
--- libc.orig/libio/vasprintf.c 2004-09-26 01:10:53.000000000 -0400
+++ libc/libio/vasprintf.c 2005-11-11 13:30:38.666616920 -0500
@@ -27,16 +27,14 @@
#include <malloc.h>
#include <string.h>
-#include "libioP.h"
-#include "stdio.h"
+#include <libioP.h>
+#include <stdio.h>
#include <stdio_ext.h>
#include "strfile.h"
int
-_IO_vasprintf (result_ptr, format, args)
- char **result_ptr;
- const char *format;
- _IO_va_list args;
+___vasprintf (char **result_ptr, const char *format, _IO_va_list args
+ NLDBL_DECL)
{
/* Initial size of the buffer to be used. Will be doubled each time an
overflow occurs. */
@@ -58,7 +56,7 @@
sf._sbf._f._flags &= ~_IO_USER_BUF;
sf._s._allocate_buffer = (_IO_alloc_type) malloc;
sf._s._free_buffer = (_IO_free_type) free;
- ret = INTUSE(_IO_vfprintf) (&sf._sbf._f, format, args);
+ ret = ___vfprintf (&sf._sbf._f, format, args NLDBL_ARG);
if (ret < 0)
{
free (sf._sbf._f._IO_buf_base);
@@ -88,6 +86,16 @@
return ret;
}
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+int
+weak_function
+_IO_vasprintf (char **result_ptr, const char *format, _IO_va_list args)
+{
+ return ___vasprintf (result_ptr, format, args, 0);
+}
+
+long_double_symbol (libc, _IO_vasprintf, vasprintf);
+#elif defined weak_alias
+strong_alias (___vasprintf, _IO_vasprintf)
weak_alias (_IO_vasprintf, vasprintf)
#endif
diff -urN libc.orig/libio/vscanf.c libc/libio/vscanf.c
--- libc.orig/libio/vscanf.c 2002-02-25 20:43:50.000000000 -0500
+++ libc/libio/vscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997, 2002, 2004 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
@@ -25,8 +25,8 @@
This exception applies to code released by its copyright holders
in files containing the exception. */
-#include "libioP.h"
-#include "stdio.h"
+#include <libioP.h>
+#include <stdio.h>
#undef vscanf
@@ -35,9 +35,12 @@
const char *format;
_IO_va_list args;
{
- return INTUSE(_IO_vfscanf) (_IO_stdin, format, args, NULL);
+ return __IO_vfscanf (_IO_stdin, format, args, NULL NLDBL_0);
}
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+weak_alias (_IO_vscanf, __vscanf)
+long_double_symbol (libc, __vscanf, vscanf);
+#elif defined weak_alias
weak_alias (_IO_vscanf, vscanf)
#endif
diff -urN libc.orig/libio/vsnprintf.c libc/libio/vsnprintf.c
--- libc.orig/libio/vsnprintf.c 2004-10-18 00:17:15.000000000 -0400
+++ libc/libio/vsnprintf.c 2005-11-11 13:54:07.729568912 -0500
@@ -25,7 +25,8 @@
This exception applies to code released by its copyright holders
in files containing the exception. */
-#include "libioP.h"
+#include <libioP.h>
+#include <stdio.h>
#include "strfile.h"
static int _IO_strn_overflow (_IO_FILE *fp, int c) __THROW;
@@ -93,11 +94,8 @@
int
-_IO_vsnprintf (string, maxlen, format, args)
- char *string;
- _IO_size_t maxlen;
- const char *format;
- _IO_va_list args;
+___vsnprintf (char *string, _IO_size_t maxlen, const char *format,
+ _IO_va_list args NLDBL_DECL)
{
_IO_strnfile sf;
int ret;
@@ -117,14 +115,26 @@
_IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
string[0] = '\0';
_IO_str_init_static_internal (&sf.f, string, maxlen - 1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
+ ret = ___vfprintf ((_IO_FILE *) &sf.f._sbf, format, args NLDBL_ARG);
if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
*sf.f._sbf._f._IO_write_ptr = '\0';
return ret;
}
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+int
+weak_function
+_IO_vsnprintf (char *string, _IO_size_t maxlen, const char *format,
+ _IO_va_list args)
+{
+ return ___vsnprintf (string, maxlen, format, args, 0);
+}
+weak_alias (_IO_vsnprintf, __IO_vsnprintf)
+long_double_symbol (libc, _IO_vsnprintf, vsnprintf);
+long_double_symbol (libc, __IO_vsnprintf, __vsnprintf);
+#elif defined weak_alias
+strong_alias (___vsnprintf, _IO_vsnprintf)
weak_alias (_IO_vsnprintf, __vsnprintf)
weak_alias (_IO_vsnprintf, vsnprintf)
#endif
diff -urN libc.orig/libio/vswprintf.c libc/libio/vswprintf.c
--- libc.orig/libio/vswprintf.c 2005-07-15 06:14:19.000000000 -0400
+++ libc/libio/vswprintf.c 2005-11-11 13:30:38.659617984 -0500
@@ -27,7 +27,7 @@
#include "libioP.h"
#include "strfile.h"
-
+#include <wchar.h>
static wint_t _IO_wstrn_overflow (_IO_FILE *fp, wint_t c) __THROW;
@@ -92,11 +92,8 @@
int
-_IO_vswprintf (string, maxlen, format, args)
- wchar_t *string;
- _IO_size_t maxlen;
- const wchar_t *format;
- _IO_va_list args;
+___vswprintf (wchar_t *string, _IO_size_t maxlen, const wchar_t *format,
+ _IO_va_list args NLDBL_DECL)
{
_IO_wstrnfile sf;
int ret;
@@ -114,7 +111,7 @@
_IO_fwide (&sf.f._sbf._f, 1);
string[0] = L'\0';
_IO_wstr_init_static (&sf.f._sbf._f, string, maxlen - 1, string);
- ret = _IO_vfwprintf ((_IO_FILE *) &sf.f._sbf, format, args);
+ ret = ___vfwprintf ((_IO_FILE *) &sf.f._sbf, format, args NLDBL_ARG);
if (sf.f._sbf._f._wide_data->_IO_buf_base == sf.overflow_buf)
/* ISO C99 requires swprintf/vswprintf to return an error if the
@@ -127,7 +124,17 @@
return ret;
}
-#ifdef weak_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+int
+_IO_vswprintf (wchar_t *string, _IO_size_t maxlen, const wchar_t *format,
+ _IO_va_list args)
+{
+ return ___vswprintf (string, maxlen, format, args, 0);
+}
+weak_alias (_IO_vswprintf, __vswprintf)
+long_double_symbol (libc, _IO_vswprintf, vswprintf);
+#elif defined weak_alias
+strong_alias (___vswprintf, _IO_vswprintf)
weak_alias (_IO_vswprintf, __vswprintf)
weak_alias (_IO_vswprintf, vswprintf)
#endif
diff -urN libc.orig/libio/vwprintf.c libc/libio/vwprintf.c
--- libc.orig/libio/vwprintf.c 2001-08-17 03:05:37.000000000 -0400
+++ libc/libio/vwprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1993,1995,1997,1999,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1995, 1997, 1999, 2001, 2004
+ 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
@@ -16,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include "libioP.h"
#include <stdarg.h>
#include <stdio.h>
#include <wchar.h>
@@ -23,9 +25,13 @@
/* Write formatted output to stdout according to the
format string FORMAT, using the argument list in ARG. */
int
-vwprintf (format, arg)
- const wchar_t *format;
- __gnuc_va_list arg;
+__vwprintf (const wchar_t *format, __gnuc_va_list arg)
{
- return __vfwprintf (stdout, format, arg);
+ return ___vfwprintf (stdout, format, arg NLDBL_0);
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __vwprintf, vwprintf);
+#else
+strong_alias (__vwprintf, vwprintf)
+#endif
diff -urN libc.orig/libio/vwscanf.c libc/libio/vwscanf.c
--- libc.orig/libio/vwscanf.c 2001-07-06 00:55:32.000000000 -0400
+++ libc/libio/vwscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997, 1999, 2004 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
@@ -29,9 +29,13 @@
#include <wchar.h>
int
-vwscanf (format, args)
- const wchar_t *format;
- _IO_va_list args;
+___vwscanf (const wchar_t *format, _IO_va_list args)
{
- return _IO_vfwscanf (_IO_stdin, format, args, NULL);
+ return __IO_vfwscanf (_IO_stdin, format, args, NULL NLDBL_0);
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, ___vwscanf, vwscanf);
+#else
+strong_alias (___vwscanf, vwscanf)
+#endif
diff -urN libc.orig/libio/wprintf.c libc/libio/wprintf.c
--- libc.orig/libio/wprintf.c 2001-08-17 03:05:37.000000000 -0400
+++ libc/libio/wprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1995,1996,1997,1999,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 1999, 2001, 2004
+ 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
@@ -16,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include "libioP.h"
#include <stdarg.h>
#include <stdio.h>
#include <wchar.h>
@@ -23,14 +25,20 @@
/* Write formatted output to stdout from the format string FORMAT. */
/* VARARGS1 */
int
-wprintf (const wchar_t *format, ...)
+__wprintf (const wchar_t *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = __vfwprintf (stdout, format, arg);
+ done = ___vfwprintf (stdout, format, arg NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __wprintf, wprintf);
+#else
+strong_alias (__wprintf, wprintf)
+#endif
diff -urN libc.orig/libio/wscanf.c libc/libio/wscanf.c
--- libc.orig/libio/wscanf.c 2001-07-06 00:55:32.000000000 -0400
+++ libc/libio/wscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 1999, 2004
+ 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
@@ -16,22 +17,28 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>
#include <wchar.h>
-
/* Read formatted input from stdin according to the format string FORMAT. */
/* VARARGS1 */
int
-wscanf (const wchar_t *format, ...)
+___wscanf (const wchar_t *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = _IO_vfwscanf (stdin, format, arg, NULL);
+ done = __IO_vfwscanf (stdin, format, arg, NULL NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, ___wscanf, wscanf);
+#else
+strong_alias (___wscanf, wscanf)
+#endif
diff -urN libc.orig/math/bits/mathcalls.h libc/math/bits/mathcalls.h
--- libc.orig/math/bits/mathcalls.h 2003-01-12 14:10:08.000000000 -0500
+++ libc/math/bits/mathcalls.h 2005-11-11 13:30:38.000000000 -0500
@@ -281,7 +281,7 @@
/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
__MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
-# ifdef __USE_ISOC99
+# if defined __USE_ISOC99 && !defined __NLDBL_COMPAT
__MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
# endif
diff -urN libc.orig/math/cabs.c libc/math/cabs.c
--- libc.orig/math/cabs.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/cabs.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,33 +0,0 @@
-/* Return the complex absolute value of double complex value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-#include <math.h>
-
-double
-__cabs (double _Complex z)
-{
- return __hypot (__real__ z, __imag__ z);
-}
-weak_alias (__cabs, cabs)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__cabs, __cabsl)
-weak_alias (__cabs, cabsl)
-#endif
diff -urN libc.orig/math/cabsl.c libc/math/cabsl.c
--- libc.orig/math/cabsl.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/cabsl.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,29 +0,0 @@
-/* Return the complex absolute value of long double complex value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-#include <math.h>
-
-long double
-__cabsl (long double _Complex z)
-{
- return __hypotl (__real__ z, __imag__ z);
-}
-weak_alias (__cabsl, cabsl)
diff -urN libc.orig/math/carg.c libc/math/carg.c
--- libc.orig/math/carg.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/carg.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,33 +0,0 @@
-/* Compute argument of complex double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-#include <math.h>
-
-double
-__carg (__complex__ double x)
-{
- return __atan2 (__imag__ x, __real__ x);
-}
-weak_alias (__carg, carg)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__carg, __cargl)
-weak_alias (__carg, cargl)
-#endif
diff -urN libc.orig/math/cargl.c libc/math/cargl.c
--- libc.orig/math/cargl.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/cargl.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,29 +0,0 @@
-/* Compute argument of complex long double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-#include <math.h>
-
-long double
-__cargl (__complex__ long double x)
-{
- return __atan2l (__imag__ x, __real__ x);
-}
-weak_alias (__cargl, cargl)
diff -urN libc.orig/math/cimag.c libc/math/cimag.c
--- libc.orig/math/cimag.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/cimag.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,32 +0,0 @@
-/* Return imaginary part of complex double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-
-double
-__cimag (double _Complex z)
-{
- return __imag__ z;
-}
-weak_alias (__cimag, cimag)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__cimag, __cimagl)
-weak_alias (__cimag, cimagl)
-#endif
diff -urN libc.orig/math/cimagl.c libc/math/cimagl.c
--- libc.orig/math/cimagl.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/cimagl.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,28 +0,0 @@
-/* Return imaginary part of complex long double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-
-long double
-__cimagl (long double _Complex z)
-{
- return __imag__ z;
-}
-weak_alias (__cimagl, cimagl)
diff -urN libc.orig/math/complex.h libc/math/complex.h
--- libc.orig/math/complex.h 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/complex.h 2005-11-11 13:30:38.000000000 -0500
@@ -84,7 +84,14 @@
/* And the long double versions. It is non-critical to define them
here unconditionally since `long double' is required in ISO C99. */
-#if __STDC__ - 0 || __GNUC__ - 0 && !defined __NO_LONG_DOUBLE_MATH
+#if (__STDC__ - 0 || __GNUC__ - 0) \
+ && (!defined __NO_LONG_DOUBLE_MATH || defined __NLDBL_COMPAT)
+# ifdef __NLDBL_COMPAT
+# undef __MATHDECL_1
+# define __MATHDECL_1(type, function, args) \
+ extern type __REDIRECT(__MATH_PRECNAME(function), args, function) __THROW
+# endif
+
# ifndef _Mlong_double_
# define _Mlong_double_ long double
# endif
diff -urN libc.orig/math/conj.c libc/math/conj.c
--- libc.orig/math/conj.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/conj.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,32 +0,0 @@
-/* Return complex conjugate of complex double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-
-double _Complex
-__conj (double _Complex z)
-{
- return ~z;
-}
-weak_alias (__conj, conj)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__conj, __conjl)
-weak_alias (__conj, conjl)
-#endif
diff -urN libc.orig/math/conjl.c libc/math/conjl.c
--- libc.orig/math/conjl.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/conjl.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,28 +0,0 @@
-/* Return complex conjugate of complex long double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-
-long double _Complex
-__conjl (long double _Complex z)
-{
- return ~z;
-}
-weak_alias (__conjl, conjl)
diff -urN libc.orig/math/creal.c libc/math/creal.c
--- libc.orig/math/creal.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/creal.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,32 +0,0 @@
-/* Return real part of complex double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-
-double
-__creal (double _Complex z)
-{
- return __real__ z;
-}
-weak_alias (__creal, creal)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__creal, __creall)
-weak_alias (__creal, creall)
-#endif
diff -urN libc.orig/math/creall.c libc/math/creall.c
--- libc.orig/math/creall.c 2001-07-06 00:55:35.000000000 -0400
+++ libc/math/creall.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,28 +0,0 @@
-/* Return real part of complex long double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <complex.h>
-
-long double
-__creall (long double _Complex z)
-{
- return __real__ z;
-}
-weak_alias (__creall, creall)
diff -urN libc.orig/math/math.h libc/math/math.h
--- libc.orig/math/math.h 2004-12-16 13:35:41.000000000 -0500
+++ libc/math/math.h 2005-11-11 13:30:38.000000000 -0500
@@ -96,9 +96,35 @@
# undef _Mdouble_END_NAMESPACE
# undef __MATH_PRECNAME
-# if (__STDC__ - 0 || __GNUC__ - 0) && !defined __NO_LONG_DOUBLE_MATH
+# if (__STDC__ - 0 || __GNUC__ - 0) \
+ && (!defined __NO_LONG_DOUBLE_MATH || defined __NLDBL_COMPAT)
+# ifdef __NLDBL_COMPAT
+
+# ifdef __USE_ISOC99
+extern _Mfloat_ __nldbl_nexttowardf (_Mfloat_ __x, long double __y)
+ __attribute__ ((__const__)) __THROW;
+# ifdef __REDIRECT
+extern _Mfloat_ __REDIRECT (nexttowardf, (_Mfloat_ __x, long double __y),
+ __nldbl_nexttowardf)
+ __attribute__ ((__const__)) __THROW;
+extern _Mdouble_ __REDIRECT (nexttoward, (_Mdouble_ __x, long double __y),
+ nextafter) __attribute__ ((__const__)) __THROW;
+# else
+# define nexttowardf __nldbl_nexttowardf
+# define nexttoward nextafter
+# endif
+# endif
+
/* Include the file of declarations again, this time using `long double'
instead of `double' and appending l to each function name. */
+
+# undef __MATHDECL_1
+# define __MATHDECL_2(type, function,suffix, args, alias) \
+ extern type __REDIRECT(__MATH_PRECNAME(function,suffix), \
+ args, alias) __THROW
+# define __MATHDECL_1(type, function,suffix, args) \
+ __MATHDECL_2(type, function,suffix, args, __CONCAT(function,suffix))
+# endif
# ifndef _Mlong_double_
# define _Mlong_double_ long double
diff -urN libc.orig/misc/efgcvt.c libc/misc/efgcvt.c
--- libc.orig/misc/efgcvt.c 2002-11-01 15:43:38.000000000 -0500
+++ libc/misc/efgcvt.c 2005-11-11 13:30:38.000000000 -0500
@@ -23,6 +23,7 @@
#include <sys/param.h>
#include <float.h>
#include <bits/libc-lock.h>
+#include <shlib-compat.h>
#ifndef FLOAT_TYPE
# define FLOAT_TYPE double
@@ -44,10 +45,14 @@
# error "NDIGIT_MAX must be precomputed"
# define NDIGIT_MAX (lrint (ceil (M_LN2 / M_LN10 * DBL_MANT_DIG + 1.0)))
# endif
+#else
+# define LONG_DOUBLE_CVT
#endif
#define APPEND(a, b) APPEND2 (a, b)
#define APPEND2(a, b) a##b
+#define __APPEND(a, b) __APPEND2 (a, b)
+#define __APPEND2(a, b) __##a##b
#define FCVT_BUFFER APPEND (FUNC_PREFIX, fcvt_buffer)
@@ -60,14 +65,14 @@
libc_freeres_ptr (static char *FCVT_BUFPTR);
char *
-APPEND (FUNC_PREFIX, fcvt) (value, ndigit, decpt, sign)
+__APPEND (FUNC_PREFIX, fcvt) (value, ndigit, decpt, sign)
FLOAT_TYPE value;
int ndigit, *decpt, *sign;
{
if (FCVT_BUFPTR == NULL)
{
- if (APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign,
- FCVT_BUFFER, MAXDIG) != -1)
+ if (__APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign,
+ FCVT_BUFFER, MAXDIG) != -1)
return FCVT_BUFFER;
FCVT_BUFPTR = (char *) malloc (FCVT_MAXDIG);
@@ -75,26 +80,26 @@
return FCVT_BUFFER;
}
- (void) APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign,
- FCVT_BUFPTR, FCVT_MAXDIG);
+ (void) __APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign,
+ FCVT_BUFPTR, FCVT_MAXDIG);
return FCVT_BUFPTR;
}
char *
-APPEND (FUNC_PREFIX, ecvt) (value, ndigit, decpt, sign)
+__APPEND (FUNC_PREFIX, ecvt) (value, ndigit, decpt, sign)
FLOAT_TYPE value;
int ndigit, *decpt, *sign;
{
- (void) APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign,
- ECVT_BUFFER, MAXDIG);
+ (void) __APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign,
+ ECVT_BUFFER, MAXDIG);
return ECVT_BUFFER;
}
char *
-APPEND (FUNC_PREFIX, gcvt) (value, ndigit, buf)
+__APPEND (FUNC_PREFIX, gcvt) (value, ndigit, buf)
FLOAT_TYPE value;
int ndigit;
char *buf;
@@ -102,3 +107,27 @@
sprintf (buf, "%.*" FLOAT_FMT_FLAG "g", MIN (ndigit, NDIGIT_MAX), value);
return buf;
}
+
+#if defined LONG_DOUBLE_OPTIONAL && \
+ SHLIB_COMPAT(libc, GLIBC_2_0, LONG_DOUBLE_OPTIONAL)
+# ifdef LONG_DOUBLE_CVT
+# define cvt_symbol(symbol) \
+ cvt_symbol_1 (libc, __APPEND (FUNC_PREFIX, symbol), \
+ APPEND (FUNC_PREFIX, symbol), LONG_DOUBLE_OPTIONAL)
+# define cvt_symbol_1(lib, local, symbol, version) \
+ versioned_symbol (lib, local, symbol, version)
+# else
+# define cvt_symbol(symbol) \
+ cvt_symbol_1 (libc, __APPEND (FUNC_PREFIX, symbol), \
+ APPEND (q, symbol), GLIBC_2_0); \
+ strong_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol))
+# define cvt_symbol_1(lib, local, symbol, version) \
+ compat_symbol (lib, local, symbol, version)
+# endif
+#else
+# define cvt_symbol(symbol) \
+ strong_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol))
+#endif
+cvt_symbol(fcvt);
+cvt_symbol(ecvt);
+cvt_symbol(gcvt);
diff -urN libc.orig/misc/efgcvt_r.c libc/misc/efgcvt_r.c
--- libc.orig/misc/efgcvt_r.c 2004-12-22 14:55:46.000000000 -0500
+++ libc/misc/efgcvt_r.c 2005-11-11 13:30:38.685614032 -0500
@@ -25,6 +25,7 @@
#include <math.h>
#include <stdlib.h>
#include <sys/param.h>
+#include <shlib-compat.h>
#ifndef FLOAT_TYPE
# define FLOAT_TYPE double
@@ -55,10 +56,14 @@
# error "FLOAT_MIN_10_NORM must be precomputed"
# define FLOAT_MIN_10_NORM exp10 (DBL_MIN_10_EXP)
# endif
+#else
+# define LONG_DOUBLE_CVT
#endif
#define APPEND(a, b) APPEND2 (a, b)
#define APPEND2(a, b) a##b
+#define __APPEND(a, b) __APPEND2 (a, b)
+#define __APPEND2(a, b) __##a##b
#define FLOOR APPEND(floor, FLOAT_NAME_EXT)
#define FABS APPEND(fabs, FLOAT_NAME_EXT)
@@ -67,7 +72,7 @@
int
-APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, buf, len)
+__APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, buf, len)
FLOAT_TYPE value;
int ndigit, *decpt, *sign;
char *buf;
@@ -163,10 +168,9 @@
return 0;
}
-libc_hidden_def (APPEND (FUNC_PREFIX, fcvt_r))
int
-APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign, buf, len)
+__APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign, buf, len)
FLOAT_TYPE value;
int ndigit, *decpt, *sign;
char *buf;
@@ -229,11 +233,33 @@
*sign = isfinite (value) ? signbit (value) != 0 : 0;
}
else
- if (APPEND (FUNC_PREFIX, fcvt_r) (value, MIN (ndigit, NDIGIT_MAX) - 1,
- decpt, sign, buf, len))
+ if (__APPEND (FUNC_PREFIX, fcvt_r) (value, MIN (ndigit, NDIGIT_MAX) - 1,
+ decpt, sign, buf, len))
return -1;
*decpt += exponent;
return 0;
}
-libc_hidden_def (APPEND (FUNC_PREFIX, ecvt_r))
+
+#if defined LONG_DOUBLE_OPTIONAL && \
+ SHLIB_COMPAT(libc, GLIBC_2_0, LONG_DOUBLE_OPTIONAL)
+# ifdef LONG_DOUBLE_CVT
+# define cvt_symbol(symbol) \
+ cvt_symbol_1 (libc, __APPEND (FUNC_PREFIX, symbol), \
+ APPEND (FUNC_PREFIX, symbol), LONG_DOUBLE_OPTIONAL)
+# define cvt_symbol_1(lib, local, symbol, version) \
+ versioned_symbol (lib, local, symbol, version)
+# else
+# define cvt_symbol(symbol) \
+ cvt_symbol_1 (libc, __APPEND (FUNC_PREFIX, symbol), \
+ APPEND (q, symbol), GLIBC_2_0); \
+ strong_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol))
+# define cvt_symbol_1(lib, local, symbol, version) \
+ compat_symbol (lib, local, symbol, version)
+# endif
+#else
+# define cvt_symbol(symbol) \
+ strong_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol))
+#endif
+cvt_symbol(fcvt_r);
+cvt_symbol(ecvt_r);
diff -urN libc.orig/misc/sys/cdefs.h libc/misc/sys/cdefs.h
--- libc.orig/misc/sys/cdefs.h 2005-03-18 19:12:37.000000000 -0500
+++ libc/misc/sys/cdefs.h 2005-11-11 13:30:38.684614184 -0500
@@ -309,4 +309,27 @@
# endif
#endif
+#include <bits/wordsize.h>
+
+/* Optional long double support macro. Use
+ extern type __NLDBL_REDIR (name, (arguments));
+ instead of
+ extern type name (arguments);
+ for functions which need to be versioned based on whether long double
+ is the same as double or bigger.
+ If it is bigger, the latest version of the function will be used,
+ if it is the same as double, it will be redirected to __nldbl_name
+ function (which is an alias to the older version of name).
+ If the function should be redirected to something other than __nldbl_name,
+ use __NLDBL_REDIR2 macro (e.g. strtold wants to redirect to strtod
+ if long double is the same as double). */
+#if defined __NLDBL_COMPAT && defined __REDIRECT
+# define __NLDBL_REDIR2(name, proto, alias) __REDIRECT (name, proto, alias)
+# define __NLDBL_REDIR(name, proto) \
+ __NLDBL_REDIR2 (name, proto, __nldbl_##name)
+#else
+# define __NLDBL_REDIR2(name, proto, alias) name proto
+# define __NLDBL_REDIR(name, proto) name proto
+#endif
+
#endif /* sys/cdefs.h */
Files libc.orig/po/be.mo and libc/po/be.mo differ
Files libc.orig/po/ca.mo and libc/po/ca.mo differ
Files libc.orig/po/cs.mo and libc/po/cs.mo differ
Files libc.orig/po/da.mo and libc/po/da.mo differ
Files libc.orig/po/de.mo and libc/po/de.mo differ
Files libc.orig/po/el.mo and libc/po/el.mo differ
Files libc.orig/po/en_GB.mo and libc/po/en_GB.mo differ
Files libc.orig/po/es.mo and libc/po/es.mo differ
Files libc.orig/po/fi.mo and libc/po/fi.mo differ
Files libc.orig/po/fr.mo and libc/po/fr.mo differ
Files libc.orig/po/gl.mo and libc/po/gl.mo differ
Files libc.orig/po/hr.mo and libc/po/hr.mo differ
Files libc.orig/po/hu.mo and libc/po/hu.mo differ
Files libc.orig/po/it.mo and libc/po/it.mo differ
Files libc.orig/po/ja.mo and libc/po/ja.mo differ
Files libc.orig/po/ko.mo and libc/po/ko.mo differ
Files libc.orig/po/nb.mo and libc/po/nb.mo differ
Files libc.orig/po/nl.mo and libc/po/nl.mo differ
Files libc.orig/po/pl.mo and libc/po/pl.mo differ
Files libc.orig/po/pt_BR.mo and libc/po/pt_BR.mo differ
Files libc.orig/po/ru.mo and libc/po/ru.mo differ
Files libc.orig/po/rw.mo and libc/po/rw.mo differ
Files libc.orig/po/sk.mo and libc/po/sk.mo differ
Files libc.orig/po/sv.mo and libc/po/sv.mo differ
Files libc.orig/po/tr.mo and libc/po/tr.mo differ
Files libc.orig/po/zh_CN.mo and libc/po/zh_CN.mo differ
Files libc.orig/po/zh_TW.mo and libc/po/zh_TW.mo differ
diff -urN libc.orig/stdio-common/asprintf.c libc/stdio-common/asprintf.c
--- libc.orig/stdio-common/asprintf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/asprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -19,25 +19,31 @@
#include <stdarg.h>
#include <stdio.h>
-
-#include <libio/libioP.h>
-#define vasprintf(s, f, a) _IO_vasprintf (s, f, a)
+#include <libioP.h>
#undef __asprintf
/* Write formatted output from FORMAT to a string which is
allocated with malloc and stored in *STRING_PTR. */
/* VARARGS2 */
int
-__asprintf (char **string_ptr, const char *format, ...)
+___asprintf (char **string_ptr, const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = vasprintf (string_ptr, format, arg);
+ done = ___vasprintf (string_ptr, format, arg NLDBL_0);
va_end (arg);
return done;
}
-INTDEF(__asprintf)
+INTDEF2(___asprintf, __asprintf)
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+weak_alias (___asprintf, ____asprintf)
+long_double_symbol (libc, ___asprintf, __asprintf);
+long_double_symbol (libc, ____asprintf, asprintf);
+#else
+strong_alias (___asprintf, __asprintf)
weak_alias (__asprintf, asprintf)
+#endif
diff -urN libc.orig/stdio-common/dprintf.c libc/stdio-common/dprintf.c
--- libc.orig/stdio-common/dprintf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/dprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -18,22 +18,27 @@
#include <stdarg.h>
#include <stdio.h>
-
-#include <libio/libioP.h>
-#define vdprintf(d, f, a) _IO_vdprintf (d, f, a)
+#include <libioP.h>
/* Write formatted output to D, according to the format string FORMAT. */
/* VARARGS2 */
int
-dprintf (int d, const char *format, ...)
+__dprintf (int d, const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = vdprintf (d, format, arg);
+ done = ___vdprintf (d, format, arg NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+libc_hidden_ver (__dprintf, dprintf)
+long_double_symbol (libc, __dprintf, dprintf);
+#else
+strong_alias (__dprintf, dprintf)
libc_hidden_def (dprintf)
+#endif
diff -urN libc.orig/stdio-common/fprintf.c libc/stdio-common/fprintf.c
--- libc.orig/stdio-common/fprintf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/fprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -16,27 +16,36 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>
-
/* Write formatted output to STREAM from the format string FORMAT. */
/* VARARGS2 */
int
-fprintf (FILE *stream, const char *format, ...)
+__fprintf (FILE *stream, const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = vfprintf (stream, format, arg);
+ done = ___vfprintf (stream, format, arg NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+libc_hidden_ver (__fprintf, fprintf)
+long_double_symbol (libc, __fprintf, fprintf);
+weak_alias (__fprintf, __IO_fprintf)
+long_double_symbol (libc, __IO_fprintf, _IO_fprintf);
+#else
+strong_alias (__fprintf, fprintf)
libc_hidden_def (fprintf)
/* We define the function with the real name here. But deep down in
libio the original function _IO_fprintf is also needed. So make
an alias. */
-weak_alias (fprintf, _IO_fprintf)
+weak_alias (__fprintf, _IO_fprintf)
+#endif
diff -urN libc.orig/stdio-common/fscanf.c libc/stdio-common/fscanf.c
--- libc.orig/stdio-common/fscanf.c 2001-07-06 00:55:40.000000000 -0400
+++ libc/stdio-common/fscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 2004 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
@@ -16,20 +16,27 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>
/* Read formatted input from STREAM according to the format string FORMAT. */
/* VARARGS2 */
int
-fscanf (FILE *stream, const char *format, ...)
+__fscanf (FILE *stream, const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = __vfscanf (stream, format, arg);
+ done = __IO_vfscanf (stream, format, arg, NULL NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __fscanf, fscanf);
+#else
+strong_alias (__fscanf, fscanf)
+#endif
diff -urN libc.orig/stdio-common/printf.c libc/stdio-common/printf.c
--- libc.orig/stdio-common/printf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/printf.c 2005-11-11 13:30:38.000000000 -0500
@@ -17,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>
@@ -25,18 +26,25 @@
/* Write formatted output to stdout from the format string FORMAT. */
/* VARARGS1 */
int
-printf (const char *format, ...)
+__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = vfprintf (stdout, format, arg);
+ done = ___vfprintf (stdout, format, arg NLDBL_0);
va_end (arg);
return done;
}
#undef _IO_printf
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+strong_alias (__printf, __IO_printf)
+long_double_symbol (libc, __printf, printf);
+long_double_symbol (libc, __IO_printf, _IO_printf);
+#else
+strong_alias (__printf, printf);
/* This is for libg++. */
strong_alias (printf, _IO_printf);
+#endif
diff -urN libc.orig/stdio-common/printf_fp.c libc/stdio-common/printf_fp.c
--- libc.orig/stdio-common/printf_fp.c 2004-03-24 16:51:47.000000000 -0500
+++ libc/stdio-common/printf_fp.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,5 +1,6 @@
/* Floating point output for `printf'.
- Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
@@ -138,9 +139,9 @@
int
-__printf_fp (FILE *fp,
- const struct printf_info *info,
- const void *const *args)
+___printf_fp (FILE *fp,
+ const struct printf_info *info,
+ const void *const *args)
{
/* The floating-point value to output. */
union
@@ -1153,7 +1154,30 @@
}
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+libc_hidden_ver (___printf_fp, __printf_fp)
+long_double_symbol (libc, ___printf_fp, __printf_fp);
+
+int
+attribute_compat_text_section
+__nldbl___printf_fp (FILE *fp,
+ const struct printf_info *info,
+ const void *const *args)
+{
+ struct printf_info info_no_ldbl = *info;
+
+ info_no_ldbl.is_long_double = 0;
+ return ___printf_fp (fp, &info_no_ldbl, args);
+}
+
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __nldbl___printf_fp, __printf_fp, GLIBC_2_0);
+# endif
+#else
+strong_alias (___printf_fp, __printf_fp)
libc_hidden_def (__printf_fp)
+#endif
/* Return the number of extra grouping characters that will be inserted
into a number with INTDIG_MAX integer digits. */
diff -urN libc.orig/stdio-common/printf.h libc/stdio-common/printf.h
--- libc.orig/stdio-common/printf.h 2001-07-23 19:42:48.000000000 -0400
+++ libc/stdio-common/printf.h 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991-1993,1995-1999,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993, 1995-1999, 2000, 2001, 2004
+ 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
@@ -130,9 +131,10 @@
of magnitude used for numbers ('k' for kilo, 'm' for mega etc). If
the format specifier is a uppercase character powers of 1000 are
used. Otherwise powers of 1024. */
-extern int printf_size (FILE *__restrict __fp,
- __const struct printf_info *__info,
- __const void *__const *__restrict __args) __THROW;
+extern int __NLDBL_REDIR (printf_size,
+ (FILE *__restrict __fp,
+ __const struct printf_info *__info,
+ __const void *__const *__restrict __args)) __THROW;
/* This is the appropriate argument information function for `printf_size'. */
extern int printf_size_info (__const struct printf_info *__restrict
diff -urN libc.orig/stdio-common/printf_size.c libc/stdio-common/printf_size.c
--- libc.orig/stdio-common/printf_size.c 2004-08-04 17:43:30.000000000 -0400
+++ libc/stdio-common/printf_size.c 2005-11-11 13:30:38.668616616 -0500
@@ -86,7 +86,7 @@
int
-printf_size (FILE *fp, const struct printf_info *info, const void *const *args)
+__printf_size (FILE *fp, const struct printf_info *info, const void *const *args)
{
/* Units for the both formats. */
#define BINARY_UNITS " kmgtpezy"
@@ -234,6 +234,27 @@
return done;
}
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# undef printf_size
+long_double_symbol (libc, __printf_size, printf_size);
+
+int
+attribute_compat_text_section
+__nldbl_printf_size (FILE *fp, const struct printf_info *info,
+ const void *const *args)
+{
+ struct printf_info info_no_ldbl = *info;
+
+ info_no_ldbl.is_long_double = 0;
+ return __printf_size (fp, &info_no_ldbl, args);
+}
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __nldbl_printf_size, printf_size, GLIBC_2_1);
+# endif
+#else
+strong_alias (__printf_size, printf_size)
+#endif
+
/* This is the function used by `vfprintf' to determine number and
type of the arguments. */
int
diff -urN libc.orig/stdio-common/scanf.c libc/stdio-common/scanf.c
--- libc.orig/stdio-common/scanf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/scanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -19,21 +19,25 @@
#include <stdarg.h>
#include <stdio.h>
-
#include <libioP.h>
-
/* Read formatted input from stdin according to the format string FORMAT. */
/* VARARGS1 */
int
-scanf (const char *format, ...)
+__scanf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = INTUSE(_IO_vfscanf) (stdin, format, arg, NULL);
+ done = __IO_vfscanf (stdin, format, arg, NULL NLDBL_0);
va_end (arg);
return done;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __scanf, scanf);
+#else
+strong_alias (__scanf, scanf)
+#endif
diff -urN libc.orig/stdio-common/snprintf.c libc/stdio-common/snprintf.c
--- libc.orig/stdio-common/snprintf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/snprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -18,9 +18,7 @@
#include <stdarg.h>
#include <stdio.h>
-
-#include <libio/libioP.h>
-#define __vsnprintf(s, l, f, a) _IO_vsnprintf (s, l, f, a)
+#include <libioP.h>
/* Write formatted output into S, according to the format
string FORMAT, writing no more than MAXLEN characters. */
@@ -32,9 +30,14 @@
int done;
va_start (arg, format);
- done = __vsnprintf (s, maxlen, format, arg);
+ done = ___vsnprintf (s, maxlen, format, arg NLDBL_0);
va_end (arg);
return done;
}
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+weak_alias (__snprintf, ___snprintf)
+long_double_symbol (libc, ___snprintf, snprintf);
+#else
weak_alias (__snprintf, snprintf)
+#endif
diff -urN libc.orig/stdio-common/sprintf.c libc/stdio-common/sprintf.c
--- libc.orig/stdio-common/sprintf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/sprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -19,23 +19,30 @@
#include <stdarg.h>
#include <stdio.h>
-#include <libio/iolibio.h>
-#define vsprintf(s, f, a) INTUSE(_IO_vsprintf) (s, f, a)
+#include <libioP.h>
/* Write formatted output into S, according to the format string FORMAT. */
/* VARARGS2 */
int
-sprintf (char *s, const char *format, ...)
+__sprintf (char *s, const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = vsprintf (s, format, arg);
+ done = ___vsprintf (s, format, arg NLDBL_0);
va_end (arg);
return done;
}
-libc_hidden_def (sprintf)
-strong_alias(sprintf, _IO_sprintf)
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+libc_hidden_ver (__sprintf, sprintf)
+strong_alias (__sprintf, __IO_sprintf)
+long_double_symbol (libc, __sprintf, sprintf);
+long_double_symbol (libc, __IO_sprintf, _IO_sprintf);
+#else
+strong_alias (__sprintf, sprintf)
+libc_hidden_def (sprintf)
+strong_alias (__sprintf, _IO_sprintf)
+#endif
diff -urN libc.orig/stdio-common/sscanf.c libc/stdio-common/sscanf.c
--- libc.orig/stdio-common/sscanf.c 2004-03-18 19:21:39.000000000 -0500
+++ libc/stdio-common/sscanf.c 2005-11-11 13:30:38.000000000 -0500
@@ -19,25 +19,33 @@
#include <stdarg.h>
#include <stdio.h>
-#include <libio/iolibio.h>
-#define __vsscanf(s, f, a) _IO_vsscanf (s, f, a)
+#include <libioP.h>
/* Read formatted input from S, according to the format string FORMAT. */
/* VARARGS2 */
int
-sscanf (const char *s, const char *format, ...)
+__sscanf (const char *s, const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
- done = __vsscanf (s, format, arg);
+ done = ___vsscanf (s, format, arg NLDBL_0);
va_end (arg);
return done;
}
-libc_hidden_def (sscanf)
-
#undef _IO_sscanf
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# undef sscanf
+long_double_symbol (libc, __sscanf, sscanf);
+libc_hidden_ver (__sscanf, sscanf)
+strong_alias (__sscanf, __IO_sscanf)
+long_double_symbol (libc, __IO_sscanf, _IO_sscanf);
+#else
+strong_alias (__sscanf, sscanf)
+libc_hidden_def (sscanf)
/* This is for libg++. */
strong_alias (sscanf, _IO_sscanf)
+#endif
diff -urN libc.orig/stdio-common/vfprintf.c libc/stdio-common/vfprintf.c
--- libc.orig/stdio-common/vfprintf.c 2005-11-05 16:48:58.000000000 -0500
+++ libc/stdio-common/vfprintf.c 2005-11-11 13:53:21.115597680 -0500
@@ -18,8 +18,10 @@
#include <ctype.h>
#include <limits.h>
+#include <math.h>
#include <printf.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
@@ -63,8 +65,9 @@
} while (0)
#define UNBUFFERED_P(S) ((S)->_IO_file_flags & _IO_UNBUFFERED)
+#undef vfprintf
#ifndef COMPILE_WPRINTF
-# define vfprintf _IO_vfprintf
+# define vfprintf ___vfprintf
# define CHAR_T char
# define UCHAR_T unsigned char
# define INT_T int
@@ -80,7 +83,7 @@
# define ORIENT if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\
return -1
#else
-# define vfprintf _IO_vfwprintf
+# define vfprintf ___vfwprintf
# define CHAR_T wchar_t
/* This is a hack!!! There should be a type uwchar_t. */
# define UCHAR_T unsigned int /* uwchar_t */
@@ -159,7 +162,8 @@
/* Helper function to provide temporary buffering for unbuffered streams. */
-static int buffered_vfprintf (FILE *stream, const CHAR_T *fmt, va_list)
+static int buffered_vfprintf (FILE *stream, const CHAR_T *fmt, va_list
+ NLDBL_DECL)
__THROW __attribute__ ((noinline)) internal_function;
/* Handle unknown format specifier. */
@@ -178,7 +182,7 @@
/* The function itself. */
int
-vfprintf (FILE *s, const CHAR_T *format, va_list ap)
+vfprintf (FILE *s, const CHAR_T *format, va_list ap NLDBL_DECL)
{
/* The character used as thousands separator. */
#ifdef COMPILE_WPRINTF
@@ -758,6 +762,9 @@
\
if (fspec == NULL) \
{ \
+ if (DBL_IS_LDBL) \
+ is_long_double = 0; \
+ \
struct printf_info info = { .prec = prec, \
.width = width, \
.spec = spec, \
@@ -785,6 +792,11 @@
else \
{ \
ptr = (const void *) &args_value[fspec->data_arg]; \
+ if (DBL_IS_LDBL) \
+ { \
+ fspec->data_arg_type = PA_DOUBLE; \
+ fspec->info.is_long_double = 0; \
+ } \
\
function_done = __printf_fp (s, &fspec->info, &ptr); \
} \
@@ -808,6 +820,9 @@
\
if (fspec == NULL) \
{ \
+ if (DBL_IS_LDBL) \
+ is_long_double = 0; \
+ \
struct printf_info info = { .prec = prec, \
.width = width, \
.spec = spec, \
@@ -834,6 +849,8 @@
else \
{ \
ptr = (const void *) &args_value[fspec->data_arg]; \
+ if (DBL_IS_LDBL) \
+ fspec->info.is_long_double = 0; \
\
function_done = __printf_fphex (s, &fspec->info, &ptr); \
} \
@@ -1243,7 +1260,7 @@
if (UNBUFFERED_P (s))
/* Use a helper function which will allocate a local temporary buffer
for the stream and then call us again. */
- return buffered_vfprintf (s, format, ap);
+ return buffered_vfprintf (s, format, ap NLDBL_ARG);
/* Initialize local variables. */
done = 0;
@@ -1704,7 +1721,15 @@
T (PA_INT|PA_FLAG_LONG_LONG, pa_long_long_int, long long int);
T (PA_FLOAT, pa_double, double); /* Promoted. */
T (PA_DOUBLE, pa_double, double);
- T (PA_DOUBLE|PA_FLAG_LONG_DOUBLE, pa_long_double, long double);
+ case PA_DOUBLE|PA_FLAG_LONG_DOUBLE:
+ if (DBL_IS_LDBL)
+ {
+ args_value[cnt].pa_double = va_arg (ap_save, double);
+ args_type[cnt] &= ~PA_FLAG_LONG_DOUBLE;
+ }
+ else
+ args_value[cnt].pa_long_double = va_arg (ap_save, long double);
+ break;
T (PA_STRING, pa_string, const char *);
T (PA_WSTRING, pa_wstring, const wchar_t *);
T (PA_POINTER, pa_pointer, void *);
@@ -2086,7 +2111,7 @@
static int
internal_function
buffered_vfprintf (register _IO_FILE *s, const CHAR_T *format,
- _IO_va_list args)
+ _IO_va_list args NLDBL_DECL)
{
CHAR_T buf[_IO_BUFSIZ];
struct helper_file helper;
@@ -2120,9 +2145,9 @@
/* Now print to helper instead. */
#ifndef COMPILE_WPRINTF
- result = INTUSE(_IO_vfprintf) (hp, format, args);
+ result = ___vfprintf (hp, format, args NLDBL_ARG);
#else
- result = vfprintf (hp, format, args);
+ result = vfprintf (hp, format, args NLDBL_ARG);
#endif
/* Lock stream. */
@@ -2154,12 +2179,38 @@
}
#undef vfprintf
-#ifdef strong_alias
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+
+# include <math_ldbl_opt.h>
+
+# ifdef COMPILE_WPRINTF
+int
+weak_function
+__vfwprintf (FILE *s, const CHAR_T *format, va_list ap)
+{
+ return ___vfwprintf (s, format, ap, 0);
+}
+long_double_symbol (libc, __vfwprintf, vfwprintf);
+# else
+int
+__vfprintf (FILE *s, const CHAR_T *format, va_list ap)
+{
+ return ___vfprintf (s, format, ap, 0);
+}
+strong_alias (__vfprintf, __new_vfprintf)
+long_double_symbol (libc, __vfprintf, _IO_vfprintf);
+long_double_symbol (libc, __new_vfprintf, vfprintf);
+libc_hidden_ver (__vfprintf, vfprintf)
+INTDEF2 (__vfprintf, _IO_vfprintf)
+# endif
+#elif defined strong_alias
/* This is for glibc. */
# ifdef COMPILE_WPRINTF
+strong_alias (___vfwprintf, _IO_vfwprintf);
strong_alias (_IO_vfwprintf, __vfwprintf);
weak_alias (_IO_vfwprintf, vfwprintf);
# else
+strong_alias (___vfprintf, _IO_vfprintf);
strong_alias (_IO_vfprintf, vfprintf);
libc_hidden_def (vfprintf)
INTDEF(_IO_vfprintf)
diff -urN libc.orig/stdio-common/vfscanf.c libc/stdio-common/vfscanf.c
--- libc.orig/stdio-common/vfscanf.c 2005-04-26 16:52:22.000000000 -0400
+++ libc/stdio-common/vfscanf.c 2005-11-11 13:30:38.672616008 -0500
@@ -20,6 +20,7 @@
#include <errno.h>
#include <limits.h>
#include <ctype.h>
+#include <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdint.h>
@@ -178,18 +179,12 @@
Return the number of assignments made, or -1 for an input error. */
#ifdef COMPILE_WSCANF
int
-_IO_vfwscanf (s, format, argptr, errp)
- _IO_FILE *s;
- const wchar_t *format;
- _IO_va_list argptr;
- int *errp;
+__IO_vfwscanf (_IO_FILE *s, const wchar_t *format, _IO_va_list argptr,
+ int *errp NLDBL_DECL)
#else
int
-_IO_vfscanf (s, format, argptr, errp)
- _IO_FILE *s;
- const char *format;
- _IO_va_list argptr;
- int *errp;
+__IO_vfscanf (_IO_FILE *s, const char *format, _IO_va_list argptr, int *errp
+ NLDBL_DECL)
#endif
{
va_list arg;
@@ -1891,7 +1886,7 @@
scan_float:
/* Convert the number. */
ADDW (L_('\0'));
- if (flags & LONGDBL)
+ if ((flags & LONGDBL) && !DBL_IS_LDBL)
{
long double d = __strtold_internal (wp, &tw, flags & GROUP);
if (!(flags & SUPPRESS) && tw != wp)
@@ -2454,24 +2449,68 @@
return done;
}
-#ifdef COMPILE_WSCANF
+#ifndef __LONG_DOUBLE_MATH_OPTIONAL
+# ifdef COMPILE_WSCANF
+strong_alias (__IO_vfwscanf, _IO_vfwscanf)
+
int
__vfwscanf (FILE *s, const wchar_t *format, va_list argptr)
{
- return _IO_vfwscanf (s, format, argptr, NULL);
+ return __IO_vfwscanf (s, format, argptr, NULL);
}
-#else
+weak_alias (__vfwscanf, vfwscanf)
+# else
+strong_alias (__IO_vfscanf, _IO_vfscanf)
+
int
__vfscanf (FILE *s, const char *format, va_list argptr)
{
- return INTUSE(_IO_vfscanf) (s, format, argptr, NULL);
+ return __IO_vfscanf (s, format, argptr, NULL);
}
libc_hidden_def (__vfscanf)
-#endif
-
-#ifdef COMPILE_WSCANF
-weak_alias (__vfwscanf, vfwscanf)
-#else
weak_alias (__vfscanf, vfscanf)
INTDEF(_IO_vfscanf)
+# endif
+#else
+
+# include <math_ldbl_opt.h>
+
+
+# ifdef COMPILE_WSCANF
+int
+_IO_vfwscanf (_IO_FILE *s, const wchar_t *format, _IO_va_list argptr,
+ int *errp)
+{
+ return __IO_vfwscanf (s, format, argptr, errp, 0);
+}
+
+int
+__vfwscanf (FILE *s, const wchar_t *format, va_list argptr)
+{
+ return __IO_vfwscanf (s, format, argptr, NULL, 0);
+}
+weak_alias (__vfwscanf, ___vfwscanf)
+
+long_double_symbol (libc, ___vfwscanf, vfwscanf);
+# else
+int
+___IO_vfscanf (_IO_FILE *s, const char *format, _IO_va_list argptr, int *errp)
+{
+ return __IO_vfscanf (s, format, argptr, errp, 0);
+}
+
+int
+___vfscanf (FILE *s, const char *format, va_list argptr)
+{
+ return __IO_vfscanf (s, format, argptr, NULL, 0);
+}
+weak_alias (___vfscanf, ____vfscanf)
+
+long_double_symbol (libc, ___IO_vfscanf, _IO_vfscanf);
+long_double_symbol (libc, ___vfscanf, __vfscanf);
+long_double_symbol (libc, ____vfscanf, vfscanf);
+libc_hidden_ver (___vfscanf, __vfscanf)
+INTDEF2(___IO_vfscanf, _IO_vfscanf)
+# endif
+
#endif
diff -urN libc.orig/stdio-common/vprintf.c libc/stdio-common/vprintf.c
--- libc.orig/stdio-common/vprintf.c 2001-07-06 00:55:41.000000000 -0400
+++ libc/stdio-common/vprintf.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1995, 1997, 2004 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
@@ -19,15 +19,20 @@
#include <stdarg.h>
#undef __OPTIMIZE__ /* Avoid inline `vprintf' function. */
#include <stdio.h>
+#include <libioP.h>
#undef vprintf
/* Write formatted output to stdout according to the
format string FORMAT, using the argument list in ARG. */
int
-vprintf (format, arg)
- const char *format;
- __gnuc_va_list arg;
+__vprintf (const char *format, __gnuc_va_list arg)
{
- return vfprintf (stdout, format, arg);
+ return ___vfprintf (stdout, format, arg NLDBL_0);
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __vprintf, vprintf);
+#else
+strong_alias (__vprintf, vprintf)
+#endif
diff -urN libc.orig/stdlib/monetary.h libc/stdlib/monetary.h
--- libc.orig/stdlib/monetary.h 2002-08-27 19:36:11.000000000 -0400
+++ libc/stdlib/monetary.h 2005-11-11 13:30:38.000000000 -0500
@@ -26,27 +26,29 @@
#define __need_size_t
#include <stddef.h>
#include <bits/types.h>
+#include <bits/wordsize.h>
#ifndef __ssize_t_defined
typedef __ssize_t ssize_t;
# define __ssize_t_defined
#endif
-
__BEGIN_DECLS
/* Formatting a monetary value according to the current locale. */
-extern ssize_t strfmon (char *__restrict __s, size_t __maxsize,
- __const char *__restrict __format, ...)
+extern ssize_t __NLDBL_REDIR (strfmon,
+ (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format, ...))
__THROW __attribute_format_strfmon__ (3, 4);
#ifdef __USE_GNU
# include <xlocale.h>
/* Formatting a monetary value according to the current locale. */
-extern ssize_t strfmon_l (char *__restrict __s, size_t __maxsize,
- __locale_t loc,
- __const char *__restrict __format, ...)
+extern ssize_t __NLDBL_REDIR (strfmon_l,
+ (char *__restrict __s, size_t __maxsize,
+ __locale_t loc,
+ __const char *__restrict __format, ...))
__THROW __attribute_format_strfmon__ (4, 5);
#endif
diff -urN libc.orig/stdlib/stdlib.h libc/stdlib/stdlib.h
--- libc.orig/stdlib/stdlib.h 2005-09-17 11:42:47.000000000 -0400
+++ libc/stdlib/stdlib.h 2005-11-11 13:52:24.125612080 -0500
@@ -173,9 +173,11 @@
extern float strtof (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW __nonnull ((1)) __wur;
-extern long double strtold (__const char *__restrict __nptr,
- char **__restrict __endptr)
- __THROW __nonnull ((1)) __wur;
+extern long double __NLDBL_REDIR2 (strtold,
+ (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __THROW __nonnull ((1)) __wur,
+ strtod);
__END_NAMESPACE_C99
#endif
@@ -266,10 +268,12 @@
char **__restrict __endptr, __locale_t __loc)
__THROW __nonnull ((1, 3)) __wur;
-extern long double strtold_l (__const char *__restrict __nptr,
- char **__restrict __endptr,
- __locale_t __loc)
- __THROW __nonnull ((1, 3)) __wur;
+extern long double __NLDBL_REDIR2 (strtold_l,
+ (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __THROW __nonnull ((1, 3)) __wur,
+ strtod_l);
#endif /* GNU */
@@ -282,10 +286,12 @@
extern float __strtof_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__THROW __nonnull ((1)) __wur;
-extern long double __strtold_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __group)
- __THROW __nonnull ((1)) __wur;
+extern long double __NLDBL_REDIR2 (__strtold_internal,
+ (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __group)
+ __THROW __nonnull ((1)) __wur,
+ __strtod_internal);
#ifndef __strtol_internal_defined
extern long int __strtol_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
@@ -353,8 +359,10 @@
extern __inline long double
__NTH (strtold (__const char *__restrict __nptr, char **__restrict __endptr))
{
+# ifndef __NLDBL_COMPAT
return __strtold_internal (__nptr, __endptr, 0);
}
+# endif
__END_NAMESPACE_C99
# endif
@@ -835,14 +843,20 @@
# ifdef __USE_MISC
/* Long double versions of above functions. */
-extern char *qecvt (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign)
- __THROW __nonnull ((3, 4)) __wur;
-extern char *qfcvt (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign)
- __THROW __nonnull ((3, 4)) __wur;
-extern char *qgcvt (long double __value, int __ndigit, char *__buf)
- __THROW __nonnull ((3)) __wur;
+extern char *__NLDBL_REDIR2 (qecvt,
+ (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __THROW __nonnull ((3, 4)) __wur,
+ ecvt);
+extern char *__NLDBL_REDIR2 (qfcvt,
+ (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __THROW __nonnull ((3, 4)) __wur,
+ fcvt);
+extern char *__NLDBL_REDIR2 (qgcvt,
+ (long double __value, int __ndigit, char *__buf)
+ __THROW __nonnull ((3)) __wur,
+ gcvt);
/* Reentrant version of the functions above which provide their own
@@ -854,14 +868,18 @@
int *__restrict __sign, char *__restrict __buf,
size_t __len) __THROW __nonnull ((3, 4, 5));
-extern int qecvt_r (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign,
- char *__restrict __buf, size_t __len)
- __THROW __nonnull ((3, 4, 5));
-extern int qfcvt_r (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign,
- char *__restrict __buf, size_t __len)
- __THROW __nonnull ((3, 4, 5));
+extern int __NLDBL_REDIR2 (qecvt_r,
+ (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __THROW __nonnull ((3, 4, 5)),
+ ecvt_r);
+extern int __NLDBL_REDIR2 (qfcvt_r,
+ (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __THROW __nonnull ((3, 4, 5)),
+ fcvt_r);
# endif /* misc */
#endif /* use MISC || use X/Open Unix */
diff -urN libc.orig/stdlib/strfmon.c libc/stdlib/strfmon.c
--- libc.orig/stdlib/strfmon.c 2004-03-14 15:46:27.000000000 -0500
+++ libc/stdlib/strfmon.c 2005-11-11 13:30:38.000000000 -0500
@@ -25,15 +25,39 @@
ssize_t
-strfmon (char *s, size_t maxsize, const char *format, ...)
+__strfmon (char *s, size_t maxsize, const char *format, ...)
{
va_list ap;
va_start (ap, format);
- ssize_t res = __vstrfmon_l (s, maxsize, _NL_CURRENT_LOCALE, format, ap);
+ ssize_t res = __vstrfmon_l (s, maxsize, _NL_CURRENT_LOCALE, format, ap
+ NLDBL_0);
va_end (ap);
return res;
}
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+long_double_symbol (libc, __strfmon, strfmon);
+
+ssize_t
+attribute_compat_text_section
+__nldbl_strfmon (char *s, size_t maxsize, const char *format, ...)
+{
+ va_list ap;
+
+ va_start (ap, format);
+ ssize_t res = __vstrfmon_l (s, maxsize, _NL_CURRENT_LOCALE, format, ap, 1);
+ va_end (ap);
+ return res;
+}
+
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __nldbl_strfmon, strfmon, GLIBC_2_0);
+# endif
+
+#else
+strong_alias (__strfmon, strfmon)
+#endif
diff -urN libc.orig/stdlib/strfmon_l.c libc/stdlib/strfmon_l.c
--- libc.orig/stdlib/strfmon_l.c 2004-08-04 17:40:51.000000000 -0400
+++ libc/stdlib/strfmon_l.c 2005-11-11 13:30:38.530637592 -0500
@@ -23,10 +23,7 @@
#include <langinfo.h>
#include <locale.h>
#include <monetary.h>
-#ifdef USE_IN_LIBIO
-# include "../libio/libioP.h"
-# include "../libio/strfile.h"
-#endif
+#include "../libio/strfile.h"
#include <printf.h>
#include <stdarg.h>
#include <stdio.h>
@@ -88,17 +85,13 @@
be specified in format string. */
ssize_t
__vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
- va_list ap)
+ va_list ap NLDBL_DECL)
{
struct locale_data *current = loc->__locales[LC_MONETARY];
-#ifdef USE_IN_LIBIO
_IO_strfile f;
# ifdef _IO_MTSAFE_IO
_IO_lock_t lock;
# endif
-#else
- FILE f;
-#endif
struct printf_info info;
char *dest; /* Pointer so copy the output. */
const char *fmt; /* Pointer that walks through format. */
@@ -278,7 +271,8 @@
if (*fmt == 'L')
{
++fmt;
- is_long_double = 1;
+ if (!DBL_IS_LDBL)
+ is_long_double = 1;
}
/* Handle format specifier. */
@@ -633,16 +627,46 @@
}
ssize_t
-__strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
+___strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
{
va_list ap;
va_start (ap, format);
- ssize_t res = __vstrfmon_l (s, maxsize, loc, format, ap);
+ ssize_t res = __vstrfmon_l (s, maxsize, loc, format, ap NLDBL_0);
va_end (ap);
return res;
}
+
+#ifndef __LONG_DOUBLE_MATH_OPTIONAL
+strong_alias (___strfmon_l, __strfmon_l)
weak_alias (__strfmon_l, strfmon_l)
+#else
+long_double_symbol (libc, ___strfmon_l, __strfmon_l);
+weak_alias (___strfmon_l, ____strfmon_l)
+long_double_symbol (libc, ____strfmon_l, strfmon_l);
+
+ssize_t
+attribute_compat_text_section
+__nldbl___strfmon_l (char *s, size_t maxsize, __locale_t loc,
+ const char *format, ...)
+{
+ va_list ap;
+
+ va_start (ap, format);
+ ssize_t res = __vstrfmon_l (s, maxsize, loc, format, ap, 1);
+ va_end (ap);
+ return res;
+}
+weak_alias (__nldbl___strfmon_l, __nldbl_strfmon_l)
+
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __nldbl___strfmon_l, __strfmon_l, GLIBC_2_1);
+# endif
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_3)
+compat_symbol (libc, __nldbl_strfmon_l, strfmon_l, GLIBC_2_3);
+# endif
+
+#endif
diff -urN libc.orig/stdlib/strtod.c libc/stdlib/strtod.c
--- libc.orig/stdlib/strtod.c 2004-03-14 15:48:09.000000000 -0500
+++ libc/stdlib/strtod.c 2005-11-11 13:30:38.000000000 -0500
@@ -24,6 +24,7 @@
#ifndef FLOAT
+# include <math_ldbl_opt.h>
# define FLOAT double
# ifdef USE_WIDE_CHAR
# define STRTOF wcstod
@@ -68,3 +69,15 @@
{
return INTERNAL(STRTOF_L) (nptr, endptr, 0, _NL_CURRENT_LOCALE);
}
+
+#ifdef LONG_DOUBLE_COMPAT
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+# ifdef USE_WIDE_CHAR
+compat_symbol (libc, wcstod, wcstold, GLIBC_2_0);
+compat_symbol (libc, __wcstod_internal, __wcstold_internal, GLIBC_2_0);
+# else
+compat_symbol (libc, strtod, strtold, GLIBC_2_0);
+compat_symbol (libc, __strtod_internal, __strtold_internal, GLIBC_2_0);
+# endif
+# endif
+#endif
diff -urN libc.orig/stdlib/strtod_l.c libc/stdlib/strtod_l.c
--- libc.orig/stdlib/strtod_l.c 2005-09-28 02:06:51.000000000 -0400
+++ libc/stdlib/strtod_l.c 2005-11-11 13:30:38.523638656 -0500
@@ -28,6 +28,7 @@
`strtof.c', `wcstod.c', `wcstold.c', and `wcstof.c' to produce the
`long double' and `float' versions of the reader. */
#ifndef FLOAT
+# include <math_ldbl_opt.h>
# define FLOAT double
# define FLT DBL
# ifdef USE_WIDE_CHAR
@@ -406,6 +407,9 @@
#define INTERNAL(x) INTERNAL1(x)
#define INTERNAL1(x) __##x##_internal
+#ifndef ____STRTOF_INTERNAL
+# define ____STRTOF_INTERNAL INTERNAL (__STRTOF)
+#endif
/* This file defines a function to check for correct grouping. */
#include "grouping.h"
@@ -417,7 +421,7 @@
return 0.0. If the number is too big to be represented, set `errno' to
ERANGE and return HUGE_VAL with the appropriate sign. */
FLOAT
-INTERNAL (__STRTOF) (nptr, endptr, group, loc)
+____STRTOF_INTERNAL (nptr, endptr, group, loc)
const STRING_TYPE *nptr;
STRING_TYPE **endptr;
int group;
@@ -1557,7 +1561,7 @@
/* NOTREACHED */
}
#if defined _LIBC && !defined USE_WIDE_CHAR
-libc_hidden_def (INTERNAL (__STRTOF))
+libc_hidden_def (____STRTOF_INTERNAL)
#endif
/* External user entry point. */
@@ -1571,6 +1575,23 @@
STRING_TYPE **endptr;
__locale_t loc;
{
- return INTERNAL (__STRTOF) (nptr, endptr, 0, loc);
+ return ____STRTOF_INTERNAL (nptr, endptr, 0, loc);
}
weak_alias (__STRTOF, STRTOF)
+
+#ifdef LONG_DOUBLE_COMPAT
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+# ifdef USE_WIDE_CHAR
+compat_symbol (libc, __wcstod_l, __wcstold_l, GLIBC_2_1);
+# else
+compat_symbol (libc, __strtod_l, __strtold_l, GLIBC_2_1);
+# endif
+# endif
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_3)
+# ifdef USE_WIDE_CHAR
+compat_symbol (libc, wcstod_l, wcstold_l, GLIBC_2_3);
+# else
+compat_symbol (libc, strtod_l, strtold_l, GLIBC_2_3);
+# endif
+# endif
+#endif
diff -urN libc.orig/stdlib/strtold.c libc/stdlib/strtold.c
--- libc.orig/stdlib/strtold.c 2004-03-14 15:50:34.000000000 -0500
+++ libc/stdlib/strtold.c 2005-11-11 13:30:38.000000000 -0500
@@ -21,15 +21,43 @@
/* The actual implementation for all floating point sizes is in strtod.c.
These macros tell it to produce the `float' version, `strtof'. */
+#include <bits/wordsize.h>
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# include <wchar.h>
+# define NEW(x) NEW1(x)
+# define NEW1(x) __new_##x
+long double ____new_strtold_internal (const char *, char **, int);
+long double __new_strtold (const char *, char **);
+long double ____new_wcstold_internal (const wchar_t *, wchar_t **, int);
+long double __new_wcstold (const wchar_t *, wchar_t **);
+libc_hidden_proto (____new_strtold_internal)
+libc_hidden_proto (____new_wcstold_internal)
+#else
+# define NEW(x) x
+#endif
+
#define FLOAT long double
#define FLT LDBL
#ifdef USE_WIDE_CHAR
-# define STRTOF wcstold
+# define STRTOF NEW (wcstold)
# define STRTOF_L __wcstold_l
#else
-# define STRTOF strtold
+# define STRTOF NEW (strtold)
# define STRTOF_L __strtold_l
#endif
-
#include "strtod.c"
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# include <math_ldbl_opt.h>
+# ifdef USE_WIDE_CHAR
+long_double_symbol (libc, __new_wcstold, wcstold);
+long_double_symbol (libc, ____new_wcstold_internal, __wcstold_internal);
+libc_hidden_ver (____new_wcstold_internal, __wcstold_internal)
+# else
+long_double_symbol (libc, __new_strtold, strtold);
+long_double_symbol (libc, ____new_strtold_internal, __strtold_internal);
+libc_hidden_ver (____new_strtold_internal, __strtold_internal)
+# endif
+#endif
diff -urN libc.orig/sysdeps/generic/cabs.c libc/sysdeps/generic/cabs.c
--- libc.orig/sysdeps/generic/cabs.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/cabs.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,33 @@
+/* Return the complex absolute value of double complex value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+#include <math.h>
+
+double
+__cabs (double _Complex z)
+{
+ return __hypot (__real__ z, __imag__ z);
+}
+weak_alias (__cabs, cabs)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__cabs, __cabsl)
+weak_alias (__cabs, cabsl)
+#endif
diff -urN libc.orig/sysdeps/generic/cabsl.c libc/sysdeps/generic/cabsl.c
--- libc.orig/sysdeps/generic/cabsl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/cabsl.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,29 @@
+/* Return the complex absolute value of long double complex value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+#include <math.h>
+
+long double
+__cabsl (long double _Complex z)
+{
+ return __hypotl (__real__ z, __imag__ z);
+}
+weak_alias (__cabsl, cabsl)
diff -urN libc.orig/sysdeps/generic/carg.c libc/sysdeps/generic/carg.c
--- libc.orig/sysdeps/generic/carg.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/carg.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,33 @@
+/* Compute argument of complex double value.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+#include <math.h>
+
+double
+__carg (__complex__ double x)
+{
+ return __atan2 (__imag__ x, __real__ x);
+}
+weak_alias (__carg, carg)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__carg, __cargl)
+weak_alias (__carg, cargl)
+#endif
diff -urN libc.orig/sysdeps/generic/cargl.c libc/sysdeps/generic/cargl.c
--- libc.orig/sysdeps/generic/cargl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/cargl.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,29 @@
+/* Compute argument of complex long double value.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+#include <math.h>
+
+long double
+__cargl (__complex__ long double x)
+{
+ return __atan2l (__imag__ x, __real__ x);
+}
+weak_alias (__cargl, cargl)
diff -urN libc.orig/sysdeps/generic/cimag.c libc/sysdeps/generic/cimag.c
--- libc.orig/sysdeps/generic/cimag.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/cimag.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,32 @@
+/* Return imaginary part of complex double value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+
+double
+__cimag (double _Complex z)
+{
+ return __imag__ z;
+}
+weak_alias (__cimag, cimag)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__cimag, __cimagl)
+weak_alias (__cimag, cimagl)
+#endif
diff -urN libc.orig/sysdeps/generic/cimagl.c libc/sysdeps/generic/cimagl.c
--- libc.orig/sysdeps/generic/cimagl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/cimagl.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,28 @@
+/* Return imaginary part of complex long double value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+
+long double
+__cimagl (long double _Complex z)
+{
+ return __imag__ z;
+}
+weak_alias (__cimagl, cimagl)
diff -urN libc.orig/sysdeps/generic/conj.c libc/sysdeps/generic/conj.c
--- libc.orig/sysdeps/generic/conj.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/conj.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,32 @@
+/* Return complex conjugate of complex double value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+
+double _Complex
+__conj (double _Complex z)
+{
+ return ~z;
+}
+weak_alias (__conj, conj)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__conj, __conjl)
+weak_alias (__conj, conjl)
+#endif
diff -urN libc.orig/sysdeps/generic/conjl.c libc/sysdeps/generic/conjl.c
--- libc.orig/sysdeps/generic/conjl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/conjl.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,28 @@
+/* Return complex conjugate of complex long double value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+
+long double _Complex
+__conjl (long double _Complex z)
+{
+ return ~z;
+}
+weak_alias (__conjl, conjl)
diff -urN libc.orig/sysdeps/generic/creal.c libc/sysdeps/generic/creal.c
--- libc.orig/sysdeps/generic/creal.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/creal.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,32 @@
+/* Return real part of complex double value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+
+double
+__creal (double _Complex z)
+{
+ return __real__ z;
+}
+weak_alias (__creal, creal)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__creal, __creall)
+weak_alias (__creal, creall)
+#endif
diff -urN libc.orig/sysdeps/generic/creall.c libc/sysdeps/generic/creall.c
--- libc.orig/sysdeps/generic/creall.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/creall.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,28 @@
+/* Return real part of complex long double value.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+
+long double
+__creall (long double _Complex z)
+{
+ return __real__ z;
+}
+weak_alias (__creall, creall)
diff -urN libc.orig/sysdeps/generic/math_ldbl_opt.h libc/sysdeps/generic/math_ldbl_opt.h
--- libc.orig/sysdeps/generic/math_ldbl_opt.h 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/generic/math_ldbl_opt.h 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,2 @@
+#define LONG_DOUBLE_COMPAT(lib, introduced) 0
+#define long_double_symbol(lib, local, symbol)
diff -urN libc.orig/sysdeps/generic/w_j0l.c libc/sysdeps/generic/w_j0l.c
--- libc.orig/sysdeps/generic/w_j0l.c 2001-02-16 20:43:10.000000000 -0500
+++ libc/sysdeps/generic/w_j0l.c 2005-11-11 13:30:38.000000000 -0500
@@ -26,9 +26,9 @@
#include "math_private.h"
#ifdef __STDC__
- long double j0l(long double x) /* wrapper j0l */
+ long double __j0l(long double x) /* wrapper j0l */
#else
- long double j0l(x) /* wrapper j0 */
+ long double __j0l(x) /* wrapper j0 */
long double x;
#endif
{
@@ -43,11 +43,12 @@
return z;
#endif
}
+weak_alias (__j0l, j0l)
#ifdef __STDC__
- long double y0l(long double x) /* wrapper y0l */
+ long double __y0l(long double x) /* wrapper y0l */
#else
- long double y0l(x) /* wrapper y0 */
+ long double __y0l(x) /* wrapper y0 */
long double x;
#endif
{
@@ -71,3 +72,5 @@
return z;
#endif
}
+
+weak_alias (__y0l, y0l)
diff -urN libc.orig/sysdeps/generic/w_j1l.c libc/sysdeps/generic/w_j1l.c
--- libc.orig/sysdeps/generic/w_j1l.c 2001-02-16 20:43:24.000000000 -0500
+++ libc/sysdeps/generic/w_j1l.c 2005-11-11 13:30:38.000000000 -0500
@@ -26,9 +26,9 @@
#include "math_private.h"
#ifdef __STDC__
- long double j1l(long double x) /* wrapper j1l */
+ long double __j1l(long double x) /* wrapper j1l */
#else
- long double j1l(x) /* wrapper j1l */
+ long double __j1l(x) /* wrapper j1l */
long double x;
#endif
{
@@ -44,11 +44,12 @@
return z;
#endif
}
+weak_alias (__j1l, j1l)
#ifdef __STDC__
- long double y1l(long double x) /* wrapper y1l */
+ long double __y1l(long double x) /* wrapper y1l */
#else
- long double y1l(x) /* wrapper y1l */
+ long double __y1l(x) /* wrapper y1l */
long double x;
#endif
{
@@ -72,3 +73,4 @@
return z;
#endif
}
+weak_alias (__y1l, y1l)
diff -urN libc.orig/sysdeps/generic/w_jnl.c libc/sysdeps/generic/w_jnl.c
--- libc.orig/sysdeps/generic/w_jnl.c 2001-02-16 20:43:38.000000000 -0500
+++ libc/sysdeps/generic/w_jnl.c 2005-11-11 13:30:38.000000000 -0500
@@ -48,9 +48,9 @@
#include "math_private.h"
#ifdef __STDC__
- long double jnl(int n, long double x) /* wrapper jnl */
+ long double __jnl(int n, long double x) /* wrapper jnl */
#else
- long double jnl(n,x) /* wrapper jnl */
+ long double __jnl(n,x) /* wrapper jnl */
long double x; int n;
#endif
{
@@ -66,11 +66,12 @@
return z;
#endif
}
+weak_alias (__jnl, jnl)
#ifdef __STDC__
- long double ynl(int n, long double x) /* wrapper ynl */
+ long double __ynl(int n, long double x) /* wrapper ynl */
#else
- long double ynl(n,x) /* wrapper ynl */
+ long double __ynl(n,x) /* wrapper ynl */
long double x; int n;
#endif
{
@@ -94,3 +95,4 @@
return z;
#endif
}
+weak_alias (__ynl, ynl)
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_asinhl.c libc/sysdeps/ieee754/ldbl-64-128/s_asinhl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_asinhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_asinhl.c 2005-11-11 13:30:38.643620416 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_asinhl.c>
+long_double_symbol (libm, __asinhl, asinhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_atanl.c libc/sysdeps/ieee754/ldbl-64-128/s_atanl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_atanl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_atanl.c 2005-11-11 13:30:38.635621632 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_atanl.c>
+long_double_symbol (libm, __atanl, atanl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c libc/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c 2005-11-11 13:30:38.645620112 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_cbrtl.c>
+long_double_symbol (libm, __cbrtl, cbrtl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_ceill.c libc/sysdeps/ieee754/ldbl-64-128/s_ceill.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_ceill.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ceill.c 2005-11-11 13:30:38.631622240 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_ceill.c>
+long_double_symbol (libm, __ceill, ceill);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_copysignl.c libc/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_copysignl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_copysignl.c 2005-11-11 13:30:38.639621024 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_copysignl.c>
+#ifdef IS_IN_libm
+long_double_symbol (libm, __copysignl, copysignl);
+#else
+long_double_symbol (libc, __copysignl, copysignl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_cosl.c libc/sysdeps/ieee754/ldbl-64-128/s_cosl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_cosl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cosl.c 2005-11-11 13:30:38.634621784 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_cosl.c>
+long_double_symbol (libm, __cosl, cosl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_erfl.c libc/sysdeps/ieee754/ldbl-64-128/s_erfl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_erfl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_erfl.c 2005-11-11 13:30:38.633621936 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_erfl.c>
+long_double_symbol (libm, __erfl, erfl);
+long_double_symbol (libm, __erfcl, erfcl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_expm1l.c libc/sysdeps/ieee754/ldbl-64-128/s_expm1l.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_expm1l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_expm1l.c 2005-11-11 13:30:38.640620872 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_expm1l.c>
+long_double_symbol (libm, __expm1l, expm1l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_fabsl.c libc/sysdeps/ieee754/ldbl-64-128/s_fabsl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_fabsl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fabsl.c 2005-11-11 13:30:38.636621480 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_fabsl.c>
+long_double_symbol (libm, __fabsl, fabsl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_finitel.c libc/sysdeps/ieee754/ldbl-64-128/s_finitel.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_finitel.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_finitel.c 2005-11-11 13:30:38.635621632 -0500
@@ -0,0 +1,17 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#undef hidden_def
+#define hidden_def(x)
+#define __finitel(arg) ___finitel(arg)
+#include <sysdeps/ieee754/ldbl-128/s_finitel.c>
+#undef __finitel
+hidden_ver (___finitel, __finitel)
+_weak_alias (___finitel, ____finitel)
+#ifdef IS_IN_libm
+long_double_symbol (libm, ____finitel, finitel);
+long_double_symbol (libm, ___finitel, __finitel);
+#else
+long_double_symbol (libc, ____finitel, finitel);
+long_double_symbol (libc, ___finitel, __finitel);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_floorl.c libc/sysdeps/ieee754/ldbl-64-128/s_floorl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_floorl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_floorl.c 2005-11-11 13:30:38.632622088 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_floorl.c>
+long_double_symbol (libm, __floorl, floorl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_frexpl.c libc/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_frexpl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_frexpl.c 2005-11-11 13:30:38.637621328 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_frexpl.c>
+#ifdef IS_IN_libm
+long_double_symbol (libm, __frexpl, frexpl);
+#else
+long_double_symbol (libc, __frexpl, frexpl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_ilogbl.c libc/sysdeps/ieee754/ldbl-64-128/s_ilogbl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_ilogbl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ilogbl.c 2005-11-11 13:30:38.645620112 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_ilogbl.c>
+long_double_symbol (libm, __ilogbl, ilogbl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_isinfl.c libc/sysdeps/ieee754/ldbl-64-128/s_isinfl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_isinfl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_isinfl.c 2005-11-11 13:30:38.642620568 -0500
@@ -0,0 +1,16 @@
+#include <math_ldbl_opt.h>
+#ifndef IS_IN_libm
+# undef weak_alias
+# define weak_alias(n,a)
+# undef hidden_def
+# define hidden_def(x)
+# define __isinfl(arg) ___isinfl(arg)
+#endif
+#include <sysdeps/ieee754/ldbl-128/s_isinfl.c>
+#ifndef IS_IN_libm
+# undef __isinfl
+hidden_ver (___isinfl, __isinfl)
+_weak_alias (___isinfl, ____isinfl)
+long_double_symbol (libc, ____isinfl, isinfl);
+long_double_symbol (libc, ___isinfl, __isinfl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_isnanl.c libc/sysdeps/ieee754/ldbl-64-128/s_isnanl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_isnanl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_isnanl.c 2005-11-11 13:30:38.645620112 -0500
@@ -0,0 +1,16 @@
+#include <math_ldbl_opt.h>
+#ifndef IS_IN_libm
+# undef weak_alias
+# define weak_alias(n,a)
+# undef hidden_def
+# define hidden_def(x)
+# define __isnanl(arg) ___isnanl(arg)
+#endif
+#include <sysdeps/ieee754/ldbl-128/s_isnanl.c>
+#ifndef IS_IN_libm
+# undef __isnanl
+hidden_ver (___isnanl, __isnanl)
+_weak_alias (___isnanl, ____isnanl)
+long_double_symbol (libc, ____isnanl, isnanl);
+long_double_symbol (libc, ___isnanl, __isnanl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_llrintl.c libc/sysdeps/ieee754/ldbl-64-128/s_llrintl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_llrintl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_llrintl.c 2005-11-11 13:30:38.637621328 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_llrintl.c>
+long_double_symbol (libm, __llrintl, llrintl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_llroundl.c libc/sysdeps/ieee754/ldbl-64-128/s_llroundl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_llroundl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_llroundl.c 2005-11-11 13:30:38.640620872 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_llroundl.c>
+long_double_symbol (libm, __llroundl, llroundl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_log1pl.c libc/sysdeps/ieee754/ldbl-64-128/s_log1pl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_log1pl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_log1pl.c 2005-11-11 13:30:38.631622240 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_log1pl.c>
+long_double_symbol (libm, __log1pl, log1pl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_logbl.c libc/sysdeps/ieee754/ldbl-64-128/s_logbl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_logbl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_logbl.c 2005-11-11 13:30:38.632622088 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_logbl.c>
+long_double_symbol (libm, __logbl, logbl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_lrintl.c libc/sysdeps/ieee754/ldbl-64-128/s_lrintl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_lrintl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_lrintl.c 2005-11-11 13:30:38.639621024 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_lrintl.c>
+long_double_symbol (libm, __lrintl, lrintl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_lroundl.c libc/sysdeps/ieee754/ldbl-64-128/s_lroundl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_lroundl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_lroundl.c 2005-11-11 13:30:38.633621936 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_lroundl.c>
+long_double_symbol (libm, __lroundl, lroundl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_modfl.c libc/sysdeps/ieee754/ldbl-64-128/s_modfl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_modfl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_modfl.c 2005-11-11 13:30:38.638621176 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_modfl.c>
+#ifdef IS_IN_libm
+long_double_symbol (libm, __modfl, modfl);
+#else
+long_double_symbol (libc, __modfl, modfl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c libc/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c 2005-11-11 13:30:38.642620568 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nearbyintl.c>
+long_double_symbol (libm, __nearbyintl, nearbyintl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c libc/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c 2005-11-11 13:30:38.635621632 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nextafterl.c>
+long_double_symbol (libm, __nextafterl, nextafterl);
+long_double_symbol (libm, __nexttowardl, nexttowardl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c libc/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c 2005-11-11 13:30:38.633621936 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nexttoward.c>
+long_double_symbol (libm, __nexttoward, nexttoward);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c 2005-11-11 13:30:38.643620416 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nexttowardf.c>
+long_double_symbol (libm, __nexttowardf, nexttowardf);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c 2005-11-11 13:30:38.644620264 -0500
@@ -0,0 +1,77 @@
+/* Single precision version of nexttoward.c.
+ Conversion to IEEE single float by Jakub Jelinek, jj@ultra.linux.cz. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* IEEE functions
+ * __nexttowardfd(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * This is for machines which use different binary type for double and
+ * long double conditionally, y is long double equal to double.
+ * Special cases:
+ */
+
+#include <math_ldbl_opt.h>
+
+float __nldbl_nexttowardf(float x, double y);
+
+float __nldbl_nexttowardf(float x, double y)
+{
+ int32_t hx,hy,ix,iy;
+ u_int32_t ly;
+
+ GET_FLOAT_WORD(hx,x);
+ EXTRACT_WORDS(hy,ly,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffff; /* |y| */
+
+ if((ix>0x7f800000) || /* x is nan */
+ ((iy>=0x7ff00000)&&((iy-0x7ff00000)|ly)!=0)) /* y is nan */
+ return x+y;
+ if((double) x==y) return y; /* x=y, return y */
+ if(ix==0) { /* x == 0 */
+ float x2;
+ SET_FLOAT_WORD(x,(u_int32_t)(hy&0x80000000)|1);/* return +-minsub*/
+ x2 = x*x;
+ if(x2==x) return x2; else return x; /* raise underflow flag */
+ }
+ if(hx>=0) { /* x > 0 */
+ if(hy<0||(ix>>23)>(iy>>20)-0x380
+ || ((ix>>23)==(iy>>20)-0x380
+ && (ix&0x7fffff)>(((hy<<3)|(ly>>29))&0x7fffff))) /* x > y, x -= ulp */
+ hx -= 1;
+ else /* x < y, x += ulp */
+ hx += 1;
+ } else { /* x < 0 */
+ if(hy>=0||(ix>>23)>(iy>>20)-0x380
+ || ((ix>>23)==(iy>>20)-0x380
+ && (ix&0x7fffff)>(((hy<<3)|(ly>>29))&0x7fffff))) /* x < y, x -= ulp */
+ hx -= 1;
+ else /* x > y, x += ulp */
+ hx += 1;
+ }
+ hy = hx&0x7f800000;
+ if(hy>=0x7f800000) return x+x; /* overflow */
+ if(hy<0x00800000) { /* underflow */
+ float x2 = x*x;
+ if(x2!=x) { /* raise underflow flag */
+ SET_FLOAT_WORD(x2,hx);
+ return x2;
+ }
+ }
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __nldbl_nexttowardf, nexttowardf, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_remquol.c libc/sysdeps/ieee754/ldbl-64-128/s_remquol.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_remquol.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_remquol.c 2005-11-11 13:30:38.643620416 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_remquol.c>
+long_double_symbol (libm, __remquol, remquol);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_rintl.c libc/sysdeps/ieee754/ldbl-64-128/s_rintl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_rintl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_rintl.c 2005-11-11 13:30:38.639621024 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_rintl.c>
+long_double_symbol (libm, __rintl, rintl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_roundl.c libc/sysdeps/ieee754/ldbl-64-128/s_roundl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_roundl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_roundl.c 2005-11-11 13:30:38.636621480 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_roundl.c>
+long_double_symbol (libm, __roundl, roundl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c libc/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c 2005-11-11 13:30:38.640620872 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_scalblnl.c>
+#ifdef IS_IN_libm
+long_double_symbol (libm, __scalblnl, scalblnl);
+#else
+long_double_symbol (libc, __scalblnl, scalblnl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c libc/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c 2005-11-11 13:30:38.638621176 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_scalbnl.c>
+#ifdef IS_IN_libm
+long_double_symbol (libm, __scalbnl, scalbnl);
+#else
+long_double_symbol (libc, __scalbnl, scalbnl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_signbitl.c libc/sysdeps/ieee754/ldbl-64-128/s_signbitl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_signbitl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_signbitl.c 2005-11-11 13:30:38.636621480 -0500
@@ -0,0 +1,11 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#define __signbitl(arg) ___signbitl(arg)
+#include <sysdeps/ieee754/ldbl-128/s_signbitl.c>
+#undef __signbitl
+#ifdef IS_IN_libm
+long_double_symbol (libm, ___signbitl, __signbitl);
+#else
+long_double_symbol (libc, ___signbitl, __signbitl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_sincosl.c libc/sysdeps/ieee754/ldbl-64-128/s_sincosl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_sincosl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_sincosl.c 2005-11-11 13:30:38.637621328 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_sincosl.c>
+long_double_symbol (libm, __sincosl, sincosl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_sinl.c libc/sysdeps/ieee754/ldbl-64-128/s_sinl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_sinl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_sinl.c 2005-11-11 13:30:38.644620264 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_sinl.c>
+long_double_symbol (libm, __sinl, sinl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_tanhl.c libc/sysdeps/ieee754/ldbl-64-128/s_tanhl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_tanhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_tanhl.c 2005-11-11 13:30:38.632622088 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_tanhl.c>
+long_double_symbol (libm, __tanhl, tanhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_tanl.c libc/sysdeps/ieee754/ldbl-64-128/s_tanl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_tanl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_tanl.c 2005-11-11 13:30:38.638621176 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_tanl.c>
+long_double_symbol (libm, __tanl, tanl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/strtold_l.c libc/sysdeps/ieee754/ldbl-64-128/strtold_l.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/strtold_l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/strtold_l.c 2005-11-11 13:30:38.641620720 -0500
@@ -0,0 +1,63 @@
+/* Copyright (C) 1999, 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <math.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <xlocale.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+ These macros tell it to produce the `long double' version, `strtold'. */
+
+#define FLOAT long double
+#define FLT LDBL
+#ifdef USE_WIDE_CHAR
+extern long double ____new_wcstold_l (const wchar_t *, wchar_t **, __locale_t);
+# define STRTOF __new_wcstold_l
+# define __STRTOF ____new_wcstold_l
+# define ____STRTOF_INTERNAL ____wcstold_l_internal
+#else
+extern long double ____new_strtold_l (const char *, char **, __locale_t);
+# define STRTOF __new_strtold_l
+# define __STRTOF ____new_strtold_l
+# define ____STRTOF_INTERNAL ____strtold_l_internal
+#endif
+#define MPN2FLOAT __mpn_construct_long_double
+#define FLOAT_HUGE_VAL HUGE_VALL
+#define SET_MANTISSA(flt, mant) \
+ do { union ieee854_long_double u; \
+ u.d = (flt); \
+ u.ieee.mantissa0 = 0x8000; \
+ u.ieee.mantissa1 = 0; \
+ u.ieee.mantissa2 = ((mant) >> 32); \
+ u.ieee.mantissa3 = (mant) & 0xffffffff; \
+ (flt) = u.d; \
+ } while (0)
+
+#include <strtod_l.c>
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# include <math_ldbl_opt.h>
+# ifdef USE_WIDE_CHAR
+long_double_symbol (libc, __new_wcstold_l, wcstold_l);
+long_double_symbol (libc, ____new_wcstold_l, __wcstold_l);
+# else
+long_double_symbol (libc, __new_strtold_l, strtold_l);
+long_double_symbol (libc, ____new_strtold_l, __strtold_l);
+# endif
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/s_truncl.c libc/sysdeps/ieee754/ldbl-64-128/s_truncl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/s_truncl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/s_truncl.c 2005-11-11 13:30:38.634621784 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_truncl.c>
+long_double_symbol (libm, __truncl, truncl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-64-128/w_expl.c libc/sysdeps/ieee754/ldbl-64-128/w_expl.c
--- libc.orig/sysdeps/ieee754/ldbl-64-128/w_expl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-64-128/w_expl.c 2005-11-11 13:30:38.641620720 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/w_expl.c>
+long_double_symbol (libm, __expl, expl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-96/s_erfl.c libc/sysdeps/ieee754/ldbl-96/s_erfl.c
--- libc.orig/sysdeps/ieee754/ldbl-96/s_erfl.c 2002-08-27 22:30:22.000000000 -0400
+++ libc/sysdeps/ieee754/ldbl-96/s_erfl.c 2005-11-11 13:30:38.000000000 -0500
@@ -341,10 +341,6 @@
}
weak_alias (__erfl, erfl)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__erf, __erfl)
-weak_alias (__erf, erfl)
-#endif
#ifdef __STDC__
long double
__erfcl (long double x)
@@ -456,7 +452,3 @@
}
weak_alias (__erfcl, erfcl)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__erfc, __erfcl)
-weak_alias (__erfc, erfcl)
-#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-96/s_nexttoward.c libc/sysdeps/ieee754/ldbl-96/s_nexttoward.c
--- libc.orig/sysdeps/ieee754/ldbl-96/s_nexttoward.c 2003-12-07 16:21:10.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-96/s_nexttoward.c 2005-11-11 13:30:38.000000000 -0500
@@ -99,7 +99,3 @@
return x;
}
weak_alias (__nexttoward, nexttoward)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__nexttoward, __nexttowardl)
-weak_alias (__nexttoward, nexttowardl)
-#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/cabs.c libc/sysdeps/ieee754/ldbl-opt/cabs.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/cabs.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/cabs.c 2005-11-11 13:30:38.586629080 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/cabs.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cabs, cabsl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/cabsl.c libc/sysdeps/ieee754/ldbl-opt/cabsl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/cabsl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/cabsl.c 2005-11-11 13:30:38.571631360 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/cabsl.c>
+long_double_symbol (libm, __cabsl, cabsl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/carg.c libc/sysdeps/ieee754/ldbl-opt/carg.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/carg.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/carg.c 2005-11-11 13:30:38.569631664 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/carg.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __carg, cargl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/cargl.c libc/sysdeps/ieee754/ldbl-opt/cargl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/cargl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/cargl.c 2005-11-11 13:30:38.626623000 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/cargl.c>
+long_double_symbol (libm, __cargl, cargl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/cimag.c libc/sysdeps/ieee754/ldbl-opt/cimag.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/cimag.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/cimag.c 2005-11-11 13:30:38.622623608 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/cimag.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cimag, cimagl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/cimagl.c libc/sysdeps/ieee754/ldbl-opt/cimagl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/cimagl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/cimagl.c 2005-11-11 13:30:38.582629688 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/cimagl.c>
+long_double_symbol (libm, __cimagl, cimagl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/conj.c libc/sysdeps/ieee754/ldbl-opt/conj.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/conj.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/conj.c 2005-11-11 13:30:38.569631664 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/conj.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __conj, conjl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/conjl.c libc/sysdeps/ieee754/ldbl-opt/conjl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/conjl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/conjl.c 2005-11-11 13:30:38.587628928 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/conjl.c>
+long_double_symbol (libm, __conjl, conjl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/creal.c libc/sysdeps/ieee754/ldbl-opt/creal.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/creal.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/creal.c 2005-11-11 13:30:38.608625736 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/creal.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __creal, creall, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/creall.c libc/sysdeps/ieee754/ldbl-opt/creall.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/creall.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/creall.c 2005-11-11 13:30:38.590628472 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/creall.c>
+long_double_symbol (libm, __creall, creall);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/libio-compat.c libc/sysdeps/ieee754/ldbl-opt/libio-compat.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/libio-compat.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/libio-compat.c 2005-11-11 13:30:38.602626648 -0500
@@ -0,0 +1,434 @@
+/* *printf* family compatibility routines for IEEE double as long double
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@cygnus.com>, 2004.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+#include <wchar.h>
+
+/* Compatibility with IEEE double as long double.
+ Real long double is used by default for most programs, so
+ we don't need to split this into one file per function for the
+ sake of statically linked programs. */
+
+int
+attribute_compat_text_section
+__nldbl___asprintf (char **string_ptr, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vasprintf (string_ptr, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+weak_alias (__nldbl___asprintf, __nldbl_asprintf)
+
+int
+attribute_compat_text_section
+__nldbl_dprintf (int d, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vdprintf (d, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_fprintf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vfprintf (stream, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+weak_alias (__nldbl_fprintf, __nldbl__IO_fprintf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_fwprintf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vfwprintf (stream, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_printf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vfprintf (stdout, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (__nldbl_printf, __nldbl__IO_printf)
+
+int
+attribute_compat_text_section
+__nldbl_sprintf (char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vsprintf (s, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (__nldbl_sprintf, __nldbl__IO_sprintf)
+
+int
+attribute_compat_text_section
+__nldbl_vfprintf (FILE *s, const char *fmt, va_list ap)
+{
+ return ___vfprintf (s, fmt, ap, 1);
+}
+strong_alias (__nldbl_vfprintf, __nldbl__IO_vfprintf)
+
+int
+attribute_compat_text_section
+__nldbl__IO_vsprintf (char *string, const char *fmt, va_list ap)
+{
+ return ___vsprintf (string, fmt, ap, 1);
+}
+weak_alias (__nldbl__IO_vsprintf, __nldbl_vsprintf)
+
+int
+attribute_compat_text_section
+__nldbl_obstack_vprintf (struct obstack *obstack, const char *fmt,
+ va_list ap)
+{
+ return ___obstack_vprintf (obstack, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_obstack_printf (struct obstack *obstack, const char *fmt, ...)
+{
+ int result;
+ va_list ap;
+ va_start (ap, fmt);
+ result = ___obstack_vprintf (obstack, fmt, ap, 1);
+ va_end (ap);
+ return result;
+}
+
+int
+attribute_compat_text_section weak_function
+__nldbl_snprintf (char *s, size_t maxlen, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vsnprintf (s, maxlen, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_swprintf (wchar_t *s, size_t n, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vswprintf (s, n, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vasprintf (char **result_ptr, const char *fmt, va_list ap)
+{
+ return ___vasprintf (result_ptr, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_vdprintf (int d, const char *fmt, va_list arg)
+{
+ return ___vdprintf (d, fmt, arg, 1);
+}
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vfwprintf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return ___vfwprintf (s, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_vprintf (const char *fmt, va_list ap)
+{
+ return ___vfprintf (stdout, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_vsnprintf (char *string, size_t maxlen, const char *fmt,
+ va_list ap)
+{
+ return ___vsnprintf (string, maxlen, fmt, ap, 1);
+}
+weak_alias (__nldbl_vsnprintf, __nldbl___vsnprintf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vswprintf (wchar_t *string, size_t maxlen, const wchar_t *fmt,
+ va_list ap)
+{
+ return ___vswprintf (string, maxlen, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_vwprintf (const wchar_t *fmt, va_list ap)
+{
+ return ___vfwprintf (stdout, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_wprintf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vfwprintf (stdout, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl__IO_vfscanf (FILE *s, const char *fmt, _IO_va_list ap,
+ int *errp)
+{
+ return __IO_vfscanf (s, fmt, ap, errp, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl___vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+ return __IO_vfscanf (s, fmt, ap, NULL, 1);
+}
+weak_alias (__nldbl___vfscanf, __nldbl_vfscanf)
+
+int
+attribute_compat_text_section
+__nldbl_sscanf (const char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vsscanf (s, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (__nldbl_sscanf, __nldbl__IO_sscanf)
+
+int
+attribute_compat_text_section
+__nldbl___vsscanf (const char *string, const char *fmt, va_list ap)
+{
+ return ___vsscanf (string, fmt, ap, 1);
+}
+weak_alias (__nldbl___vsscanf, __nldbl_vsscanf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vscanf (const char *fmt, va_list ap)
+{
+ return __IO_vfscanf (stdin, fmt, ap, NULL, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_fscanf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __IO_vfscanf (stream, fmt, arg, NULL, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_scanf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __IO_vfscanf (stdin, fmt, arg, NULL, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return __IO_vfwscanf (s, fmt, ap, NULL, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = ___vswscanf (s, fmt, arg, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_vswscanf (const wchar_t *string, const wchar_t *fmt, va_list ap)
+{
+ return ___vswscanf (string, fmt, ap, 1);
+}
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vwscanf (const wchar_t *fmt, va_list ap)
+{
+ return __IO_vfwscanf (stdin, fmt, ap, NULL, 1);
+}
+
+int
+attribute_compat_text_section
+__nldbl_fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __IO_vfwscanf (stream, fmt, arg, NULL, 1);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_wscanf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __IO_vfwscanf (stdin, fmt, arg, NULL, 1);
+ va_end (arg);
+
+ return done;
+}
+
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __nldbl__IO_printf, _IO_printf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_sprintf, _IO_sprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_vfprintf, _IO_vfprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_vsprintf, _IO_vsprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_dprintf, dprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_fprintf, fprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_printf, printf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_sprintf, sprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vfprintf, vfprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vprintf, vprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_fprintf, _IO_fprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___vsnprintf, __vsnprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_asprintf, asprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_obstack_printf, obstack_printf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_obstack_vprintf, obstack_vprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_snprintf, snprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vasprintf, vasprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vdprintf, vdprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsnprintf, vsnprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsprintf, vsprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_sscanf, _IO_sscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_vfscanf, _IO_vfscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___vfscanf, __vfscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___vsscanf, __vsscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_fscanf, fscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_scanf, scanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_sscanf, sscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vfscanf, vfscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vscanf, vscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsscanf, vsscanf, GLIBC_2_0);
+#endif
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __nldbl___asprintf, __asprintf, GLIBC_2_1);
+#endif
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_2)
+compat_symbol (libc, __nldbl_swprintf, swprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vwprintf, vwprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_wprintf, wprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_fwprintf, fwprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vfwprintf, vfwprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vswprintf, vswprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_fwscanf, fwscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_swscanf, swscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vfwscanf, vfwscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vswscanf, vswscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vwscanf, vwscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_wscanf, wscanf, GLIBC_2_2);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/Makefile libc/sysdeps/ieee754/ldbl-opt/Makefile
--- libc.orig/sysdeps/ieee754/ldbl-opt/Makefile 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/Makefile 2005-11-11 13:30:38.573631056 -0500
@@ -0,0 +1,50 @@
+ifeq ($(subdir),misc)
+misc-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+endif
+
+ifeq ($(subdir),libio)
+libio-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+routines += libio-compat
+endif
+
+ifeq ($(subdir),stdio-common)
+stdio-common-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+endif
+
+ifeq ($(subdir),stdlib)
+stdlib-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+endif
+
+ifeq ($(subdir),wcsmbs)
+wcsmbs-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+endif
+
+ifeq ($(subdir),math)
+libm-routines += s_nexttowardfd
+math-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+
+extra-libs += libnldbl
+libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
+ obstack_printf obstack_vprintf printf scanf snprintf \
+ sprintf sscanf swprintf swscanf vasprintf vdprintf vfprintf \
+ vfscanf vfwprintf vfwscanf vprintf vscanf vsnprintf \
+ vsprintf vsscanf vswprintf vswscanf vwprintf vwscanf \
+ wprintf wscanf printf_fp printf_size \
+ strtold strtold_l strtoldint wcstold wcstold_l wcstoldint \
+ qecvt qfcvt qgcvt qecvt_r qfcvt_r \
+ isinf isnan finite signbit scalb log2 lgamma_r ceil \
+ significand acos asin atan cos sin tan cosh sinh \
+ tanh acosh asinh atanh exp log log10 exp10 pow10 expm1 \
+ log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \
+ lgamma tgamma gamma rint nearbyint round trunc \
+ copysign fdim fmax fmin nextafter pow hypot fmod drem \
+ remainder ldexp scalbn frexp modf scalbln fma nan sincos \
+ jn yn ilogb remquo lrint lround llrint llround nexttowardf \
+ nexttoward conj cacos cacosh casin catan catanh ccos ccosh \
+ casinh cexp clog cproj csin csinh csqrt ctan ctanh cpow \
+ cabs carg cimag creal clog10
+libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
+libnldbl-inhibit-o = .os .ob .og .op .o
+libnldbl-extra-object-suffixes += .oS
+
+endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h libc/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h
--- libc.orig/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h 2005-11-11 13:30:38.577630448 -0500
@@ -0,0 +1,23 @@
+#include <math.h>
+#include <math/math_private.h>
+#include <shlib-compat.h>
+#ifdef LONG_DOUBLE_OPTIONAL
+# define LONG_DOUBLE_COMPAT(lib, introduced) \
+ SHLIB_COMPAT(lib, introduced, LONG_DOUBLE_OPTIONAL)
+#else
+# define LONG_DOUBLE_COMPAT(lib, introduced) 0
+#endif
+#define long_double_symbol(lib, local, symbol) \
+ long_double_symbol_1 (lib, local, symbol, LONG_DOUBLE_OPTIONAL)
+#if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
+# define long_double_symbol_1(lib, local, symbol, version) \
+ versioned_symbol (lib, local, symbol, version)
+#elif defined HAVE_WEAK_SYMBOLS
+/* Note that weak_alias cannot be used - it is defined to nothing
+ in most of the files. */
+# define long_double_symbol_1(lib, local, symbol, version) \
+ _weak_alias (local, symbol)
+#else
+# define long_double_symbol_1(lib, local, symbol, version) \
+ strong_alias (local, symbol)
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-acos.c libc/sysdeps/ieee754/ldbl-opt/nldbl-acos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-acos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-acos.c 2005-11-11 13:30:38.693612816 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+acosl (double x)
+{
+ return acos (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c 2005-11-11 13:30:38.700611752 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+acoshl (double x)
+{
+ return acosh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-asin.c libc/sysdeps/ieee754/ldbl-opt/nldbl-asin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-asin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-asin.c 2005-11-11 13:30:38.693612816 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+asinl (double x)
+{
+ return asin (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c 2005-11-11 13:30:38.700611752 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+asinhl (double x)
+{
+ return asinh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c 2005-11-11 13:30:38.615624672 -0500
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__asprintf (char **string_ptr, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vasprintf (string_ptr, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (__asprintf) asprintf attribute_hidden;
+weak_alias (__asprintf, asprintf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c libc/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c 2005-11-11 13:30:38.694612664 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+atan2l (double x, double y)
+{
+ return atan2 (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-atan.c libc/sysdeps/ieee754/ldbl-opt/nldbl-atan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-atan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-atan.c 2005-11-11 13:30:38.694612664 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+atanl (double x)
+{
+ return atan (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c 2005-11-11 13:30:38.701611600 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+atanhl (double x)
+{
+ return atanh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c 2005-11-11 13:30:38.729607344 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+cabsl (double _Complex x)
+{
+ return cabs (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c 2005-11-11 13:30:38.722608408 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cacosl (double _Complex x)
+{
+ return cacos (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c 2005-11-11 13:30:38.723608256 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cacoshl (double _Complex x)
+{
+ return cacosh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-carg.c libc/sysdeps/ieee754/ldbl-opt/nldbl-carg.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-carg.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-carg.c 2005-11-11 13:30:38.729607344 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+cargl (double _Complex x)
+{
+ return carg (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-casin.c libc/sysdeps/ieee754/ldbl-opt/nldbl-casin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-casin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-casin.c 2005-11-11 13:30:38.723608256 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+casinl (double _Complex x)
+{
+ return casin (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c 2005-11-11 13:30:38.725607952 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+casinhl (double _Complex x)
+{
+ return casinh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-catan.c libc/sysdeps/ieee754/ldbl-opt/nldbl-catan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-catan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-catan.c 2005-11-11 13:30:38.723608256 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+catanl (double _Complex x)
+{
+ return catan (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c 2005-11-11 13:30:38.724608104 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+catanhl (double _Complex x)
+{
+ return catanh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c 2005-11-11 13:30:38.705610992 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+cbrtl (double x)
+{
+ return cbrt (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c 2005-11-11 13:30:38.724608104 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ccosl (double _Complex x)
+{
+ return ccos (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c 2005-11-11 13:30:38.725607952 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ccoshl (double _Complex x)
+{
+ return ccosh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c 2005-11-11 13:30:38.732606888 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+ceill (double x)
+{
+ return ceil (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c 2005-11-11 13:30:38.725607952 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cexpl (double _Complex x)
+{
+ return cexp (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c 2005-11-11 13:30:38.730607192 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+cimagl (double _Complex x)
+{
+ return cimag (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c libc/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c 2005-11-11 13:30:38.730607192 -0500
@@ -0,0 +1,11 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+clog10l (double _Complex x)
+{
+ return clog10 (x);
+}
+extern __typeof (clog10l) __clog10l attribute_hidden;
+weak_alias (clog10l, __clog10l)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-clog.c libc/sysdeps/ieee754/ldbl-opt/nldbl-clog.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-clog.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-clog.c 2005-11-11 13:30:38.726607800 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+clogl (double _Complex x)
+{
+ return clog (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-compat.h libc/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-compat.h 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-compat.h 2005-11-11 13:30:38.616624520 -0500
@@ -0,0 +1,51 @@
+/* Prototypes for compatibility double == long double entry points.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@cygnus.com>, 2004.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef __NLDBL_COMPAT_H
+#define __NLDBL_COMPAT_H 1
+
+/* Avoid long double prototypes. */
+#define __NO_LONG_DOUBLE_MATH 1
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+#include <printf.h>
+#include <wchar.h>
+#include <math.h>
+
+extern __typeof (_IO_vfscanf) __nldbl__IO_vfscanf;
+extern __typeof (vfwscanf) __nldbl_vfwscanf;
+extern __typeof (obstack_vprintf) __nldbl_obstack_vprintf;
+extern __typeof (vasprintf) __nldbl_vasprintf;
+extern __typeof (vasprintf) __nldbl_vasprintf;
+extern __typeof (vdprintf) __nldbl_vdprintf;
+extern __typeof (vdprintf) __nldbl_vdprintf;
+extern __typeof (vfprintf) __nldbl_vfprintf;
+extern __typeof (vfprintf) __nldbl_vfprintf;
+extern __typeof (vfwprintf) __nldbl_vfwprintf;
+extern __typeof (vsnprintf) __nldbl_vsnprintf;
+extern __typeof (vsprintf) __nldbl_vsprintf;
+extern __typeof (vsscanf) __nldbl_vsscanf;
+extern __typeof (vswprintf) __nldbl_vswprintf;
+extern __typeof (vswscanf) __nldbl_vswscanf;
+extern __typeof (__printf_fp) __nldbl___printf_fp;
+extern __typeof (printf_size) __nldbl_printf_size;
+
+#endif /* __NLDBL_COMPAT_H */
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-conj.c libc/sysdeps/ieee754/ldbl-opt/nldbl-conj.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-conj.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-conj.c 2005-11-11 13:30:38.722608408 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+conjl (double _Complex x)
+{
+ return conj (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c libc/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c 2005-11-11 13:30:38.711610080 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+copysignl (double x, double y)
+{
+ return copysign (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cos.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cos.c 2005-11-11 13:30:38.695612512 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+cosl (double x)
+{
+ return cos (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c 2005-11-11 13:30:38.696612360 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+coshl (double x)
+{
+ return cosh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c 2005-11-11 13:30:38.728607496 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cpowl (double _Complex x, double _Complex y)
+{
+ return cpow (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c libc/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c 2005-11-11 13:30:38.726607800 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cprojl (double _Complex x)
+{
+ return cproj (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-creal.c libc/sysdeps/ieee754/ldbl-opt/nldbl-creal.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-creal.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-creal.c 2005-11-11 13:30:38.730607192 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+creall (double _Complex x)
+{
+ return creal (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-csin.c libc/sysdeps/ieee754/ldbl-opt/nldbl-csin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-csin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-csin.c 2005-11-11 13:30:38.727607648 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+csinl (double _Complex x)
+{
+ return csin (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c 2005-11-11 13:30:38.727607648 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+csinhl (double _Complex x)
+{
+ return csinh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c libc/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c 2005-11-11 13:30:38.727607648 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+csqrtl (double _Complex x)
+{
+ return csqrt (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c 2005-11-11 13:30:38.728607496 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ctanl (double _Complex x)
+{
+ return ctan (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c 2005-11-11 13:30:38.728607496 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ctanhl (double _Complex x)
+{
+ return ctanh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c 2005-11-11 13:30:38.619624064 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+dprintf (int d, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vdprintf (d, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-drem.c libc/sysdeps/ieee754/ldbl-opt/nldbl-drem.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-drem.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-drem.c 2005-11-11 13:30:38.714609624 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+dreml (double x, double y)
+{
+ return drem (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-erf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-erf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-erf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-erf.c 2005-11-11 13:30:38.708610536 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+erfl (double x)
+{
+ return erf (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c libc/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c 2005-11-11 13:30:38.708610536 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+erfcl (double x)
+{
+ return erfc (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c libc/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c 2005-11-11 13:30:38.703611296 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp10l (double x)
+{
+ return exp10 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c libc/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c 2005-11-11 13:30:38.705610992 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp2l (double x)
+{
+ return exp2 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-exp.c libc/sysdeps/ieee754/ldbl-opt/nldbl-exp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-exp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-exp.c 2005-11-11 13:30:38.702611448 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+expl (double x)
+{
+ return exp (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c libc/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c 2005-11-11 13:30:38.704611144 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+expm1l (double x)
+{
+ return expm1 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c 2005-11-11 13:30:38.706610840 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fabsl (double x)
+{
+ return fabs (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c 2005-11-11 13:30:38.712609928 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fdiml (double x, double y)
+{
+ return fdim (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-finite.c libc/sysdeps/ieee754/ldbl-opt/nldbl-finite.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-finite.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-finite.c 2005-11-11 13:30:38.692612968 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__finitel (double x)
+{
+ return __finite (x);
+}
+extern __typeof (__finitel) finitel attribute_hidden;
+weak_alias (__finitel, finitel)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-floor.c libc/sysdeps/ieee754/ldbl-opt/nldbl-floor.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-floor.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-floor.c 2005-11-11 13:30:38.706610840 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+floorl (double x)
+{
+ return floor (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fma.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fma.c 2005-11-11 13:30:38.717609168 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmal (double x, double y, double z)
+{
+ return fma (x, y, z);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c 2005-11-11 13:30:38.712609928 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaxl (double x, double y)
+{
+ return fmax (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c 2005-11-11 13:30:38.712609928 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminl (double x, double y)
+{
+ return fmin (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c 2005-11-11 13:30:38.714609624 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmodl (double x, double y)
+{
+ return fmod (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c 2005-11-11 13:30:38.568631816 -0500
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+fprintf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfprintf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (fprintf) _IO_fprintf attribute_hidden;
+weak_alias (fprintf, _IO_fprintf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c libc/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c 2005-11-11 13:30:38.716609320 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+frexpl (double x, int *exponent)
+{
+ return frexp (x, exponent);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c 2005-11-11 13:30:38.580629992 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+fscanf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl__IO_vfscanf (stream, fmt, arg, NULL);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c 2005-11-11 13:30:38.590628472 -0500
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+fwprintf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwprintf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c 2005-11-11 13:30:38.569631664 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c libc/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c 2005-11-11 13:30:38.710610232 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+gammal (double x)
+{
+ return gamma (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c libc/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c 2005-11-11 13:30:38.714609624 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+hypotl (double x, double y)
+{
+ return hypot (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c 2005-11-11 13:30:38.719608864 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+ilogbl (double x)
+{
+ return ilogb (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c 2005-11-11 13:30:38.576630600 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+_IO_vfscanf (FILE *s, const char *fmt, _IO_va_list ap, int *errp)
+{
+ return __nldbl__IO_vfscanf (s, fmt, ap, errp);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c 2005-11-11 13:30:38.692612968 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isinfl (double x)
+{
+ return __isinf (x);
+}
+extern __typeof (__isinfl) isinfl attribute_hidden;
+weak_alias (__isinfl, isinfl)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c libc/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c 2005-11-11 13:30:38.692612968 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isnanl (double x)
+{
+ return __isnan (x);
+}
+extern __typeof (__isnanl) isnanl attribute_hidden;
+weak_alias (__isnanl, isnanl)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-j0.c libc/sysdeps/ieee754/ldbl-opt/nldbl-j0.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-j0.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-j0.c 2005-11-11 13:30:38.707610688 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+j0l (double x)
+{
+ return j0 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-j1.c libc/sysdeps/ieee754/ldbl-opt/nldbl-j1.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-j1.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-j1.c 2005-11-11 13:30:38.707610688 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+j1l (double x)
+{
+ return j1 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-jn.c libc/sysdeps/ieee754/ldbl-opt/nldbl-jn.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-jn.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-jn.c 2005-11-11 13:30:38.718609016 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+jnl (int n, double x)
+{
+ return jn (n, x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c libc/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c 2005-11-11 13:30:38.715609472 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+ldexpl (double x, int exponent)
+{
+ return ldexp (x, exponent);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c libc/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c 2005-11-11 13:30:38.709610384 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+lgammal (double x)
+{
+ return lgamma (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c libc/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c 2005-11-11 13:30:38.732606888 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+lgammal_r (double x, int *signgamp)
+{
+ return lgamma_r (x, signgamp);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c libc/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c 2005-11-11 13:30:38.720608712 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long long int
+attribute_hidden
+llrintl (double x)
+{
+ return llrint (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-llround.c libc/sysdeps/ieee754/ldbl-opt/nldbl-llround.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-llround.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-llround.c 2005-11-11 13:30:38.721608560 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long long int
+attribute_hidden
+llroundl (double x)
+{
+ return llround (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log10.c libc/sysdeps/ieee754/ldbl-opt/nldbl-log10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-log10.c 2005-11-11 13:30:38.703611296 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log10l (double x)
+{
+ return log10 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c libc/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c 2005-11-11 13:30:38.704611144 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log1pl (double x)
+{
+ return log1p (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log2.c libc/sysdeps/ieee754/ldbl-opt/nldbl-log2.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log2.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-log2.c 2005-11-11 13:30:38.732606888 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log2l (double x)
+{
+ return log2 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-logb.c libc/sysdeps/ieee754/ldbl-opt/nldbl-logb.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-logb.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-logb.c 2005-11-11 13:30:38.704611144 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+logbl (double x)
+{
+ return logb (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log.c libc/sysdeps/ieee754/ldbl-opt/nldbl-log.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-log.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-log.c 2005-11-11 13:30:38.702611448 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+logl (double x)
+{
+ return log (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c libc/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c 2005-11-11 13:30:38.720608712 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long int
+attribute_hidden
+lrintl (double x)
+{
+ return lrint (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lround.c libc/sysdeps/ieee754/ldbl-opt/nldbl-lround.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-lround.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-lround.c 2005-11-11 13:30:38.720608712 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long int
+attribute_hidden
+lroundl (double x)
+{
+ return lround (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-modf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-modf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-modf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-modf.c 2005-11-11 13:30:38.716609320 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+modfl (double x, double *iptr)
+{
+ return modf (x, iptr);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nan.c libc/sysdeps/ieee754/ldbl-opt/nldbl-nan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-nan.c 2005-11-11 13:30:38.717609168 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+nanl (const char *tag)
+{
+ return nan (tag);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c libc/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c 2005-11-11 13:30:38.710610232 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+nearbyintl (double x)
+{
+ return nearbyint (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c libc/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c 2005-11-11 13:30:38.713609776 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+nextafterl (double x, double y)
+{
+ return nextafter (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c libc/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c 2005-11-11 13:30:38.722608408 -0500
@@ -0,0 +1,14 @@
+#define nexttoward nexttoward_XXX
+#define nexttowardl nexttowardl_XXX
+#include "nldbl-compat.h"
+#undef nexttoward
+#undef nexttowardl
+
+double
+attribute_hidden
+nexttoward (double x, double y)
+{
+ return nextafter (x, y);
+}
+extern __typeof (nexttoward) nexttowardl attribute_hidden;
+strong_alias (nexttoward, nexttowardl)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c 2005-11-11 13:30:38.721608560 -0500
@@ -0,0 +1,12 @@
+#define nexttowardf nexttowardf_XXX
+#include "nldbl-compat.h"
+#undef nexttowardf
+
+extern float __nldbl_nexttowardf (float x, double y);
+
+float
+attribute_hidden
+nexttowardf (float x, double y)
+{
+ return __nldbl_nexttowardf (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c 2005-11-11 13:30:38.570631512 -0500
@@ -0,0 +1,13 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+obstack_printf (struct obstack *obstack, const char *fmt, ...)
+{
+ int result;
+ va_list ap;
+ va_start (ap, fmt);
+ result = __nldbl_obstack_vprintf (obstack, fmt, ap);
+ va_end (ap);
+ return result;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c 2005-11-11 13:30:38.565632272 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+obstack_vprintf (struct obstack *obstack, const char *fmt, va_list ap)
+{
+ return __nldbl_obstack_vprintf (obstack, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c libc/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c 2005-11-11 13:30:38.703611296 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+pow10l (double x)
+{
+ return pow10 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-pow.c libc/sysdeps/ieee754/ldbl-opt/nldbl-pow.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-pow.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-pow.c 2005-11-11 13:30:38.713609776 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+powl (double x, double y)
+{
+ return pow (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-printf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-printf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-printf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-printf.c 2005-11-11 13:30:38.578630296 -0500
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+printf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfprintf (stdout, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (printf) _IO_printf attribute_hidden;
+strong_alias (printf, _IO_printf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c libc/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c 2005-11-11 13:30:38.696612360 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__printf_fp (FILE *fp, const struct printf_info *info,
+ const void *const *args)
+{
+ return __nldbl___printf_fp (fp, info, args);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c libc/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c 2005-11-11 13:30:38.696612360 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+printf_size (FILE *__restrict fp, const struct printf_info *info,
+ const void *const *__restrict args)
+{
+ return __nldbl_printf_size (fp, info, args);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c libc/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c 2005-11-11 13:30:38.699611904 -0500
@@ -0,0 +1,10 @@
+#define qecvt qecvt_XXX
+#include "nldbl-compat.h"
+#undef qecvt
+
+char *
+attribute_hidden
+qecvt (double val, int ndigit, int *__restrict decpt, int *__restrict sign)
+{
+ return ecvt (val, ndigit, decpt, sign);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c libc/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c 2005-11-11 13:30:38.701611600 -0500
@@ -0,0 +1,11 @@
+#define qecvt_r qecvt_r_XXX
+#include "nldbl-compat.h"
+#undef qecvt_r
+
+int
+attribute_hidden
+qecvt_r (double val, int ndigit, int *__restrict decpt, int *__restrict sign,
+ char *__restrict buf, size_t len)
+{
+ return ecvt_r (val, ndigit, decpt, sign, buf, len);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c libc/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c 2005-11-11 13:30:38.699611904 -0500
@@ -0,0 +1,10 @@
+#define qfcvt qfcvt_XXX
+#include "nldbl-compat.h"
+#undef qfcvt
+
+char *
+attribute_hidden
+qfcvt (double val, int ndigit, int *__restrict decpt, int *__restrict sign)
+{
+ return fcvt (val, ndigit, decpt, sign);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c libc/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c 2005-11-11 13:30:38.701611600 -0500
@@ -0,0 +1,11 @@
+#define qfcvt_r qfcvt_r_XXX
+#include "nldbl-compat.h"
+#undef qfcvt_r
+
+int
+attribute_hidden
+qfcvt_r (double val, int ndigit, int *__restrict decpt, int *__restrict sign,
+ char *__restrict buf, size_t len)
+{
+ return fcvt_r (val, ndigit, decpt, sign, buf, len);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c libc/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c 2005-11-11 13:30:38.699611904 -0500
@@ -0,0 +1,10 @@
+#define qgcvt qgcvt_XXX
+#include "nldbl-compat.h"
+#undef qgcvt
+
+char *
+attribute_hidden
+qgcvt (double val, int ndigit, char *buf)
+{
+ return gcvt (val, ndigit, buf);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c libc/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c 2005-11-11 13:30:38.715609472 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+remainderl (double x, double y)
+{
+ return remainder (x, y);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c libc/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c 2005-11-11 13:30:38.719608864 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+remquol (double x, double y, int *quo)
+{
+ return remquo (x, y, quo);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-rint.c libc/sysdeps/ieee754/ldbl-opt/nldbl-rint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-rint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-rint.c 2005-11-11 13:30:38.710610232 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+rintl (double x)
+{
+ return rint (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-round.c libc/sysdeps/ieee754/ldbl-opt/nldbl-round.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-round.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-round.c 2005-11-11 13:30:38.711610080 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+roundl (double x)
+{
+ return round (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c libc/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c 2005-11-11 13:30:38.731607040 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+scalbl (double x, double n)
+{
+ return scalb (x, n);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c libc/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c 2005-11-11 13:30:38.717609168 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+scalblnl (double x, long int n)
+{
+ return scalbln (x, n);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c libc/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c 2005-11-11 13:30:38.715609472 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+scalbnl (double x, int n)
+{
+ return scalbn (x, n);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c 2005-11-11 13:30:38.620623912 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+scanf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl__IO_vfscanf (stdin, fmt, arg, NULL);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c libc/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c 2005-11-11 13:30:38.731607040 -0500
@@ -0,0 +1,10 @@
+#define __signbitl __signbitl_XXX
+#include "nldbl-compat.h"
+#undef __signbitl
+
+int
+attribute_hidden
+__signbitl (double x)
+{
+ return __signbit (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-significand.c libc/sysdeps/ieee754/ldbl-opt/nldbl-significand.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-significand.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-significand.c 2005-11-11 13:30:38.693612816 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+significandl (double x)
+{
+ return significand (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sin.c libc/sysdeps/ieee754/ldbl-opt/nldbl-sin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-sin.c 2005-11-11 13:30:38.695612512 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+sinl (double x)
+{
+ return sin (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c libc/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c 2005-11-11 13:30:38.718609016 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+void
+attribute_hidden
+sincosl (double x, double *sinx, double *cosx)
+{
+ sincos (x, sinx, cosx);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c 2005-11-11 13:30:38.697612208 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+sinhl (double x)
+{
+ return sinh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c 2005-11-11 13:30:38.597627408 -0500
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+snprintf (char *s, size_t maxlen, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsnprintf (s, maxlen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c 2005-11-11 13:30:38.594627864 -0500
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+sprintf (char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsprintf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (sprintf) _IO_sprintf attribute_hidden;
+strong_alias (sprintf, _IO_sprintf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c libc/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c 2005-11-11 13:30:38.705610992 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+sqrtl (double x)
+{
+ return sqrt (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c 2005-11-11 13:30:38.613624976 -0500
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+sscanf (const char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (sscanf) _IO_sscanf attribute_hidden;
+strong_alias (sscanf, _IO_sscanf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c libc/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c 2005-11-11 13:30:38.697612208 -0500
@@ -0,0 +1,10 @@
+#define strtold strtold_XXX
+#include "nldbl-compat.h"
+#undef strtold
+
+double
+attribute_hidden
+strtold (const char *nptr, char **endptr)
+{
+ return strtod (nptr, endptr);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c libc/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c 2005-11-11 13:30:38.698612056 -0500
@@ -0,0 +1,10 @@
+#define __strtold_internal __strtold_internal_XXX
+#include "nldbl-compat.h"
+#undef __strtold_internal
+
+double
+attribute_hidden
+__strtold_internal (const char *nptr, char **endptr, int group)
+{
+ return __strtod_internal (nptr, endptr, group);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c libc/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c 2005-11-11 13:30:38.698612056 -0500
@@ -0,0 +1,20 @@
+#define strtold_l strtold_l_XXX
+#define __strtold_l __strtold_l_XXX
+#define __strtod_l __strtod_l_XXX
+#include "nldbl-compat.h"
+#undef strtold_l
+#undef __strtold_l
+#undef __strtod_l
+
+extern double
+__strtod_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ __locale_t __loc);
+
+double
+attribute_hidden
+__strtold_l (const char *nptr, char **endptr, __locale_t loc)
+{
+ return __strtod_l (nptr, endptr, loc);
+}
+extern __typeof (__strtold_l) strtold_l attribute_hidden;
+weak_alias (__strtold_l, strtold_l)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c 2005-11-11 13:30:38.588628776 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+swprintf (wchar_t *s, size_t n, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vswprintf (s, n, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c 2005-11-11 13:30:38.581629840 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vswscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-tan.c libc/sysdeps/ieee754/ldbl-opt/nldbl-tan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-tan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-tan.c 2005-11-11 13:30:38.695612512 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+tanl (double x)
+{
+ return tan (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c libc/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c 2005-11-11 13:30:38.698612056 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+tanhl (double x)
+{
+ return tanh (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c libc/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c 2005-11-11 13:30:38.709610384 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+tgammal (double x)
+{
+ return tgamma (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c libc/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c 2005-11-11 13:30:38.711610080 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+truncl (double x)
+{
+ return trunc (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c 2005-11-11 13:30:38.603626496 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vasprintf (char **result_ptr, const char *fmt, va_list ap)
+{
+ return __nldbl_vasprintf (result_ptr, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c 2005-11-11 13:30:38.612625128 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vdprintf (int d, const char *fmt, va_list arg)
+{
+ return __nldbl_vdprintf (d, fmt, arg);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c 2005-11-11 13:30:38.576630600 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vfprintf (FILE *s, const char *fmt, va_list ap)
+{
+ return __nldbl_vfprintf (s, fmt, ap);
+}
+extern __typeof (vfprintf) _IO_vfprintf attribute_hidden;
+strong_alias (vfprintf, _IO_vfprintf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c 2005-11-11 13:30:38.624623304 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+ return __nldbl__IO_vfscanf (s, fmt, ap, NULL);
+}
+extern __typeof (__vfscanf) vfscanf attribute_hidden;
+weak_alias (__vfscanf, vfscanf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c 2005-11-11 13:30:38.617624368 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vfwprintf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwprintf (s, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c 2005-11-11 13:30:38.606626040 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwscanf (s, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c 2005-11-11 13:30:38.566632120 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vprintf (const char *fmt, va_list ap)
+{
+ return __nldbl_vfprintf (stdout, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c 2005-11-11 13:30:38.627622848 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vscanf (const char *fmt, va_list ap)
+{
+ return __nldbl__IO_vfscanf (stdin, fmt, ap, NULL);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c 2005-11-11 13:30:38.598627256 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vsnprintf (char *string, size_t maxlen, const char *fmt, va_list ap)
+{
+ return __nldbl_vsnprintf (string, maxlen, fmt, ap);
+}
+extern __typeof (vsnprintf) __vsnprintf attribute_hidden;
+weak_alias (vsnprintf, __vsnprintf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c 2005-11-11 13:30:38.611625280 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+_IO_vsprintf (char *string, const char *fmt, va_list ap)
+{
+ return __nldbl_vsprintf (string, fmt, ap);
+}
+extern __typeof (_IO_vsprintf) vsprintf attribute_hidden;
+weak_alias (_IO_vsprintf, vsprintf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c 2005-11-11 13:30:38.597627408 -0500
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vsscanf (const char *string, const char *fmt, va_list ap)
+{
+ return __nldbl_vsscanf (string, fmt, ap);
+}
+extern __typeof (__vsscanf) vsscanf attribute_hidden;
+weak_alias (__vsscanf, vsscanf)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c 2005-11-11 13:30:38.611625280 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vswprintf (wchar_t *string, size_t maxlen, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vswprintf (string, maxlen, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c 2005-11-11 13:30:38.627622848 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vswscanf (const wchar_t *string, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vswscanf (string, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c 2005-11-11 13:30:38.609625584 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vwprintf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwprintf (stdout, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c 2005-11-11 13:30:38.583629536 -0500
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vwscanf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwscanf (stdin, fmt, ap);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c libc/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c 2005-11-11 13:30:38.691613120 -0500
@@ -0,0 +1,10 @@
+#define wcstold wcstold_XXX
+#include "nldbl-compat.h"
+#undef wcstold
+
+double
+attribute_hidden
+wcstold (const wchar_t *nptr, wchar_t **endptr)
+{
+ return wcstod (nptr, endptr);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c libc/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c 2005-11-11 13:30:38.691613120 -0500
@@ -0,0 +1,10 @@
+#define __wcstold_internal __wcstold_internal_XXX
+#include "nldbl-compat.h"
+#undef __wcstold_internal
+
+double
+attribute_hidden
+__wcstold_internal (const wchar_t *nptr, wchar_t **endptr, int group)
+{
+ return __wcstod_internal (nptr, endptr, group);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c libc/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c 2005-11-11 13:30:38.691613120 -0500
@@ -0,0 +1,14 @@
+#define wcstold_l wcstold_l_XXX
+#define __wcstold_l __wcstold_l_XXX
+#include "nldbl-compat.h"
+#undef wcstold_l
+#undef __wcstold_l
+
+double
+attribute_hidden
+__wcstold_l (const wchar_t *nptr, wchar_t **endptr, __locale_t loc)
+{
+ return __wcstod_l (nptr, endptr, loc);
+}
+extern __typeof (__wcstold_l) wcstold_l attribute_hidden;
+weak_alias (__wcstold_l, wcstold_l)
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c 2005-11-11 13:30:38.591628320 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+wprintf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwprintf (stdout, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c libc/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c 2005-11-11 13:30:38.609625584 -0500
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+wscanf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-y0.c libc/sysdeps/ieee754/ldbl-opt/nldbl-y0.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-y0.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-y0.c 2005-11-11 13:30:38.707610688 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+y0l (double x)
+{
+ return y0 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-y1.c libc/sysdeps/ieee754/ldbl-opt/nldbl-y1.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-y1.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-y1.c 2005-11-11 13:30:38.708610536 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+y1l (double x)
+{
+ return y1 (x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-yn.c libc/sysdeps/ieee754/ldbl-opt/nldbl-yn.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/nldbl-yn.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/nldbl-yn.c 2005-11-11 13:30:38.718609016 -0500
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+ynl (int n, double x)
+{
+ return yn (n, x);
+}
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_asinh.c libc/sysdeps/ieee754/ldbl-opt/s_asinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_asinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_asinh.c 2005-11-11 13:30:38.573631056 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_asinh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __asinh, asinhl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_atan.c libc/sysdeps/ieee754/ldbl-opt/s_atan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_atan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_atan.c 2005-11-11 13:30:38.579630144 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_atan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, atan, atanl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cacos.c libc/sysdeps/ieee754/ldbl-opt/s_cacos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cacos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cacos.c 2005-11-11 13:30:38.614624824 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_cacos.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cacos, cacosl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cacosh.c libc/sysdeps/ieee754/ldbl-opt/s_cacosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cacosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cacosh.c 2005-11-11 13:30:38.612625128 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_cacosh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cacosh, cacoshl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cacoshl.c libc/sysdeps/ieee754/ldbl-opt/s_cacoshl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cacoshl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cacoshl.c 2005-11-11 13:30:38.625623152 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_cacoshl.c>
+long_double_symbol (libm, __cacoshl, cacoshl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cacosl.c libc/sysdeps/ieee754/ldbl-opt/s_cacosl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cacosl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cacosl.c 2005-11-11 13:30:38.599627104 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_cacosl.c>
+long_double_symbol (libm, __cacosl, cacosl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_casin.c libc/sysdeps/ieee754/ldbl-opt/s_casin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_casin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_casin.c 2005-11-11 13:30:38.591628320 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_casin.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __casin, casinl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_casinh.c libc/sysdeps/ieee754/ldbl-opt/s_casinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_casinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_casinh.c 2005-11-11 13:30:38.566632120 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_casinh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __casinh, casinhl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_casinhl.c libc/sysdeps/ieee754/ldbl-opt/s_casinhl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_casinhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_casinhl.c 2005-11-11 13:30:38.570631512 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_casinhl.c>
+long_double_symbol (libm, __casinhl, casinhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_casinl.c libc/sysdeps/ieee754/ldbl-opt/s_casinl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_casinl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_casinl.c 2005-11-11 13:30:38.605626192 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_casinl.c>
+long_double_symbol (libm, __casinl, casinl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_catan.c libc/sysdeps/ieee754/ldbl-opt/s_catan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_catan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_catan.c 2005-11-11 13:30:38.596627560 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_catan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __catan, catanl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_catanh.c libc/sysdeps/ieee754/ldbl-opt/s_catanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_catanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_catanh.c 2005-11-11 13:30:38.589628624 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_catanh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __catanh, catanhl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_catanhl.c libc/sysdeps/ieee754/ldbl-opt/s_catanhl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_catanhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_catanhl.c 2005-11-11 13:30:38.594627864 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_catanhl.c>
+long_double_symbol (libm, __catanhl, catanhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_catanl.c libc/sysdeps/ieee754/ldbl-opt/s_catanl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_catanl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_catanl.c 2005-11-11 13:30:38.575630752 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_catanl.c>
+long_double_symbol (libm, __catanl, catanl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cbrt.c libc/sysdeps/ieee754/ldbl-opt/s_cbrt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cbrt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cbrt.c 2005-11-11 13:30:38.587628928 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_cbrt.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __cbrt, cbrtl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ccos.c libc/sysdeps/ieee754/ldbl-opt/s_ccos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ccos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ccos.c 2005-11-11 13:30:38.574630904 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_ccos.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __ccos, ccosl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ccosh.c libc/sysdeps/ieee754/ldbl-opt/s_ccosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ccosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ccosh.c 2005-11-11 13:30:38.570631512 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_ccosh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __ccosh, ccoshl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ccoshl.c libc/sysdeps/ieee754/ldbl-opt/s_ccoshl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ccoshl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ccoshl.c 2005-11-11 13:30:38.595627712 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_ccoshl.c>
+long_double_symbol (libm, __ccoshl, ccoshl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ccosl.c libc/sysdeps/ieee754/ldbl-opt/s_ccosl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ccosl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ccosl.c 2005-11-11 13:30:38.595627712 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_ccosl.c>
+long_double_symbol (libm, __ccosl, ccosl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ceil.c libc/sysdeps/ieee754/ldbl-opt/s_ceil.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ceil.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ceil.c 2005-11-11 13:30:38.617624368 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_ceil.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cexp.c libc/sysdeps/ieee754/ldbl-opt/s_cexp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cexp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cexp.c 2005-11-11 13:30:38.572631208 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_cexp.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cexp, cexpl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cexpl.c libc/sysdeps/ieee754/ldbl-opt/s_cexpl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cexpl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cexpl.c 2005-11-11 13:30:38.565632272 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_cexpl.c>
+long_double_symbol (libm, __cexpl, cexpl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_clog10.c libc/sysdeps/ieee754/ldbl-opt/s_clog10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_clog10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_clog10.c 2005-11-11 13:30:38.571631360 -0500
@@ -0,0 +1,7 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_clog10.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __clog10, __clog10l, GLIBC_2_1);
+compat_symbol (libm, clog10, clog10l, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_clog10l.c libc/sysdeps/ieee754/ldbl-opt/s_clog10l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_clog10l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_clog10l.c 2005-11-11 13:30:38.577630448 -0500
@@ -0,0 +1,10 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#define __clog10l __clog10l_internal
+#include <sysdeps/generic/s_clog10l.c>
+#undef __clog10l
+strong_alias (__clog10l_internal, __clog10l__internal)
+long_double_symbol (libm, __clog10l_internal, __clog10l);
+long_double_symbol (libm, __clog10l__internal, clog10l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_clog.c libc/sysdeps/ieee754/ldbl-opt/s_clog.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_clog.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_clog.c 2005-11-11 13:30:38.583629536 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_clog.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __clog, clogl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_clogl.c libc/sysdeps/ieee754/ldbl-opt/s_clogl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_clogl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_clogl.c 2005-11-11 13:30:38.596627560 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_clogl.c>
+long_double_symbol (libm, __clogl, clogl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_copysign.c libc/sysdeps/ieee754/ldbl-opt/s_copysign.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_copysign.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_copysign.c 2005-11-11 13:30:38.604626344 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_copysign.c>
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cpow.c libc/sysdeps/ieee754/ldbl-opt/s_cpow.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cpow.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cpow.c 2005-11-11 13:30:38.564632424 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_cpow.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cpow, cpowl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cpowl.c libc/sysdeps/ieee754/ldbl-opt/s_cpowl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cpowl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cpowl.c 2005-11-11 13:30:38.602626648 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_cpowl.c>
+long_double_symbol (libm, __cpowl, cpowl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cproj.c libc/sysdeps/ieee754/ldbl-opt/s_cproj.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cproj.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cproj.c 2005-11-11 13:30:38.618624216 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_cproj.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __cproj, cprojl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_cprojl.c libc/sysdeps/ieee754/ldbl-opt/s_cprojl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_cprojl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_cprojl.c 2005-11-11 13:30:38.623623456 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_cprojl.c>
+long_double_symbol (libm, __cprojl, cprojl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_csin.c libc/sysdeps/ieee754/ldbl-opt/s_csin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_csin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_csin.c 2005-11-11 13:30:38.584629384 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_csin.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __csin, csinl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_csinh.c libc/sysdeps/ieee754/ldbl-opt/s_csinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_csinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_csinh.c 2005-11-11 13:30:38.625623152 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_csinh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __csinh, csinhl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_csinhl.c libc/sysdeps/ieee754/ldbl-opt/s_csinhl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_csinhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_csinhl.c 2005-11-11 13:30:38.625623152 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_csinhl.c>
+long_double_symbol (libm, __csinhl, csinhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_csinl.c libc/sysdeps/ieee754/ldbl-opt/s_csinl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_csinl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_csinl.c 2005-11-11 13:30:38.630622392 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_csinl.c>
+long_double_symbol (libm, __csinl, csinl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_csqrt.c libc/sysdeps/ieee754/ldbl-opt/s_csqrt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_csqrt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_csqrt.c 2005-11-11 13:30:38.597627408 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_csqrt.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __csqrt, csqrtl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_csqrtl.c libc/sysdeps/ieee754/ldbl-opt/s_csqrtl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_csqrtl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_csqrtl.c 2005-11-11 13:30:38.580629992 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_csqrtl.c>
+long_double_symbol (libm, __csqrtl, csqrtl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ctan.c libc/sysdeps/ieee754/ldbl-opt/s_ctan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ctan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ctan.c 2005-11-11 13:30:38.585629232 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_ctan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __ctan, ctanl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ctanh.c libc/sysdeps/ieee754/ldbl-opt/s_ctanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ctanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ctanh.c 2005-11-11 13:30:38.581629840 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_ctanh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __ctanh, ctanhl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ctanhl.c libc/sysdeps/ieee754/ldbl-opt/s_ctanhl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ctanhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ctanhl.c 2005-11-11 13:30:38.603626496 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_ctanhl.c>
+long_double_symbol (libm, __ctanhl, ctanhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ctanl.c libc/sysdeps/ieee754/ldbl-opt/s_ctanl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ctanl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ctanl.c 2005-11-11 13:30:38.631622240 -0500
@@ -0,0 +1,6 @@
+#include <complex.h>
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_ctanl.c>
+long_double_symbol (libm, __ctanl, ctanl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_erf.c libc/sysdeps/ieee754/ldbl-opt/s_erf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_erf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_erf.c 2005-11-11 13:30:38.604626344 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_erf.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __erf, erfl, GLIBC_2_0);
+compat_symbol (libm, __erfc, erfcl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_expm1.c libc/sysdeps/ieee754/ldbl-opt/s_expm1.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_expm1.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_expm1.c 2005-11-11 13:30:38.592628168 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_expm1.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __expm1, expm1l, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fabs.c libc/sysdeps/ieee754/ldbl-opt/s_fabs.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fabs.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fabs.c 2005-11-11 13:30:38.593628016 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_fabs.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __fabs, fabsl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fdim.c libc/sysdeps/ieee754/ldbl-opt/s_fdim.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fdim.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fdim.c 2005-11-11 13:30:38.590628472 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_fdim.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fdiml.c libc/sysdeps/ieee754/ldbl-opt/s_fdiml.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fdiml.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fdiml.c 2005-11-11 13:30:38.599627104 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_fdiml.c>
+long_double_symbol (libm, __fdiml, fdiml);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_finite.c libc/sysdeps/ieee754/ldbl-opt/s_finite.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_finite.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_finite.c 2005-11-11 13:30:38.566632120 -0500
@@ -0,0 +1,18 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_finite.c>
+weak_alias (__finite, ___finite)
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
+# endif
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, ___finite, finitel, GLIBC_2_0);
+# endif
+#else
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_0);
+# endif
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, ___finite, finitel, GLIBC_2_0);
+# endif
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_floor.c libc/sysdeps/ieee754/ldbl-opt/s_floor.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_floor.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_floor.c 2005-11-11 13:30:38.575630752 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_floor.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __floor, floorl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fma.c libc/sysdeps/ieee754/ldbl-opt/s_fma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fma.c 2005-11-11 13:30:38.608625736 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_fma.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __fma, fmal, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fmal.c libc/sysdeps/ieee754/ldbl-opt/s_fmal.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fmal.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fmal.c 2005-11-11 13:30:38.618624216 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_fmal.c>
+long_double_symbol (libm, __fmal, fmal);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fmax.c libc/sysdeps/ieee754/ldbl-opt/s_fmax.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fmax.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fmax.c 2005-11-11 13:30:38.591628320 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_fmax.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __fmax, fmaxl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fmaxl.c libc/sysdeps/ieee754/ldbl-opt/s_fmaxl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fmaxl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fmaxl.c 2005-11-11 13:30:38.621623760 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_fmaxl.c>
+long_double_symbol (libm, __fmaxl, fmaxl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fmin.c libc/sysdeps/ieee754/ldbl-opt/s_fmin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fmin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fmin.c 2005-11-11 13:30:38.574630904 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_fmin.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __fmin, fminl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_fminl.c libc/sysdeps/ieee754/ldbl-opt/s_fminl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_fminl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_fminl.c 2005-11-11 13:30:38.583629536 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_fminl.c>
+long_double_symbol (libm, __fminl, fminl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_frexp.c libc/sysdeps/ieee754/ldbl-opt/s_frexp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_frexp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_frexp.c 2005-11-11 13:30:38.584629384 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_frexp.c>
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __frexp, frexpl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __frexp, frexpl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ilogb.c libc/sysdeps/ieee754/ldbl-opt/s_ilogb.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ilogb.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ilogb.c 2005-11-11 13:30:38.610625432 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_ilogb.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ilogb, ilogbl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_isinf.c libc/sysdeps/ieee754/ldbl-opt/s_isinf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_isinf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_isinf.c 2005-11-11 13:30:38.587628928 -0500
@@ -0,0 +1,8 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_isinf.c>
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+# endif
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_isnan.c libc/sysdeps/ieee754/ldbl-opt/s_isnan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_isnan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_isnan.c 2005-11-11 13:30:38.629622544 -0500
@@ -0,0 +1,8 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_isnan.c>
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+# endif
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ldexp.c libc/sysdeps/ieee754/ldbl-opt/s_ldexp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ldexp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ldexp.c 2005-11-11 13:30:38.596627560 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_ldexp.c>
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ldexp, ldexpl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __ldexp, ldexpl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_ldexpl.c libc/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_ldexpl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_ldexpl.c 2005-11-11 13:30:38.574630904 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_ldexpl.c>
+#ifdef IS_IN_libm
+long_double_symbol (libm, __ldexpl, ldexpl);
+#else
+long_double_symbol (libc, __ldexpl, ldexpl);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_llrint.c libc/sysdeps/ieee754/ldbl-opt/s_llrint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_llrint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_llrint.c 2005-11-11 13:30:38.629622544 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_llrint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_llround.c libc/sysdeps/ieee754/ldbl-opt/s_llround.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_llround.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_llround.c 2005-11-11 13:30:38.626623000 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_llround.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_log1p.c libc/sysdeps/ieee754/ldbl-opt/s_log1p.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_log1p.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_log1p.c 2005-11-11 13:30:38.603626496 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_log1p.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __log1p, log1pl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_logb.c libc/sysdeps/ieee754/ldbl-opt/s_logb.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_logb.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_logb.c 2005-11-11 13:30:38.622623608 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_logb.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __logb, logbl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_lrint.c libc/sysdeps/ieee754/ldbl-opt/s_lrint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_lrint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_lrint.c 2005-11-11 13:30:38.573631056 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_lrint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_lround.c libc/sysdeps/ieee754/ldbl-opt/s_lround.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_lround.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_lround.c 2005-11-11 13:30:38.564632424 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_lround.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_modf.c libc/sysdeps/ieee754/ldbl-opt/s_modf.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_modf.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_modf.c 2005-11-11 13:30:38.629622544 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_modf.c>
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __modf, modfl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_nan.c libc/sysdeps/ieee754/ldbl-opt/s_nan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_nan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_nan.c 2005-11-11 13:30:38.619624064 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_nan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __nan, nanl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_nanl.c libc/sysdeps/ieee754/ldbl-opt/s_nanl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_nanl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_nanl.c 2005-11-11 13:30:38.618624216 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_nanl.c>
+long_double_symbol (libm, __nanl, nanl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_nearbyint.c libc/sysdeps/ieee754/ldbl-opt/s_nearbyint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_nearbyint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_nearbyint.c 2005-11-11 13:30:38.608625736 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_nearbyint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_nextafter.c libc/sysdeps/ieee754/ldbl-opt/s_nextafter.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_nextafter.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_nextafter.c 2005-11-11 13:30:38.602626648 -0500
@@ -0,0 +1,12 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_nextafter.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __nextafter, nextafterl, GLIBC_2_0);
+#endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+strong_alias (__nextafter, __nexttowardd)
+strong_alias (__nextafter, __nexttowardld)
+#undef nexttoward
+compat_symbol (libm, __nexttowardd, nexttoward, GLIBC_2_1);
+compat_symbol (libm, __nexttowardld, nexttowardl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_remquo.c libc/sysdeps/ieee754/ldbl-opt/s_remquo.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_remquo.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_remquo.c 2005-11-11 13:30:38.614624824 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_remquo.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __remquo, remquol, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_rint.c libc/sysdeps/ieee754/ldbl-opt/s_rint.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_rint.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_rint.c 2005-11-11 13:30:38.582629688 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_rint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __rint, rintl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_round.c libc/sysdeps/ieee754/ldbl-opt/s_round.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_round.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_round.c 2005-11-11 13:30:38.607625888 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_round.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __round, roundl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_scalbln.c libc/sysdeps/ieee754/ldbl-opt/s_scalbln.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_scalbln.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_scalbln.c 2005-11-11 13:30:38.592628168 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_scalbln.c>
+#ifdef IS_IN_libm
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __scalbln, scalblnl, GLIBC_2_1);
+#endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __scalbln, scalblnl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_scalbn.c libc/sysdeps/ieee754/ldbl-opt/s_scalbn.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_scalbn.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_scalbn.c 2005-11-11 13:30:38.567631968 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_scalbn.c>
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __scalbn, scalbnl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __scalbn, scalbnl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_signbit.c libc/sysdeps/ieee754/ldbl-opt/s_signbit.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_signbit.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_signbit.c 2005-11-11 13:30:38.621623760 -0500
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_signbit.c>
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __signbit, __signbitl, GLIBC_2_1);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __signbit, __signbitl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_significand.c libc/sysdeps/ieee754/ldbl-opt/s_significand.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_significand.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_significand.c 2005-11-11 13:30:38.580629992 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/s_significand.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __significand, significandl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_significandl.c libc/sysdeps/ieee754/ldbl-opt/s_significandl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_significandl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_significandl.c 2005-11-11 13:30:38.610625432 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_significandl.c>
+long_double_symbol (libm, __significandl, significandl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_sin.c libc/sysdeps/ieee754/ldbl-opt/s_sin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_sin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_sin.c 2005-11-11 13:30:38.577630448 -0500
@@ -0,0 +1,10 @@
+/* dbl-64/s_sin.c uses NAN and sincos identifiers internally. */
+#define sincos sincos_disable
+#include <math_ldbl_opt.h>
+#undef NAN
+#undef sincos
+#include <sysdeps/ieee754/dbl-64/s_sin.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sin, sinl, GLIBC_2_0);
+compat_symbol (libm, __cos, cosl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_sincos.c libc/sysdeps/ieee754/ldbl-opt/s_sincos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_sincos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_sincos.c 2005-11-11 13:30:38.630622392 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_sincos.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __sincos, sincosl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_tan.c libc/sysdeps/ieee754/ldbl-opt/s_tan.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_tan.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_tan.c 2005-11-11 13:30:38.584629384 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_tan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, tan, tanl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_tanh.c libc/sysdeps/ieee754/ldbl-opt/s_tanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_tanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_tanh.c 2005-11-11 13:30:38.579630144 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_tanh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __tanh, tanhl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/s_trunc.c libc/sysdeps/ieee754/ldbl-opt/s_trunc.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/s_trunc.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/s_trunc.c 2005-11-11 13:30:38.567631968 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_trunc.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_acos.c libc/sysdeps/ieee754/ldbl-opt/w_acos.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_acos.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_acos.c 2005-11-11 13:30:38.630622392 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_acos.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __acos, acosl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_acosh.c libc/sysdeps/ieee754/ldbl-opt/w_acosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_acosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_acosh.c 2005-11-11 13:30:38.611625280 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_acosh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __acosh, acoshl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_acoshl.c libc/sysdeps/ieee754/ldbl-opt/w_acoshl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_acoshl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_acoshl.c 2005-11-11 13:30:38.605626192 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_acoshl.c>
+long_double_symbol (libm, __acoshl, acoshl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_acosl.c libc/sysdeps/ieee754/ldbl-opt/w_acosl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_acosl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_acosl.c 2005-11-11 13:30:38.585629232 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_acosl.c>
+long_double_symbol (libm, __acosl, acosl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_asin.c libc/sysdeps/ieee754/ldbl-opt/w_asin.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_asin.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_asin.c 2005-11-11 13:30:38.624623304 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_asin.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __asin, asinl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_asinl.c libc/sysdeps/ieee754/ldbl-opt/w_asinl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_asinl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_asinl.c 2005-11-11 13:30:38.607625888 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_asinl.c>
+long_double_symbol (libm, __asinl, asinl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_atan2.c libc/sysdeps/ieee754/ldbl-opt/w_atan2.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_atan2.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_atan2.c 2005-11-11 13:30:38.606626040 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_atan2.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __atan2, atan2l, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_atan2l.c libc/sysdeps/ieee754/ldbl-opt/w_atan2l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_atan2l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_atan2l.c 2005-11-11 13:30:38.623623456 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_atan2l.c>
+long_double_symbol (libm, __atan2l, atan2l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_atanh.c libc/sysdeps/ieee754/ldbl-opt/w_atanh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_atanh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_atanh.c 2005-11-11 13:30:38.607625888 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_atanh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __atanh, atanhl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_atanhl.c libc/sysdeps/ieee754/ldbl-opt/w_atanhl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_atanhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_atanhl.c 2005-11-11 13:30:38.575630752 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_atanhl.c>
+long_double_symbol (libm, __atanhl, atanhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_cosh.c libc/sysdeps/ieee754/ldbl-opt/w_cosh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_cosh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_cosh.c 2005-11-11 13:30:38.599627104 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_cosh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __cosh, coshl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_coshl.c libc/sysdeps/ieee754/ldbl-opt/w_coshl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_coshl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_coshl.c 2005-11-11 13:30:38.598627256 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_coshl.c>
+long_double_symbol (libm, __coshl, coshl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_drem.c libc/sysdeps/ieee754/ldbl-opt/w_drem.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_drem.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_drem.c 2005-11-11 13:30:38.578630296 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_drem.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __drem, dreml, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_dreml.c libc/sysdeps/ieee754/ldbl-opt/w_dreml.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_dreml.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_dreml.c 2005-11-11 13:30:38.592628168 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_dreml.c>
+long_double_symbol (libm, __dreml, dreml);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_exp10.c libc/sysdeps/ieee754/ldbl-opt/w_exp10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_exp10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_exp10.c 2005-11-11 13:30:38.589628624 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_exp10.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __exp10, exp10l, GLIBC_2_1);
+compat_symbol (libm, __pow10, pow10l, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_exp10l.c libc/sysdeps/ieee754/ldbl-opt/w_exp10l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_exp10l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_exp10l.c 2005-11-11 13:30:38.572631208 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_exp10l.c>
+long_double_symbol (libm, __exp10l, exp10l);
+long_double_symbol (libm, __pow10l, pow10l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_exp2.c libc/sysdeps/ieee754/ldbl-opt/w_exp2.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_exp2.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_exp2.c 2005-11-11 13:30:38.628622696 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_exp2.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __exp2, exp2l, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_exp2l.c libc/sysdeps/ieee754/ldbl-opt/w_exp2l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_exp2l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_exp2l.c 2005-11-11 13:30:38.616624520 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_exp2l.c>
+long_double_symbol (libm, __exp2l, exp2l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_exp.c libc/sysdeps/ieee754/ldbl-opt/w_exp.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_exp.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_exp.c 2005-11-11 13:30:38.615624672 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/w_exp.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __exp, expl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_fmod.c libc/sysdeps/ieee754/ldbl-opt/w_fmod.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_fmod.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_fmod.c 2005-11-11 13:30:38.593628016 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_fmod.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __fmod, fmodl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_fmodl.c libc/sysdeps/ieee754/ldbl-opt/w_fmodl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_fmodl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_fmodl.c 2005-11-11 13:30:38.604626344 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_fmodl.c>
+long_double_symbol (libm, __fmodl, fmodl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_hypot.c libc/sysdeps/ieee754/ldbl-opt/w_hypot.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_hypot.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_hypot.c 2005-11-11 13:30:38.617624368 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_hypot.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __hypot, hypotl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_hypotl.c libc/sysdeps/ieee754/ldbl-opt/w_hypotl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_hypotl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_hypotl.c 2005-11-11 13:30:38.571631360 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_hypotl.c>
+long_double_symbol (libm, __hypotl, hypotl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_j0.c libc/sysdeps/ieee754/ldbl-opt/w_j0.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_j0.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_j0.c 2005-11-11 13:30:38.578630296 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_j0.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, j0, j0l, GLIBC_2_0);
+compat_symbol (libm, y0, y0l, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_j0l.c libc/sysdeps/ieee754/ldbl-opt/w_j0l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_j0l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_j0l.c 2005-11-11 13:30:38.613624976 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_j0l.c>
+long_double_symbol (libm, __j0l, j0l);
+long_double_symbol (libm, __y0l, y0l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_j1.c libc/sysdeps/ieee754/ldbl-opt/w_j1.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_j1.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_j1.c 2005-11-11 13:30:38.565632272 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_j1.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, j1, j1l, GLIBC_2_0);
+compat_symbol (libm, y1, y1l, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_j1l.c libc/sysdeps/ieee754/ldbl-opt/w_j1l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_j1l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_j1l.c 2005-11-11 13:30:38.586629080 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_j1l.c>
+long_double_symbol (libm, __j1l, j1l);
+long_double_symbol (libm, __y1l, y1l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_jn.c libc/sysdeps/ieee754/ldbl-opt/w_jn.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_jn.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_jn.c 2005-11-11 13:30:38.588628776 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_jn.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, jn, jnl, GLIBC_2_0);
+compat_symbol (libm, yn, ynl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_jnl.c libc/sysdeps/ieee754/ldbl-opt/w_jnl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_jnl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_jnl.c 2005-11-11 13:30:38.622623608 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_jnl.c>
+long_double_symbol (libm, __jnl, jnl);
+long_double_symbol (libm, __ynl, ynl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_lgamma.c libc/sysdeps/ieee754/ldbl-opt/w_lgamma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_lgamma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_lgamma.c 2005-11-11 13:30:38.568631816 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_lgamma.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __lgamma, lgammal, GLIBC_2_0);
+compat_symbol (libm, __gamma, gammal, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_lgammal.c libc/sysdeps/ieee754/ldbl-opt/w_lgammal.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_lgammal.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_lgammal.c 2005-11-11 13:30:38.627622848 -0500
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_lgammal.c>
+long_double_symbol (libm, __lgammal, lgammal);
+long_double_symbol (libm, __gammal, gammal);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_lgammal_r.c libc/sysdeps/ieee754/ldbl-opt/w_lgammal_r.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_lgammal_r.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_lgammal_r.c 2005-11-11 13:30:38.615624672 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_lgammal_r.c>
+long_double_symbol (libm, __lgammal_r, lgammal_r);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_lgamma_r.c libc/sysdeps/ieee754/ldbl-opt/w_lgamma_r.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_lgamma_r.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_lgamma_r.c 2005-11-11 13:30:38.579630144 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_lgamma_r.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __lgamma_r, lgammal_r, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_log10.c libc/sysdeps/ieee754/ldbl-opt/w_log10.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_log10.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_log10.c 2005-11-11 13:30:38.586629080 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_log10.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __log10, log10l, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_log10l.c libc/sysdeps/ieee754/ldbl-opt/w_log10l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_log10l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_log10l.c 2005-11-11 13:30:38.582629688 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_log10l.c>
+long_double_symbol (libm, __log10l, log10l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_log2.c libc/sysdeps/ieee754/ldbl-opt/w_log2.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_log2.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_log2.c 2005-11-11 13:30:38.620623912 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_log2.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __log2, log2l, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_log2l.c libc/sysdeps/ieee754/ldbl-opt/w_log2l.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_log2l.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_log2l.c 2005-11-11 13:30:38.606626040 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_log2l.c>
+long_double_symbol (libm, __log2l, log2l);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_log.c libc/sysdeps/ieee754/ldbl-opt/w_log.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_log.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_log.c 2005-11-11 13:30:38.626623000 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_log.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __log, logl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_logl.c libc/sysdeps/ieee754/ldbl-opt/w_logl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_logl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_logl.c 2005-11-11 13:30:38.623623456 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_logl.c>
+long_double_symbol (libm, __logl, logl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_pow.c libc/sysdeps/ieee754/ldbl-opt/w_pow.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_pow.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_pow.c 2005-11-11 13:30:38.621623760 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_pow.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __pow, powl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_powl.c libc/sysdeps/ieee754/ldbl-opt/w_powl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_powl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_powl.c 2005-11-11 13:30:38.609625584 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_powl.c>
+long_double_symbol (libm, __powl, powl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_remainder.c libc/sysdeps/ieee754/ldbl-opt/w_remainder.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_remainder.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_remainder.c 2005-11-11 13:30:38.567631968 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_remainder.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __remainder, remainderl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_remainderl.c libc/sysdeps/ieee754/ldbl-opt/w_remainderl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_remainderl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_remainderl.c 2005-11-11 13:30:38.628622696 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_remainderl.c>
+long_double_symbol (libm, __remainderl, remainderl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_scalb.c libc/sysdeps/ieee754/ldbl-opt/w_scalb.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_scalb.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_scalb.c 2005-11-11 13:30:38.620623912 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_scalb.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __scalb, scalbl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_scalbl.c libc/sysdeps/ieee754/ldbl-opt/w_scalbl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_scalbl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_scalbl.c 2005-11-11 13:30:38.595627712 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_scalbl.c>
+long_double_symbol (libm, __scalbl, scalbl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_sinh.c libc/sysdeps/ieee754/ldbl-opt/w_sinh.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_sinh.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_sinh.c 2005-11-11 13:30:38.585629232 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_sinh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sinh, sinhl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_sinhl.c libc/sysdeps/ieee754/ldbl-opt/w_sinhl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_sinhl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_sinhl.c 2005-11-11 13:30:38.613624976 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_sinhl.c>
+long_double_symbol (libm, __sinhl, sinhl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_sqrt.c libc/sysdeps/ieee754/ldbl-opt/w_sqrt.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_sqrt.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_sqrt.c 2005-11-11 13:30:38.589628624 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_sqrt.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_sqrtl.c libc/sysdeps/ieee754/ldbl-opt/w_sqrtl.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_sqrtl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_sqrtl.c 2005-11-11 13:30:38.594627864 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_sqrtl.c>
+long_double_symbol (libm, __sqrtl, sqrtl);
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_tgamma.c libc/sysdeps/ieee754/ldbl-opt/w_tgamma.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_tgamma.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_tgamma.c 2005-11-11 13:30:38.564632424 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/generic/w_tgamma.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __tgamma, tgammal, GLIBC_2_1);
+#endif
diff -urN libc.orig/sysdeps/ieee754/ldbl-opt/w_tgammal.c libc/sysdeps/ieee754/ldbl-opt/w_tgammal.c
--- libc.orig/sysdeps/ieee754/ldbl-opt/w_tgammal.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/ieee754/ldbl-opt/w_tgammal.c 2005-11-11 13:30:38.612625128 -0500
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/w_tgammal.c>
+long_double_symbol (libm, __tgammal, tgammal);
diff -urN libc.orig/sysdeps/sparc/fpu/bits/mathdef.h libc/sysdeps/sparc/fpu/bits/mathdef.h
--- libc.orig/sysdeps/sparc/fpu/bits/mathdef.h 2004-03-15 16:44:11.000000000 -0500
+++ libc/sysdeps/sparc/fpu/bits/mathdef.h 2005-11-11 13:30:38.000000000 -0500
@@ -55,14 +55,3 @@
# define FP_ILOGBNAN (2147483647)
#endif /* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-
-# if __WORDSIZE == 32
-/* Signal that in 32bit ABI we do not really have a `long double'.
- The disables the declaration of all the `long double' function
- variants. */
-# define __NO_LONG_DOUBLE_MATH 1
-# endif
-
-#endif
diff -urN libc.orig/sysdeps/sparc/fpu/bits/mathinline.h libc/sysdeps/sparc/fpu/bits/mathinline.h
--- libc.orig/sysdeps/sparc/fpu/bits/mathinline.h 2004-10-14 12:12:48.000000000 -0400
+++ libc/sysdeps/sparc/fpu/bits/mathinline.h 2005-11-11 13:41:50.389579608 -0500
@@ -36,23 +36,52 @@
# if __WORDSIZE == 32
-# define __unordered_cmp(x, y) \
+# ifndef __NO_LONG_DOUBLE_MATH
+
+# define __unordered_cmp(x, y) \
+ (__extension__ \
+ ({ unsigned __r; \
+ if (sizeof (x) == 4 && sizeof (y) == 4) \
+ { \
+ float __x = (x); float __y = (y); \
+ __asm__ ("fcmps %1,%2; st %%fsr, %0" : "=m" (__r) : "f" (__x), \
+ "f" (__y) : "cc"); \
+ } \
+ else if (sizeof (x) <= 8 && sizeof (y) <= 8) \
+ { \
+ double __x = (x); double __y = (y); \
+ __asm__ ("fcmpd\t%1,%2\n\tst\t%%fsr,%0" : "=m" (__r) : "f" (__x), \
+ "f" (__y) : "cc"); \
+ } \
+ else \
+ { \
+ long double __x = (x); long double __y = (y); \
+ extern int _Q_cmp (const long double a, const long double b); \
+ __r = _Q_cmp (__x, __y) << 10; \
+ } \
+ __r; }))
+
+# else
+
+# define __unordered_cmp(x, y) \
(__extension__ \
({ unsigned __r; \
- if (sizeof(x) == 4 && sizeof(y) == 4) \
+ if (sizeof (x) == 4 && sizeof (y) == 4) \
{ \
float __x = (x); float __y = (y); \
- __asm__("fcmps %1,%2; st %%fsr, %0" : "=m" (__r) : "f" (__x), \
- "f" (__y) : "cc"); \
+ __asm__ ("fcmps %1,%2; st %%fsr, %0" : "=m" (__r) : "f" (__x), \
+ "f" (__y) : "cc"); \
} \
else \
{ \
double __x = (x); double __y = (y); \
- __asm__("fcmpd\t%1,%2\n\tst\t%%fsr,%0" : "=m" (__r) : "f" (__x), \
- "f" (__y) : "cc"); \
+ __asm__ ("fcmpd\t%1,%2\n\tst\t%%fsr,%0" : "=m" (__r) : "f" (__x), \
+ "f" (__y) : "cc"); \
} \
__r; }))
+# endif
+
# define isgreater(x, y) ((__unordered_cmp (x, y) & (3 << 10)) == (2 << 10))
# define isgreaterequal(x, y) ((__unordered_cmp (x, y) & (1 << 10)) == 0)
# define isless(x, y) ((__unordered_cmp (x, y) & (3 << 10)) == (1 << 10))
@@ -65,22 +94,22 @@
# define __unordered_v9cmp(x, y, op, qop) \
(__extension__ \
({ unsigned __r; \
- if (sizeof(x) == 4 && sizeof(y) == 4) \
+ if (sizeof (x) == 4 && sizeof (y) == 4) \
{ \
float __x = (x); float __y = (y); \
- __asm__("fcmps\t%%fcc3,%1,%2\n\tmov" op "\t%%fcc3,1,%0" \
- : "=r" (__r) : "f" (__x), "f" (__y), "0" (0) : "cc"); \
+ __asm__ ("fcmps\t%%fcc3,%1,%2\n\tmov" op "\t%%fcc3,1,%0" \
+ : "=r" (__r) : "f" (__x), "f" (__y), "0" (0) : "cc"); \
} \
- else if (sizeof(x) <= 8 && sizeof(y) <= 8) \
+ else if (sizeof (x) <= 8 && sizeof (y) <= 8) \
{ \
double __x = (x); double __y = (y); \
- __asm__("fcmpd\t%%fcc3,%1,%2\n\tmov" op "\t%%fcc3,1,%0" \
- : "=r" (__r) : "f" (__x), "f" (__y), "0" (0) : "cc"); \
+ __asm__ ("fcmpd\t%%fcc3,%1,%2\n\tmov" op "\t%%fcc3,1,%0" \
+ : "=r" (__r) : "f" (__x), "f" (__y), "0" (0) : "cc"); \
} \
else \
{ \
long double __x = (x); long double __y = (y); \
- extern int _Qp_cmp(const long double *a, const long double *b); \
+ extern int _Qp_cmp (const long double *a, const long double *b); \
__r = qop; \
} \
__r; }))
@@ -127,12 +156,25 @@
return __u.__i[0] < 0;
}
+# ifndef __NO_LONG_DOUBLE_MATH
+
+__MATH_INLINE int
+__signbitl (long double __x) __THROW
+{
+ __extension__ union { long double __l; int __i[4]; } __u = { __l: __x };
+ return __u.__i[0] < 0;
+}
+
+# else
+
__MATH_INLINE int
__NTH (__signbitl (long double __x))
{
return __signbit ((double)__x);
}
+# endif /* __NO_LONG_DOUBLE_MATH */
+
# else /* sparc64 */
__MATH_INLINE int
@@ -180,6 +222,13 @@
_Qp_sqrt (&__r, &__x);
return __r;
}
+# elif !defined __NO_LONG_DOUBLE_MATH
+__MATH_INLINE long double
+sqrtl (long double __x) __THROW
+{
+ extern long double _Q_sqrt (__const__ long double);
+ return _Q_sqrt (__x);
+}
# endif /* sparc64 */
# endif /* !__NO_MATH_INLINES && !GCC 3.2+ */
@@ -211,6 +260,13 @@
_Qp_sqrt(&__r, &__x);
return __r;
}
+# elif !defined __NO_LONG_DOUBLE_MATH
+__MATH_INLINE long double
+__ieee754_sqrtl (long double __x)
+{
+ extern long double _Q_sqrt (__const__ long double);
+ return _Q_sqrt (__x);
+}
# endif /* sparc64 */
# endif /* __LIBC_INTERNAL_MATH_INLINES */
# endif /* gcc 2.8+ */
diff -urN libc.orig/sysdeps/sparc/sparc32/fpu/e_sqrtl.c libc/sysdeps/sparc/sparc32/fpu/e_sqrtl.c
--- libc.orig/sysdeps/sparc/sparc32/fpu/e_sqrtl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/fpu/e_sqrtl.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1 @@
+/* __ieee754_sqrtl is defined in q_sqrt.c. */
diff -urN libc.orig/sysdeps/sparc/sparc32/fpu/libm-test-ulps libc/sysdeps/sparc/sparc32/fpu/libm-test-ulps
--- libc.orig/sysdeps/sparc/sparc32/fpu/libm-test-ulps 2004-12-17 01:49:58.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/fpu/libm-test-ulps 2005-11-11 13:39:54.374653096 -0500
@@ -4,12 +4,18 @@
Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
float: 3
ifloat: 3
+ildouble: 1
+ldouble: 1
Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
float: 3
ifloat: 3
+ildouble: 1
+ldouble: 1
Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
float: 6
ifloat: 6
@@ -19,17 +25,26 @@
float: 1
ifloat: 1
+# cacos
+Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
+ildouble: 1
+ldouble: 1
+
# cacosh
Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
double: 1
float: 7
idouble: 1
ifloat: 7
+ildouble: 5
+ldouble: 5
Test "Imaginary part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
double: 1
float: 3
idouble: 1
ifloat: 3
+ildouble: 1
+ldouble: 1
# casin
Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
@@ -37,6 +52,9 @@
float: 1
idouble: 1
ifloat: 1
+Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
+ildouble: 1
+ldouble: 1
# casinh
Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
@@ -44,19 +62,27 @@
float: 1
idouble: 5
ifloat: 1
+ildouble: 4
+ldouble: 4
Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
double: 3
float: 6
idouble: 3
ifloat: 6
+ildouble: 2
+ldouble: 2
Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
# catan
Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
@@ -70,6 +96,9 @@
Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
float: 4
ifloat: 4
+Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+ildouble: 1
+ldouble: 1
# catanh
Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
@@ -81,11 +110,18 @@
Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
float: 6
ifloat: 6
+ildouble: 1
+ldouble: 1
# cbrt
+Test "cbrt (-0.001) == -0.1":
+ildouble: 1
+ldouble: 1
Test "cbrt (-27.0) == -3.0":
double: 1
idouble: 1
@@ -97,9 +133,14 @@
idouble: 1
# ccos
+Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
double: 1
float: 1
@@ -113,9 +154,13 @@
Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
double: 1
float: 1
@@ -126,12 +171,20 @@
ifloat: 1
# cexp
+Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
float: 1
ifloat: 1
+Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
+ildouble: 1
+ldouble: 1
# clog
Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
@@ -140,57 +193,98 @@
Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
# clog10
Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
+Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
double: 1
float: 5
idouble: 1
ifloat: 5
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
+Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i":
+double: 1
+idouble: 1
Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
float: 1
ifloat: 1
+Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
# cos
@@ -199,16 +293,22 @@
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "cos (M_PI_6l * 4.0) == -0.5":
double: 2
float: 1
idouble: 2
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "cos (pi/2) == 0":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
# cpow
Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
@@ -222,16 +322,31 @@
float: 4
idouble: 1
ifloat: 4
+ildouble: 4
+ldouble: 4
+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
+ildouble: 1
+ldouble: 1
Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
double: 2
float: 3
idouble: 2
ifloat: 3
+ildouble: 1
+ldouble: 1
+Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
+ildouble: 2
+ldouble: 2
Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
double: 1
float: 4
idouble: 1
ifloat: 4
+ildouble: 3
+ldouble: 3
Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
float: 2
ifloat: 2
@@ -240,8 +355,21 @@
float: 2
idouble: 2
ifloat: 2
+ildouble: 1
+ldouble: 1
+
+# csin
+Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
+ildouble: 1
+ldouble: 1
# csinh
+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
double: 1
idouble: 1
@@ -256,17 +384,31 @@
Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i":
+ildouble: 1
+ldouble: 1
# ctan
Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
double: 1
idouble: 1
+ildouble: 2
+ldouble: 2
# ctanh
Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
@@ -274,6 +416,11 @@
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ildouble: 1
+ldouble: 1
Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
float: 1
ifloat: 1
@@ -290,6 +437,9 @@
Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
double: 1
idouble: 1
+Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318":
+ildouble: 1
+ldouble: 1
Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
double: 1
idouble: 1
@@ -310,14 +460,25 @@
float: 2
idouble: 6
ifloat: 2
+ildouble: 1
+ldouble: 1
# expm1
Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
double: 1
idouble: 1
Test "expm1 (1) == M_El - 1.0":
+double: 1
float: 1
+idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# gamma
+Test "gamma (-0.5) == log(2*sqrt(pi))":
+ildouble: 1
+ldouble: 1
# hypot
Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
@@ -359,9 +520,13 @@
float: 1
idouble: 2
ifloat: 1
+ildouble: 2
+ldouble: 2
Test "j0 (2.0) == 0.223890779141235668051827454649948626":
float: 2
ifloat: 2
+ildouble: 2
+ldouble: 2
Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
float: 1
@@ -370,17 +535,32 @@
Test "j0 (8.0) == 0.171650807137553906090869407851972001":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
# j1
+Test "j1 (-1.0) == -0.440050585744933515959682203718914913":
+ildouble: 1
+ldouble: 1
+Test "j1 (0.75) == 0.349243602174862192523281016426251335":
+ildouble: 1
+ldouble: 1
+Test "j1 (1.0) == 0.440050585744933515959682203718914913":
+ildouble: 1
+ldouble: 1
Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
float: 2
ifloat: 2
+ildouble: 2
+ldouble: 2
Test "j1 (2.0) == 0.576724807756873387202448242269137087":
double: 1
idouble: 1
Test "j1 (8.0) == 0.234636346853914624381276651590454612":
double: 1
idouble: 1
+ildouble: 4
+ldouble: 4
# jn
Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
@@ -396,9 +576,13 @@
float: 1
idouble: 2
ifloat: 1
+ildouble: 2
+ldouble: 2
Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
float: 2
ifloat: 2
+ildouble: 2
+ldouble: 2
Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
float: 1
@@ -407,30 +591,57 @@
Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "jn (1, -1.0) == -0.440050585744933515959682203718914913":
+ildouble: 1
+ldouble: 1
+Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
+ildouble: 1
+ldouble: 1
+Test "jn (1, 1.0) == 0.440050585744933515959682203718914913":
+ildouble: 1
+ldouble: 1
Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
float: 2
ifloat: 2
+ildouble: 2
+ldouble: 2
Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
double: 1
idouble: 1
Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
double: 1
idouble: 1
+ildouble: 4
+ldouble: 4
+Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
+ildouble: 1
+ldouble: 1
Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
+ildouble: 1
+ldouble: 1
Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
double: 4
float: 3
idouble: 4
ifloat: 3
+ildouble: 2
+ldouble: 2
Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
float: 4
ifloat: 4
@@ -449,6 +660,8 @@
float: 1
idouble: 3
ifloat: 1
+ildouble: 2
+ldouble: 2
Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
double: 1
float: 2
@@ -456,16 +669,23 @@
ifloat: 2
# lgamma
+Test "lgamma (-0.5) == log(2*sqrt(pi))":
+ildouble: 1
+ldouble: 1
Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
# log10
Test "log10 (0.75) == -0.124938736608299953132449886193870744":
@@ -476,11 +696,21 @@
Test "log10 (e) == log10(e)":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
# log1p
Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
float: 1
ifloat: 1
+Test "log1p (M_El - 1.0) == 1":
+ildouble: 1
+ldouble: 1
+
+# log2
+Test "log2 (0.75) == -.415037499278843818546261056052183492":
+ildouble: 1
+ldouble: 1
# sincos
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
@@ -488,31 +718,58 @@
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
float: 1
ifloat: 1
+# sqrt
+Test "sqrt (2) == M_SQRT2l":
+ildouble: 1
+ldouble: 1
+
# tan
Test "tan (pi/4) == 1":
double: 1
idouble: 1
+# tanh
+Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
+ildouble: 1
+ldouble: 1
+Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
+ildouble: 1
+ldouble: 1
+Test "tanh (0.75) == 0.635148952387287319214434357312496495":
+ildouble: 1
+ldouble: 1
+Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
+ildouble: 1
+ldouble: 1
+
# tgamma
Test "tgamma (-0.5) == -2 sqrt (pi)":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "tgamma (0.5) == sqrt (pi)":
float: 1
ifloat: 1
@@ -521,6 +778,9 @@
float: 1
idouble: 1
ifloat: 1
+Test "tgamma (4) == 6":
+ildouble: 1
+ldouble: 1
# y0
Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
@@ -536,19 +796,28 @@
Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
float: 1
ifloat: 1
+ildouble: 3
+ldouble: 3
Test "y0 (8.0) == 0.223521489387566220527323400498620359":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 3
+ldouble: 3
# y1
Test "y1 (0.125) == -5.19993611253477499595928744876579921":
double: 1
idouble: 1
+Test "y1 (0.75) == -1.03759455076928541973767132140642198":
+ildouble: 1
+ldouble: 1
Test "y1 (1.5) == -0.412308626973911295952829820633445323":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "y1 (10.0) == 0.249015424206953883923283474663222803":
double: 3
float: 1
@@ -559,11 +828,15 @@
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "y1 (8.0) == -0.158060461731247494255555266187483550":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
# yn
Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
@@ -579,17 +852,26 @@
Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
float: 1
ifloat: 1
+ildouble: 3
+ldouble: 3
Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 3
+ldouble: 3
Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
double: 1
idouble: 1
+Test "yn (1, 0.75) == -1.03759455076928541973767132140642198":
+ildouble: 1
+ldouble: 1
Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
double: 3
float: 1
@@ -600,30 +882,44 @@
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
double: 1
idouble: 1
+ildouble: 2
+ldouble: 2
Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 5
+ldouble: 5
Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 2
+ldouble: 2
Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
double: 2
idouble: 2
+ildouble: 2
+ldouble: 2
Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
double: 1
idouble: 1
@@ -632,11 +928,15 @@
float: 1
idouble: 1
ifloat: 1
+ildouble: 2
+ldouble: 2
Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
double: 1
idouble: 1
@@ -650,17 +950,25 @@
float: 1
ifloat: 1
+Function: Imaginary part of "cacos":
+ildouble: 1
+ldouble: 1
+
Function: Real part of "cacosh":
double: 1
float: 7
idouble: 1
ifloat: 7
+ildouble: 5
+ldouble: 5
Function: Imaginary part of "cacosh":
double: 1
float: 3
idouble: 1
ifloat: 3
+ildouble: 1
+ldouble: 1
Function: Real part of "casin":
double: 1
@@ -668,17 +976,25 @@
idouble: 1
ifloat: 1
+Function: Imaginary part of "casin":
+ildouble: 1
+ldouble: 1
+
Function: Real part of "casinh":
double: 5
float: 1
idouble: 5
ifloat: 1
+ildouble: 4
+ldouble: 4
Function: Imaginary part of "casinh":
double: 3
float: 6
idouble: 3
ifloat: 6
+ildouble: 2
+ldouble: 2
Function: Real part of "catan":
float: 4
@@ -689,50 +1005,72 @@
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Real part of "catanh":
double: 4
idouble: 4
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "catanh":
float: 6
ifloat: 6
+ildouble: 1
+ldouble: 1
Function: "cbrt":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
Function: Real part of "ccos":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "ccos":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Real part of "ccosh":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "ccosh":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Real part of "cexp":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "cexp":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Real part of "clog":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "clog":
float: 3
@@ -741,34 +1079,54 @@
Function: Real part of "clog10":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "clog10":
double: 1
float: 5
idouble: 1
ifloat: 5
+ildouble: 1
+ldouble: 1
Function: "cos":
double: 2
float: 1
idouble: 2
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Real part of "cpow":
double: 2
float: 4
idouble: 2
ifloat: 4
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "cpow":
double: 2
float: 2
idouble: 2
ifloat: 2
+ildouble: 1
+ldouble: 1
+
+Function: Real part of "csin":
+ildouble: 1
+ldouble: 1
+
+Function: Imaginary part of "csin":
+ildouble: 1
+ldouble: 1
Function: Real part of "csinh":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "csinh":
double: 1
@@ -779,24 +1137,38 @@
Function: Real part of "csqrt":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: Imaginary part of "csqrt":
+ildouble: 1
+ldouble: 1
Function: Real part of "ctan":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "ctan":
double: 1
idouble: 1
+ildouble: 2
+ldouble: 2
Function: Real part of "ctanh":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
Function: Imaginary part of "ctanh":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: "erf":
double: 1
@@ -805,18 +1177,28 @@
Function: "erfc":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
Function: "exp10":
double: 6
float: 2
idouble: 6
ifloat: 2
+ildouble: 1
+ldouble: 1
Function: "expm1":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "gamma":
+ildouble: 1
+ldouble: 1
Function: "hypot":
float: 1
@@ -827,67 +1209,101 @@
float: 2
idouble: 2
ifloat: 2
+ildouble: 2
+ldouble: 2
Function: "j1":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 4
+ldouble: 4
Function: "jn":
double: 4
float: 4
idouble: 4
ifloat: 4
+ildouble: 4
+ldouble: 4
Function: "lgamma":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
Function: "log10":
double: 1
float: 2
idouble: 1
ifloat: 2
+ildouble: 1
+ldouble: 1
Function: "log1p":
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log2":
+ildouble: 1
+ldouble: 1
Function: "sincos":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "sqrt":
+ildouble: 1
+ldouble: 1
Function: "tan":
double: 1
idouble: 1
+Function: "tanh":
+ildouble: 1
+ldouble: 1
+
Function: "tgamma":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
Function: "y0":
double: 2
float: 1
idouble: 2
ifloat: 1
+ildouble: 3
+ldouble: 3
Function: "y1":
double: 3
float: 2
idouble: 3
ifloat: 2
+ildouble: 1
+ldouble: 1
Function: "yn":
double: 3
float: 2
idouble: 3
ifloat: 2
+ildouble: 5
+ldouble: 5
# end of automatic generation
diff -urN libc.orig/sysdeps/sparc/sparc32/fpu/s_fabs.c libc/sysdeps/sparc/sparc32/fpu/s_fabs.c
--- libc.orig/sysdeps/sparc/sparc32/fpu/s_fabs.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/fpu/s_fabs.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,5 @@
+double __fabs (double x)
+{
+ return __builtin_fabs (x);
+}
+weak_alias (__fabs, fabs)
diff -urN libc.orig/sysdeps/sparc/sparc32/fpu/s_fabsf.S libc/sysdeps/sparc/sparc32/fpu/s_fabsf.S
--- libc.orig/sysdeps/sparc/sparc32/fpu/s_fabsf.S 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/fpu/s_fabsf.S 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,29 @@
+/* Float absolute value, sparc32 version.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+ENTRY (__fabsf)
+ st %o0, [%sp+64]
+ ld [%sp+64], %f0
+ retl
+ fabss %f0, %f0
+END (__fabsf)
+weak_alias (__fabsf, fabsf)
diff -urN libc.orig/sysdeps/sparc/sparc32/fpu/s_fabsl.c libc/sysdeps/sparc/sparc32/fpu/s_fabsl.c
--- libc.orig/sysdeps/sparc/sparc32/fpu/s_fabsl.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/fpu/s_fabsl.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,5 @@
+long double __fabsl (long double x)
+{
+ return __builtin_fabsl (x);
+}
+weak_alias (__fabsl, fabsl)
diff -urN libc.orig/sysdeps/sparc/sparc32/Implies libc/sysdeps/sparc/sparc32/Implies
--- libc.orig/sysdeps/sparc/sparc32/Implies 2000-09-05 10:23:07.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/Implies 2005-11-11 13:30:38.000000000 -0500
@@ -1,5 +1,6 @@
wordsize-32
# SPARC uses IEEE 754 floating point.
-ieee754/flt-32
+ieee754/ldbl-128
ieee754/dbl-64
+ieee754/flt-32
sparc/sparc32/soft-fp
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/Makefile libc/sysdeps/sparc/sparc32/soft-fp/Makefile
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/Makefile 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/Makefile 2005-11-11 13:30:38.000000000 -0500
@@ -1,6 +1,6 @@
# Software floating-point emulation.
# Makefile for SPARC v8 long double utility functions (_Q_*).
-# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Jakub Jelinek (jj@ultra.linux.cz).
#
@@ -20,13 +20,11 @@
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.
-# Currently gcc does not support TFmode long double on sparc32
-# so these routines are not used.
-#ifeq ($(subdir),soft-fp)
-#sparc32-quad-routines := q_add q_cmp q_cmpe q_div q_dtoq q_feq q_fge \
-# q_fgt q_fle q_flt q_fne q_itoq q_mul q_neg q_qtod q_qtoi \
-# q_qtos q_qtoui q_qtoux q_qtox q_sqrt q_stoq q_sub q_uitoq \
-# q_uxtoq q_xtoq q_util
-#sysdep_routines += $(sparc32-quad-routines)
-#
-#endif
+ifeq ($(subdir),soft-fp)
+sparc32-quad-routines := q_add q_cmp q_cmpe q_div q_dtoq q_feq q_fge \
+ q_fgt q_fle q_flt q_fne q_itoq q_mul q_neg q_qtod q_qtoi \
+ q_qtos q_qtou q_qtoull q_qtoll q_sqrt q_stoq q_sub q_utoq \
+ q_ulltoq q_lltoq q_util
+sysdep_routines += $(sparc32-quad-routines)
+
+endif
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_div.c libc/sysdeps/sparc/sparc32/soft-fp/q_div.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_div.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_div.c 2005-11-11 13:30:38.000000000 -0500
@@ -35,5 +35,5 @@
FP_DIV_Q(C, A, B);
FP_PACK_Q(c, C);
FP_HANDLE_EXCEPTIONS;
- return long double;
+ return c;
}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_lltoq.c libc/sysdeps/sparc/sparc32/soft-fp/q_lltoq.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_lltoq.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_lltoq.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,38 @@
+/* Software floating-point emulation.
+ Return (long double)a
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include "soft-fp.h"
+#include "quad.h"
+
+long double _Q_lltoq(const long long a)
+{
+ FP_DECL_EX;
+ FP_DECL_Q(C);
+ long double c;
+ long long b = a;
+
+ FP_FROM_INT_Q(C, b, 64, long long);
+ FP_PACK_Q(c, C);
+ FP_CLEAR_EXCEPTIONS;
+ FP_HANDLE_EXCEPTIONS;
+ return c;
+}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoll.c libc/sysdeps/sparc/sparc32/soft-fp/q_qtoll.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoll.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoll.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,38 @@
+/* Software floating-point emulation.
+ Return (long long)a
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define FP_ROUNDMODE FP_RND_ZERO
+#include "soft-fp.h"
+#include "quad.h"
+
+long long _Q_qtoll(const long double a)
+{
+ FP_DECL_EX;
+ FP_DECL_Q(A);
+ long long r;
+
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 64, 1);
+ FP_HANDLE_EXCEPTIONS;
+
+ return r;
+}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtou.c libc/sysdeps/sparc/sparc32/soft-fp/q_qtou.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtou.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtou.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,38 @@
+/* Software floating-point emulation.
+ Return (unsigned int)a
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define FP_ROUNDMODE FP_RND_ZERO
+#include "soft-fp.h"
+#include "quad.h"
+
+unsigned int _Q_qtou(const long double a)
+{
+ FP_DECL_EX;
+ FP_DECL_Q(A);
+ unsigned int r;
+
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 32, -1);
+ FP_HANDLE_EXCEPTIONS;
+
+ return r;
+}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoui.c libc/sysdeps/sparc/sparc32/soft-fp/q_qtoui.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoui.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoui.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,38 +0,0 @@
-/* Software floating-point emulation.
- Return (unsigned int)a
- Copyright (C) 1997,1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define FP_ROUNDMODE FP_RND_ZERO
-#include "soft-fp.h"
-#include "quad.h"
-
-unsigned int _Q_qtoui(const long double a)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- unsigned int r;
-
- FP_UNPACK_Q(A, a);
- FP_TO_INT_Q(r, A, 32, -1);
- FP_HANDLE_EXCEPTIONS;
-
- return r;
-}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoull.c libc/sysdeps/sparc/sparc32/soft-fp/q_qtoull.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoull.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoull.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,38 @@
+/* Software floating-point emulation.
+ Return (unsigned long long)a
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define FP_ROUNDMODE FP_RND_ZERO
+#include "soft-fp.h"
+#include "quad.h"
+
+unsigned long long _Q_qtoull(const long double a)
+{
+ FP_DECL_EX;
+ FP_DECL_Q(A);
+ unsigned long long r;
+
+ FP_UNPACK_Q(A, a);
+ FP_TO_INT_Q(r, A, 64, -1);
+ FP_HANDLE_EXCEPTIONS;
+
+ return r;
+}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoux.c libc/sysdeps/sparc/sparc32/soft-fp/q_qtoux.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtoux.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoux.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,38 +0,0 @@
-/* Software floating-point emulation.
- Return (unsigned long)a
- Copyright (C) 1997,1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define FP_ROUNDMODE FP_RND_ZERO
-#include "soft-fp.h"
-#include "quad.h"
-
-unsigned long long _Q_qtoux(const long double a)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- unsigned long long r;
-
- FP_UNPACK_Q(A, a);
- FP_TO_INT_Q(r, A, 64, -1);
- FP_HANDLE_EXCEPTIONS;
-
- return r;
-}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtox.c libc/sysdeps/sparc/sparc32/soft-fp/q_qtox.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_qtox.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtox.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,38 +0,0 @@
-/* Software floating-point emulation.
- Return (long)a
- Copyright (C) 1997,1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define FP_ROUNDMODE FP_RND_ZERO
-#include "soft-fp.h"
-#include "quad.h"
-
-long long _Q_qtox(const long double a)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- long long r;
-
- FP_UNPACK_Q(A, a);
- FP_TO_INT_Q(r, A, 64, 1);
- FP_HANDLE_EXCEPTIONS;
-
- return r;
-}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c libc/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c 2005-11-11 13:30:38.000000000 -0500
@@ -36,3 +36,4 @@
FP_HANDLE_EXCEPTIONS;
return c;
}
+strong_alias (_Q_sqrt, __ieee754_sqrtl);
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_uitoq.c libc/sysdeps/sparc/sparc32/soft-fp/q_uitoq.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_uitoq.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_uitoq.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,38 +0,0 @@
-/* Software floating-point emulation.
- c = (long double)(a)
- Copyright (C) 1997,1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "quad.h"
-
-long double _Q_uitoq(const unsigned int a)
-{
- FP_DECL_EX;
- FP_DECL_Q(C);
- long double c;
- unsigned int b = a;
-
- FP_FROM_INT_Q(C, b, 32, int);
- FP_PACK_Q(c, C);
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
- return c;
-}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c libc/sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,38 @@
+/* Software floating-point emulation.
+ Return (long double)(a)
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include "soft-fp.h"
+#include "quad.h"
+
+long double _Q_ulltoq(const unsigned long long a)
+{
+ FP_DECL_EX;
+ FP_DECL_Q(C);
+ long double c;
+ unsigned long long b = a;
+
+ FP_FROM_INT_Q(C, b, 64, long long);
+ FP_PACK_Q(c, C);
+ FP_CLEAR_EXCEPTIONS;
+ FP_HANDLE_EXCEPTIONS;
+ return c;
+}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_utoq.c libc/sysdeps/sparc/sparc32/soft-fp/q_utoq.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_utoq.c 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_utoq.c 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,38 @@
+/* Software floating-point emulation.
+ c = (long double)(a)
+ Copyright (C) 1997,1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include "soft-fp.h"
+#include "quad.h"
+
+long double _Q_utoq(const unsigned int a)
+{
+ FP_DECL_EX;
+ FP_DECL_Q(C);
+ long double c;
+ unsigned int b = a;
+
+ FP_FROM_INT_Q(C, b, 32, int);
+ FP_PACK_Q(c, C);
+ FP_CLEAR_EXCEPTIONS;
+ FP_HANDLE_EXCEPTIONS;
+ return c;
+}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c libc/sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,38 +0,0 @@
-/* Software floating-point emulation.
- Return (long double)(a)
- Copyright (C) 1997,1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "quad.h"
-
-long double _Q_uxtoq(const unsigned long long a)
-{
- FP_DECL_EX;
- FP_DECL_Q(C);
- long double c;
- unsigned long long b = a;
-
- FP_FROM_INT_Q(C, b, 64, long long);
- FP_PACK_Q(c, C);
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
- return c;
-}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/q_xtoq.c libc/sysdeps/sparc/sparc32/soft-fp/q_xtoq.c
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/q_xtoq.c 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_xtoq.c 2005-11-11 13:30:38.000000000 -0500
@@ -1,38 +0,0 @@
-/* Software floating-point emulation.
- Return (long double)a
- Copyright (C) 1997,1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "quad.h"
-
-long double _Q_xtoq(const long long a)
-{
- FP_DECL_EX;
- FP_DECL_Q(C);
- long double c;
- long long b = a;
-
- FP_FROM_INT_Q(C, b, 64, long long);
- FP_PACK_Q(c, C);
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
- return c;
-}
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h 2002-10-02 20:21:13.000000000 -0400
+++ libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h 2005-11-11 13:30:38.000000000 -0500
@@ -22,6 +22,7 @@
02111-1307 USA. */
#include <fpu_control.h>
+#include <stdlib.h>
#define _FP_W_TYPE_SIZE 32
#define _FP_W_TYPE unsigned long
@@ -208,14 +209,5 @@
" : : "r" (___Q_numbers) : "f30"); \
} \
else \
- { \
- __asm__ __volatile__("\
- mov %0, %%o0\n\
- mov %%o7, %%g1\n\
- call ___Q_simulate_exceptions\n\
- mov %%g1, %%o7\
- " : : "r" (_fex) : \
- "g1", "g2", "g3", "g4", "g5", "o0", \
- "o1", "o2", "o3", "o4", "o5", "cc"); \
- } \
+ ___Q_simulate_exceptions (_fex); \
} while (0)
diff -urN libc.orig/sysdeps/sparc/sparc32/soft-fp/Versions libc/sysdeps/sparc/sparc32/soft-fp/Versions
--- libc.orig/sysdeps/sparc/sparc32/soft-fp/Versions 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/sparc/sparc32/soft-fp/Versions 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,8 @@
+libc {
+ GLIBC_2.3.4 {
+ _Q_add; _Q_cmp; _Q_cmpe; _Q_div; _Q_dtoq; _Q_feq; _Q_fge; _Q_fgt;
+ _Q_fle; _Q_flt; _Q_fne; _Q_itoq; _Q_mul; _Q_neg; _Q_qtod; _Q_qtoi;
+ _Q_qtos; _Q_qtou; _Q_qtoull; _Q_qtoll; _Q_sqrt; _Q_stoq; _Q_sub;
+ _Q_utoq; _Q_ulltoq; _Q_lltoq;
+ }
+}
diff -urN libc.orig/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
--- libc.orig/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h 2001-07-06 00:56:05.000000000 -0400
+++ libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h 2005-11-11 13:30:38.000000000 -0500
@@ -23,6 +23,7 @@
#include <fpu_control.h>
#include <fenv.h>
+#include <stdlib.h>
#define _FP_W_TYPE_SIZE 64
#define _FP_W_TYPE unsigned long
diff -urN libc.orig/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h libc/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h
--- libc.orig/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,21 @@
+/* Determine the wordsize from the preprocessor defines. */
+
+#if defined __arch64__ || defined __sparcv9
+# define __WORDSIZE 64
+#else
+# define __WORDSIZE 32
+#endif
+
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
+
+# if __WORDSIZE == 32
+/* Signal that in 32bit ABI we didn't used to have a `long double'.
+ The changes all the `long double' function variants to be redirects
+ to the double functions. */
+# define __LONG_DOUBLE_MATH_OPTIONAL 1
+# ifndef __LONG_DOUBLE_128__
+# define __NO_LONG_DOUBLE_MATH 1
+# define __NLDBL_COMPAT 1
+# endif
+# endif
+#endif
diff -urN libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/configure libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure
--- libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/configure 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,9 @@
+ # Local configure fragment for sysdeps/sparc/sparc32.
+
+# Check whether compiler supports -mlong-double-128
+if ${CC-cc} $CFLAGS -mlong-double-128 -S -xc /dev/null -o /dev/null 2>&1
+then
+ :
+else
+ { echo "configure: error: sparc32 glibc requires gcc which supports -mlong-double-128 option" 1>&2; exit 1; }
+fi
diff -urN libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/configure.in libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure.in
--- libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/configure.in 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure.in 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,11 @@
+sinclude(./aclocal.m4)dnl Autoconf lossage
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/sparc/sparc32.
+
+# Check whether compiler supports -mlong-double-128
+if ${CC-cc} $CFLAGS -mlong-double-128 -S -xc /dev/null -o /dev/null 2>&1
+then
+ :
+else
+ AC_ERROR(sparc32 glibc requires gcc which supports -mlong-double-128 option)
+fi
diff -urN libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/Implies libc/sysdeps/unix/sysv/linux/sparc/sparc32/Implies
--- libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/Implies 1969-12-31 19:00:00.000000000 -0500
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/Implies 2005-11-11 13:30:38.000000000 -0500
@@ -0,0 +1,2 @@
+ieee754/ldbl-64-128
+ieee754/ldbl-opt
diff -urN libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
--- libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile 2005-07-02 18:40:34.000000000 -0400
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile 2005-11-11 13:30:38.000000000 -0500
@@ -1,3 +1,10 @@
+# The Sparc `long double' is a distinct type we support if
+# -mlong-double-128 option is used (or when it becomes a default
+# when -mlong-double-64 is not used).
+long-double-fcts = yes
+long-double-fcts-ver = GLIBC_2_3_4
+sysdep-CFLAGS += -mlong-double-128
+
asm-CPPFLAGS = -D__ASSEMBLY__
ASFLAGS-.os += -fPIC
LD += -melf32_sparc
diff -urN libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/Versions libc/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
--- libc.orig/sysdeps/unix/sysv/linux/sparc/sparc32/Versions 2003-08-22 14:10:44.000000000 -0400
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/Versions 2005-11-11 13:30:38.000000000 -0500
@@ -20,4 +20,68 @@
GLIBC_2.3.3 {
posix_fadvise64; posix_fallocate64;
}
+ GLIBC_2.3.4 {
+ # IEEE quad long double functions (older symver is for
+ # IEEE double long double).
+ ldexpl; copysignl; finitel; frexpl; isinfl; isnanl; modfl;
+ __isinfl; __isnanl; __finitel; __signbitl;
+ scalblnl; scalbnl;
+ qecvt; qfcvt; qgcvt; qecvt_r; qfcvt_r;
+
+ strtold; __strtold_internal; wcstold; __wcstold_internal;
+ __strtold_l; strtold_l; __wcstold_l; wcstold_l;
+
+ strfmon; __strfmon_l; strfmon_l;
+ __nldbl_strfmon; __nldbl___strfmon_l; __nldbl_strfmon_l;
+
+ # *printf* family, using IEEE quad long double
+ __asprintf; asprintf; dprintf; fprintf; fwprintf; _IO_fprintf;
+ _IO_printf; _IO_sprintf; _IO_vfprintf; _IO_vsprintf; obstack_printf;
+ obstack_vprintf; printf; __printf_fp; printf_size; snprintf; sprintf;
+ swprintf; vasprintf; vdprintf; vfprintf; vfwprintf; vprintf; vsnprintf;
+ __vsnprintf; vsprintf; vswprintf; vwprintf; wprintf;
+
+ # *printf* family, using IEEE double as long double
+ # The standard functions are __REDIRECTed to these if -mlong-double-128
+ __nldbl___asprintf; __nldbl_asprintf; __nldbl_dprintf; __nldbl_fprintf;
+ __nldbl_fwprintf; __nldbl__IO_fprintf; __nldbl__IO_printf;
+ __nldbl__IO_sprintf; __nldbl__IO_vfprintf; __nldbl__IO_vsprintf;
+ __nldbl_obstack_printf; __nldbl_obstack_vprintf; __nldbl_printf;
+ __nldbl___printf_fp; __nldbl_printf_size; __nldbl_snprintf;
+ __nldbl_sprintf; __nldbl_swprintf; __nldbl_vasprintf; __nldbl_vdprintf;
+ __nldbl_vfprintf; __nldbl_vfwprintf; __nldbl_vprintf; __nldbl_vsnprintf;
+ __nldbl___vsnprintf; __nldbl_vsprintf; __nldbl_vswprintf;
+ __nldbl_vwprintf; __nldbl_wprintf;
+
+ # *scanf family, using IEEE quad long double
+ _IO_sscanf; _IO_vfscanf; __vfscanf; __vsscanf; fscanf; fwscanf; scanf;
+ sscanf; swscanf; vfscanf; vfwscanf; vscanf; vsscanf; vswscanf; vwscanf;
+ wscanf;
+
+ # *scanf family, using IEEE double as long double
+ __nldbl__IO_sscanf; __nldbl__IO_vfscanf; __nldbl___vfscanf;
+ __nldbl___vsscanf; __nldbl_fscanf; __nldbl_fwscanf; __nldbl_scanf;
+ __nldbl_sscanf; __nldbl_swscanf; __nldbl_vfscanf; __nldbl_vfwscanf;
+ __nldbl_vscanf; __nldbl_vsscanf; __nldbl_vswscanf; __nldbl_vwscanf;
+ __nldbl_wscanf;
+ }
+}
+libm {
+ GLIBC_2.3.4 {
+ # IEEE quad long double functions (older symver is for
+ # IEEE double as long double).
+ cabsl; cargl; cimagl; conjl; creall; cacosl; cacoshl; casinl;
+ catanl; catanhl; ccosl; ccoshl; casinhl; cexpl; clogl; __clog10l;
+ clog10l; cpowl; cprojl; csinl; csinhl; csqrtl; ctanl; ctanhl;
+ fdiml; fmal; fmaxl; fminl; ldexpl; nanl; nextafterl; nexttowardl;
+ significandl; acosl; acoshl; asinl; atan2l; atanhl; coshl; dreml;
+ exp10l; pow10l; exp2l; fmodl; hypotl; j0l; y0l; j1l; y1l; jnl; ynl;
+ lgammal; gammal; lgammal_r; logl; log10l; log2l; powl; remainderl;
+ scalbl; sinhl; sqrtl; tgammal; asinhl; atanl; cbrtl; ceill; copysignl;
+ erfl; erfcl; expm1l; fabsl; finitel; floorl; frexpl; ilogbl;
+ llrintl; llroundl; log1pl; logbl; lrintl; lroundl; modfl;
+ nearbyintl; remquol; rintl; roundl; scalblnl; scalbnl; sinl; cosl;
+ sincosl; tanl; tanhl; truncl; expl; __finitel; __signbitl;
+ nexttowardf; nexttoward; __nldbl_nexttowardf;
+ }
}
diff -urN libc.orig/wcsmbs/wchar.h libc/wcsmbs/wchar.h
--- libc.orig/wcsmbs/wchar.h 2005-07-15 06:08:27.000000000 -0400
+++ libc/wcsmbs/wchar.h 2005-11-11 13:37:48.743582368 -0500
@@ -395,8 +395,10 @@
/* Likewise for `float' and `long double' sizes of floating-point numbers. */
extern float wcstof (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr) __THROW;
-extern long double wcstold (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
+extern long double __NLDBL_REDIR2 (wcstold,
+ (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr) __THROW,
+ wcstod);
#endif /* C99 */
@@ -489,9 +491,11 @@
wchar_t **__restrict __endptr, __locale_t __loc)
__THROW;
-extern long double wcstold_l (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- __locale_t __loc) __THROW;
+extern long double __NLDBL_REDIR2 (wcstold_l,
+ (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ __locale_t __loc) __THROW,
+ wcstod_l);
#endif /* GNU */
@@ -503,9 +507,11 @@
extern float __wcstof_internal (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, int __group)
__THROW;
-extern long double __wcstold_internal (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __group) __THROW;
+extern long double __NLDBL_REDIR2 (__wcstold_internal,
+ (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ int __group) __THROW,
+ __wcstod_internal);
#ifndef __wcstol_internal_defined
extern long int __wcstol_internal (__const wchar_t *__restrict __nptr,
@@ -561,11 +567,12 @@
__NTH (wcstof (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr))
{ return __wcstof_internal (__nptr, __endptr, 0); }
+# ifndef __NLDBL_COMPAT
extern __inline long double
__NTH (wcstold (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr))
{ return __wcstold_internal (__nptr, __endptr, 0); }
-
+# endif
__extension__
extern __inline long long int
@@ -605,59 +612,64 @@
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int fwprintf (__FILE *__restrict __stream,
- __const wchar_t *__restrict __format, ...)
+extern int __NLDBL_REDIR (fwprintf,
+ (__FILE *__restrict __stream,
+ __const wchar_t *__restrict __format, ...))
/* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
/* Write formatted output to stdout.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int wprintf (__const wchar_t *__restrict __format, ...)
+extern int __NLDBL_REDIR (wprintf,
+ (__const wchar_t *__restrict __format, ...))
/* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
/* Write formatted output of at most N characters to S. */
-extern int swprintf (wchar_t *__restrict __s, size_t __n,
- __const wchar_t *__restrict __format, ...)
+extern int __NLDBL_REDIR (swprintf,
+ (wchar_t *__restrict __s, size_t __n,
+ __const wchar_t *__restrict __format, ...))
__THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
/* Write formatted output to S from argument list ARG.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vfwprintf (__FILE *__restrict __s,
- __const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
+extern int __NLDBL_REDIR (vfwprintf, (__FILE *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
/* Write formatted output to stdout from argument list ARG.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vwprintf (__const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
+extern int __NLDBL_REDIR (vwprintf, (__const wchar_t *__restrict __format,
+ __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
/* Write formatted output of at most N character to S from argument
list ARG. */
-extern int vswprintf (wchar_t *__restrict __s, size_t __n,
- __const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
+extern int __NLDBL_REDIR (vswprintf, (wchar_t *__restrict __s, size_t __n,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg))
__THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
-
/* Read formatted input from STREAM.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int fwscanf (__FILE *__restrict __stream,
- __const wchar_t *__restrict __format, ...)
+extern int __NLDBL_REDIR (fwscanf,
+ (__FILE *__restrict __stream,
+ __const wchar_t *__restrict __format, ...))
/* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
/* Read formatted input from stdin.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int wscanf (__const wchar_t *__restrict __format, ...)
+extern int __NLDBL_REDIR (wscanf,
+ (__const wchar_t *__restrict __format, ...))
/* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
/* Read formatted input from S. */
-extern int swscanf (__const wchar_t *__restrict __s,
- __const wchar_t *__restrict __format, ...)
+extern int __NLDBL_REDIR (swscanf,
+ (__const wchar_t *__restrict __s,
+ __const wchar_t *__restrict __format, ...))
__THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
__END_NAMESPACE_C99
@@ -670,21 +682,21 @@
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vfwscanf (__FILE *__restrict __s,
- __const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
+extern int __NLDBL_REDIR (vfwscanf, (__FILE *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
/* Read formatted input from stdin into argument list ARG.
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern int vwscanf (__const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
+extern int __NLDBL_REDIR (vwscanf, (__const wchar_t *__restrict __format,
+ __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
/* Read formatted input from S into argument list ARG. */
-extern int vswscanf (__const wchar_t *__restrict __s,
- __const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
+extern int __NLDBL_REDIR (vswscanf, (__const wchar_t *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg))
__THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
__END_NAMESPACE_C99