This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC] libm part of long double transition from 64-bit to 128-bit


Hi!

This is just a RFC, libm should be done while *printf, *scanf and *told etc.
are not done yet.
The patch requires on the platforms converting to TFmode long double
from long double == double to use compiler which supports TFmode at least
with some switch and should keep binary compatibility with old programs,
newly linked programs using DFmode long double and newly linked programs
using TFmode long double.

What I wonder whether the <math.h> magic to __REDIRECT *l functions to
their non-l counterparts should be done for all arches which have DFmode
long double, I find it weird when #include <math.h> and logl etc.
are prototyped on some arches and are missing on others.

And the last thing I wonder is what to do about the *printf/*scanf family,
where unlike the rest of the functions the DFmode symver cannot be simply
alias to non-l function.
I'd think
printf@GLIBC_2.0		// uses DFmode long double - for old programs
printf@@GLIBC_2.3		// uses TFmode long double - for new programs
__nldbl_printf@@GLIBC_2.3	// uses DFmode long double - for new programs,
				// coming from printf __REDIRECT
could work. Those would just pass an additional argument to the underlying
*printf implementation (of course on the ldbl-64-128
arches only, via macros).
Also, I wonder whether I should just add some macros to the end of each
libio/ and stdio-common/ relevant file, or move those files to
sysdeps/generic and override them in sysdeps/ieee754/ldbl-64-128.
The disadvantage of the latter would be that we'd loose CVS history.

--- libc/include/stdlib.h.jj	Tue Apr 30 12:52:49 2002
+++ libc/include/stdlib.h	Wed Jul  3 21:02:05 2002
@@ -148,6 +148,28 @@ __strtoull_l (__const char * __restrict 
   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
--- libc/math/bits/mathcalls.h.jj	Thu Nov 29 13:37:41 2001
+++ libc/math/bits/mathcalls.h	Mon Jul  1 12:56:48 2002
@@ -253,7 +253,9 @@ __MATHCALL (rint,, (_Mdouble_ __x));
 
 /* 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 __LONG_DOUBLE_MATH_OPTIONAL \
+	 || !defined __NO_LONG_DOUBLE_MATH)
 __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
 # endif
 
--- libc/math/math.h.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/math.h	Mon Jul  1 12:56:48 2002
@@ -83,9 +83,35 @@ __BEGIN_DECLS
 # undef	_Mdouble_
 # undef	__MATH_PRECNAME
 
-# if (__STDC__ - 0 || __GNUC__ - 0) && !defined __NO_LONG_DOUBLE_MATH
+# if (__STDC__ - 0 || __GNUC__ - 0) \
+     && (!defined __NO_LONG_DOUBLE_MATH \
+	 || defined __LONG_DOUBLE_MATH_OPTIONAL)
+#ifdef __NO_LONG_DOUBLE_MATH
+
+# ifdef __USE_ISOC99 
+extern _Mfloat_ __nexttowardfd (_Mfloat_ __x, long double __y)
+					__attribute__ ((__const__)) __THROW;
+#  ifdef __REDIRECT
+extern _Mfloat_ __REDIRECT (nexttowardf, (_Mfloat_ __x, long double __y),
+			    __nexttowardfd) __attribute__ ((__const__)) __THROW;
+extern _Mdouble_ __REDIRECT (nexttoward, (_Mdouble_ __x, long double __y),
+			     nextafter) __attribute__ ((__const__)) __THROW;
+#  else
+#   define nexttowardf __nexttowardfd
+#   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
--- libc/math/Makefile.jj	Sat Mar 23 11:50:41 2002
+++ libc/math/Makefile	Wed Jul  3 19:32:37 2002
@@ -68,6 +68,7 @@ libm-routines = $(strip $(libm-support) 
 long-m-routines = $(patsubst %_rl,%l_r,$(libm-calls:=l))
 long-m-support = t_sincosl k_sincosl
 long-m-yes = $(long-m-routines) $(long-m-support)
+long-m-optional = $(long-m-yes)
 distribute += $(long-m-yes:=.c)
 
 # These functions are in libc instead of libm because __printf_fp
@@ -77,6 +78,7 @@ calls = s_isinf s_isnan s_finite s_copys
 	s_signbit
 routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
 long-c-yes = $(calls:=l)
+long-c-optional = $(long-c-yes)
 distribute += $(long-c-yes:=.c)
 
 include ../Makeconfig
@@ -87,6 +89,7 @@ tests = test-matherr test-fenv atest-exp
 # We do the `long double' tests only if this data type is available and
 # distinct from `double'.
 test-longdouble-yes = test-ldouble test-ildoubl
+test-longdouble-optional = $(test-longdouble-yes)
 distribute += $(test-longdouble-yes:=.c)
 
 ifneq (no,$(PERL))
@@ -148,6 +151,14 @@ CPPFLAGS-s_lib_version.c := -D_POSIX_MOD
 math-CPPFLAGS += -D__NO_MATH_INLINES -D__LIBC_INTERNAL_MATH_INLINES
 
 ifneq ($(long-double-fcts),yes)
+ifeq ($(long-double-fcts),optional)
+# The `double' and `long double' types are the same on this machine
+# when some compiler switch is used, different when other switch is
+# used, while before it has been the same.
+# Tell the `double' code to define compatibility symbols for the `FUNCl'
+# names.
+math-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+else
 # The `double' and `long double' types are the same on this machine.
 # We won't compile the `long double' code at all.  Tell the `double' code
 # to define aliases for the `FUNCl' names.  To avoid type conflicts in
@@ -155,6 +166,7 @@ ifneq ($(long-double-fcts),yes)
 # `double' instead of `long double'.
 math-CPPFLAGS += -DNO_LONG_DOUBLE -D_Mlong_double_=double
 endif
+endif
 
 # The fdlibm code generates a lot of these warnings but is otherwise clean.
 override CFLAGS += -Wno-uninitialized
--- libc/math/complex.h.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/complex.h	Mon Jul  1 12:56:48 2002
@@ -84,7 +84,15 @@ __BEGIN_DECLS
 
 /* 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 __LONG_DOUBLE_MATH_OPTIONAL)
+# ifdef __NO_LONG_DOUBLE_MATH
+#  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
--- libc/math/cabs.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cabs.c	Wed Jul  3 21:41:20 2002
@@ -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
--- libc/math/cabsf.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cabsf.c	Wed Jul  3 21:41:20 2002
@@ -1,29 +0,0 @@
-/* Return the complex absolute value of float 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>
-
-float
-__cabsf (float _Complex z)
-{
-  return __hypotf (__real__ z, __imag__ z);
-}
-weak_alias (__cabsf, cabsf)
--- libc/math/cabsl.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cabsl.c	Wed Jul  3 21:41:20 2002
@@ -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)
--- libc/math/carg.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/carg.c	Wed Jul  3 21:41:20 2002
@@ -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
--- libc/math/cargf.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cargf.c	Wed Jul  3 21:41:20 2002
@@ -1,29 +0,0 @@
-/* Compute argument of complex float 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>
-
-float
-__cargf (__complex__ float x)
-{
-  return __atan2f (__imag__ x, __real__ x);
-}
-weak_alias (__cargf, cargf)
--- libc/math/cargl.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cargl.c	Wed Jul  3 21:41:21 2002
@@ -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)
--- libc/math/cimag.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cimag.c	Wed Jul  3 21:41:21 2002
@@ -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
--- libc/math/cimagf.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cimagf.c	Wed Jul  3 21:41:21 2002
@@ -1,28 +0,0 @@
-/* Return imaginary part of complex float 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>
-
-float
-__cimagf (float _Complex z)
-{
-  return __imag__ z;
-}
-weak_alias (__cimagf, cimagf)
--- libc/math/cimagl.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/cimagl.c	Wed Jul  3 21:41:21 2002
@@ -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)
--- libc/math/conj.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/conj.c	Wed Jul  3 21:41:21 2002
@@ -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
--- libc/math/conjf.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/conjf.c	Wed Jul  3 21:41:21 2002
@@ -1,28 +0,0 @@
-/* Return complex conjugate of complex float 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>
-
-float _Complex
-__conjf (float _Complex z)
-{
-  return ~z;
-}
-weak_alias (__conjf, conjf)
--- libc/math/conjl.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/conjl.c	Wed Jul  3 21:41:21 2002
@@ -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)
--- libc/math/creal.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/creal.c	Wed Jul  3 21:41:21 2002
@@ -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
--- libc/math/crealf.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/crealf.c	Wed Jul  3 21:41:21 2002
@@ -1,28 +0,0 @@
-/* Return real part of complex float 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>
-
-float
-__crealf (float _Complex z)
-{
-  return __real__ z;
-}
-weak_alias (__crealf, crealf)
--- libc/math/creall.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/math/creall.c	Wed Jul  3 21:41:21 2002
@@ -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)
--- libc/misc/efgcvt.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/misc/efgcvt.c	Wed Jul  3 21:30:11 2002
@@ -1,5 +1,5 @@
 /* Compatibility functions for floating point formatting.
-   Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1999, 2002 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
@@ -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,30 +45,33 @@
 #  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)
 #define FCVT_BUFPTR APPEND (FUNC_PREFIX, fcvt_bufptr)
 #define ECVT_BUFFER APPEND (FUNC_PREFIX, ecvt_buffer)
 
-
 static char FCVT_BUFFER[MAXDIG];
 static char ECVT_BUFFER[MAXDIG];
 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 +79,26 @@ APPEND (FUNC_PREFIX, fcvt) (value, ndigi
 	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;
@@ -112,3 +116,27 @@ free_mem (void)
 }                  
 
 text_set_element (__libc_subfreeres, free_mem);
+
+#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);
--- libc/misc/efgcvt_r.c.jj	Thu Aug 23 18:48:30 2001
+++ libc/misc/efgcvt_r.c	Wed Jul  3 21:30:58 2002
@@ -1,5 +1,6 @@
 /* Compatibility functions for floating point formatting, reentrant versions.
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+   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,6 +26,7 @@
 #include <math.h>
 #include <stdlib.h>
 #include <sys/param.h>
+#include <shlib-compat.h>
 
 #ifndef FLOAT_TYPE
 # define FLOAT_TYPE double
@@ -43,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 FLOOR APPEND(floor, FLOAT_NAME_EXT)
 #define FABS APPEND(fabs, FLOAT_NAME_EXT)
@@ -55,7 +61,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;
@@ -153,7 +159,7 @@ APPEND (FUNC_PREFIX, fcvt_r) (value, ndi
 }
 
 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;
@@ -205,10 +211,33 @@ APPEND (FUNC_PREFIX, ecvt_r) (value, ndi
       *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;
 }
+
+#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);
--- libc/stdlib/stdlib.h.jj	Wed Nov 21 13:32:34 2001
+++ libc/stdlib/stdlib.h	Mon Jul  1 12:56:48 2002
@@ -31,6 +31,7 @@
 # define	__need_NULL
 #endif
 #include <stddef.h>
+#include <bits/wordsize.h>
 
 __BEGIN_DECLS
 
@@ -155,8 +156,18 @@ extern double strtod (__const char *__re
 extern float strtof (__const char *__restrict __nptr,
 		     char **__restrict __endptr) __THROW;
 
+# if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
+#  ifdef __REDIRECT
+extern long double __REDIRECT (strtold, (__const char *__restrict __nptr,
+					 char **__restrict __endptr) __THROW,
+			       strtod);
+#  else
+#   define strtold strtod
+#  endif
+# else
 extern long double strtold (__const char *__restrict __nptr,
 			    char **__restrict __endptr) __THROW;
+# endif
 #endif
 
 /* Convert a string to a long integer.  */
@@ -238,9 +249,20 @@ extern double __strtod_l (__const char *
 extern float __strtof_l (__const char *__restrict __nptr,
 			 char **__restrict __endptr, __locale_t __loc) __THROW;
 
+# if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
+#  ifdef __REDIRECT
+extern long double __REDIRECT (__strtold_l, (__const char *__restrict __nptr,
+					     char **__restrict __endptr,
+					     __locale_t __loc) __THROW,
+			       __strtod_l);
+#  else
+#   define __strtold_l __strtod_l
+#  endif
+# else
 extern long double __strtold_l (__const char *__restrict __nptr,
 				char **__restrict __endptr,
 				__locale_t __loc) __THROW;
+# endif
 #endif /* GNU */
 
 
@@ -253,9 +275,20 @@ extern double __strtod_internal (__const
 extern float __strtof_internal (__const char *__restrict __nptr,
 				char **__restrict __endptr, int __group)
      __THROW;
+# if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
+#  ifdef __REDIRECT
+extern long double __REDIRECT (__strtold_internal,
+			       (__const char *__restrict __nptr,
+				char **__restrict __endptr,
+				int __group) __THROW, __strtod_internal);
+#  else
+#   define __strtold_internal __strtod_internal
+#  endif
+# else
 extern long double __strtold_internal (__const char *__restrict __nptr,
 				       char **__restrict __endptr,
 				       int __group) __THROW;
+# endif
 #ifndef __strtol_internal_defined
 extern long int __strtol_internal (__const char *__restrict __nptr,
 				   char **__restrict __endptr,
@@ -314,11 +347,13 @@ strtof (__const char *__restrict __nptr,
 {
   return __strtof_internal (__nptr, __endptr, 0);
 }
+#  if !defined __LONG_DOUBLE_MATH_OPTIONAL || !defined __NO_LONG_DOUBLE_MATH
 extern __inline long double
 strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
 {
   return __strtold_internal (__nptr, __endptr, 0);
 }
+#  endif
 # endif
 
 # ifdef __USE_BSD
@@ -741,14 +776,6 @@ extern char *gcvt (double __value, int _
 
 
 # ifdef __USE_MISC
-/* Long double versions of above functions.  */
-extern char *qecvt (long double __value, int __ndigit,
-		    int *__restrict __decpt, int *__restrict __sign) __THROW;
-extern char *qfcvt (long double __value, int __ndigit,
-		    int *__restrict __decpt, int *__restrict __sign) __THROW;
-extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW;
-
-
 /* Reentrant version of the functions above which provide their own
    buffers.  */
 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
@@ -758,12 +785,53 @@ extern int fcvt_r (double __value, int _
 		   int *__restrict __sign, char *__restrict __buf,
 		   size_t __len) __THROW;
 
+/* Long double versions of above functions.  */
+#  if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
+#   ifdef __REDIRECT
+extern char *__REDIRECT (qecvt, (long double __value, int __ndigit,
+				 int *__restrict __decpt,
+				 int *__restrict __sign) __THROW, ecvt);
+extern char *__REDIRECT (qfcvt, (long double __value, int __ndigit,
+				 int *__restrict __decpt,
+				 int *__restrict __sign) __THROW, fcvt);
+extern char *__REDIRECT (qgcvt, (long double __value, int __ndigit,
+				 char *__buf) __THROW, gcvt);
+
+/* Reentrant version of the functions above which provide their own
+   buffers.  */
+extern int __REDIRECT (qecvt_r, (long double __value, int __ndigit,
+				 int *__restrict __decpt,
+				 int *__restrict __sign,
+				 char *__restrict __buf,
+				 size_t __len) __THROW, ecvt_r);
+extern int __REDIRECT (qfcvt_r, (long double __value, int __ndigit,
+				 int *__restrict __decpt,
+				 int *__restrict __sign,
+				 char *__restrict __buf,
+				 size_t __len) __THROW, fcvt_r);
+#   else
+#    define qecvt ecvt
+#    define qfcvt fcvt
+#    define qgcvt gcvt
+#    define qecvt_r ecvt_r
+#    define qfcvt_r fcvt_r
+#   endif /* no __REDIRECT */
+#  else
+extern char *qecvt (long double __value, int __ndigit,
+		    int *__restrict __decpt, int *__restrict __sign) __THROW;
+extern char *qfcvt (long double __value, int __ndigit,
+		    int *__restrict __decpt, int *__restrict __sign) __THROW;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW;
+
+/* Reentrant version of the functions above which provide their own
+   buffers.  */
 extern int qecvt_r (long double __value, int __ndigit,
 		    int *__restrict __decpt, int *__restrict __sign,
 		    char *__restrict __buf, size_t __len) __THROW;
 extern int qfcvt_r (long double __value, int __ndigit,
 		    int *__restrict __decpt, int *__restrict __sign,
 		    char *__restrict __buf, size_t __len) __THROW;
+#  endif /* no double = long double compatibility */
 # endif	/* misc */
 #endif	/* use MISC || use X/Open Unix */
 
--- libc/sysdeps/generic/w_j0l.c.jj	Sat Feb 17 02:43:10 2001
+++ libc/sysdeps/generic/w_j0l.c	Mon Jul  1 12:56:48 2002
@@ -26,9 +26,9 @@ static char rcsid[] = "$NetBSD: $";
 #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 @@ static char rcsid[] = "$NetBSD: $";
 	    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 @@ static char rcsid[] = "$NetBSD: $";
 	    return z;
 #endif
 }
+
+weak_alias (__y0l, y0l)
--- libc/sysdeps/generic/w_j1l.c.jj	Sat Feb 17 02:43:24 2001
+++ libc/sysdeps/generic/w_j1l.c	Mon Jul  1 12:56:48 2002
@@ -26,9 +26,9 @@ static char rcsid[] = "$NetBSD: $";
 #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 @@ static char rcsid[] = "$NetBSD: $";
 	    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 @@ static char rcsid[] = "$NetBSD: $";
 	    return z;
 #endif
 }
+weak_alias (__y1l, y1l)
--- libc/sysdeps/generic/w_jnl.c.jj	Sat Feb 17 02:43:38 2001
+++ libc/sysdeps/generic/w_jnl.c	Mon Jul  1 12:56:48 2002
@@ -48,9 +48,9 @@ static char rcsid[] = "$NetBSD: $";
 #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 @@ static char rcsid[] = "$NetBSD: $";
 	    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 @@ static char rcsid[] = "$NetBSD: $";
 	    return z;
 #endif
 }
+weak_alias (__ynl, ynl)
--- libc/sysdeps/generic/cabs.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cabs.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/generic/cabsf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cabsf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,29 @@
+/* Return the complex absolute value of float 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>
+
+float
+__cabsf (float _Complex z)
+{
+  return __hypotf (__real__ z, __imag__ z);
+}
+weak_alias (__cabsf, cabsf)
--- libc/sysdeps/generic/cabsl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cabsl.c	Mon Jul  1 12:56:48 2002
@@ -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)
--- libc/sysdeps/generic/carg.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/carg.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/generic/cargf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cargf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,29 @@
+/* Compute argument of complex float 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>
+
+float
+__cargf (__complex__ float x)
+{
+  return __atan2f (__imag__ x, __real__ x);
+}
+weak_alias (__cargf, cargf)
--- libc/sysdeps/generic/cargl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cargl.c	Mon Jul  1 12:56:48 2002
@@ -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)
--- libc/sysdeps/generic/cimag.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cimag.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/generic/cimagf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cimagf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,28 @@
+/* Return imaginary part of complex float 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>
+
+float
+__cimagf (float _Complex z)
+{
+  return __imag__ z;
+}
+weak_alias (__cimagf, cimagf)
--- libc/sysdeps/generic/cimagl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/cimagl.c	Mon Jul  1 12:56:48 2002
@@ -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)
--- libc/sysdeps/generic/conj.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/conj.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/generic/conjf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/conjf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,28 @@
+/* Return complex conjugate of complex float 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>
+
+float _Complex
+__conjf (float _Complex z)
+{
+  return ~z;
+}
+weak_alias (__conjf, conjf)
--- libc/sysdeps/generic/conjl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/conjl.c	Mon Jul  1 12:56:48 2002
@@ -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)
--- libc/sysdeps/generic/creal.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/creal.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/generic/crealf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/crealf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,28 @@
+/* Return real part of complex float 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>
+
+float
+__crealf (float _Complex z)
+{
+  return __real__ z;
+}
+weak_alias (__crealf, crealf)
--- libc/sysdeps/generic/creall.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/generic/creall.c	Mon Jul  1 12:56:48 2002
@@ -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)
--- libc/sysdeps/ieee754/ldbl-96/s_erfl.c.jj	Wed Jan 30 18:03:35 2002
+++ libc/sysdeps/ieee754/ldbl-96/s_erfl.c	Mon Jul  1 12:56:48 2002
@@ -323,10 +323,6 @@ __erfl (x)
 }
 
 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)
@@ -438,7 +434,3 @@ weak_alias (__erf, erfl)
 }
 
 weak_alias (__erfcl, erfcl)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__erfc, __erfcl)
-weak_alias (__erfc, erfcl)
-#endif
--- libc/sysdeps/ieee754/ldbl-96/s_nexttoward.c.jj	Mon Jun 25 10:34:49 2001
+++ libc/sysdeps/ieee754/ldbl-96/s_nexttoward.c	Mon Jul  1 12:56:48 2002
@@ -92,7 +92,3 @@ static char rcsid[] = "$NetBSD: $";
 	return x;
 }
 weak_alias (__nexttoward, nexttoward)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__nexttoward, __nexttowardl)
-weak_alias (__nexttoward, nexttowardl)
-#endif
--- libc/sysdeps/ieee754/ldbl-64-128/cabs.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/cabs.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/cabsl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/cabsl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/carg.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/carg.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/cargl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/cargl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/cimag.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/cimag.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/cimagl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/cimagl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/conj.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/conj.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/conjl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/conjl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/creal.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/creal.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/creall.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/creall.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/math_ldbl_opt.h.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/math_ldbl_opt.h	Mon Jul  1 16:12:02 2002
@@ -0,0 +1,23 @@
+#include <math.h>
+#include "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
--- libc/sysdeps/ieee754/ldbl-64-128/s_asinh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_asinh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_asinhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_asinhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_atan.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_atan.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_atanl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_atanl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cacos.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cacos.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_cacosh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cacosh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_cacoshl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cacoshl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cacosl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cacosl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_casin.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_casin.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_casinh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_casinh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_casinhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_casinhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_casinl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_casinl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_catan.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_catan.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_catanh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_catanh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_catanhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_catanhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_catanl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_catanl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cbrt.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cbrt.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ccos.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ccos.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_ccosh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ccosh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_ccoshl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ccoshl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ccosl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ccosl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ceil.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ceil.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_ceill.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ceill.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cexp.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cexp.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_cexpl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cexpl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_clog.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_clog.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_clog10.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_clog10.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_clog10l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_clog10l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_clogl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_clogl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_copysign.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_copysign.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_copysign.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_copysignl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_copysignl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_copysignl.c>
+long_double_symbol (libc, __copysignl, copysignl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cosl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cosl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cpow.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cpow.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_cpowl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cpowl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_cproj.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cproj.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_cprojl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_cprojl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_csin.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_csin.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_csinh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_csinh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_csinhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_csinhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_csinl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_csinl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_csqrt.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_csqrt.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_csqrtl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_csqrtl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ctan.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ctan.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_ctanh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ctanh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_ctanhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ctanhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ctanl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ctanl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_erf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_erf.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_erfl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_erfl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_expm1.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_expm1.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_expm1l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_expm1l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_fabs.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fabs.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_fabsl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fabsl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_fdim.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fdim.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_fdiml.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fdiml.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_finite.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_finite.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_finite.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __finite, finitel, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_finitel.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_finitel.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_finitel.c>
+long_double_symbol (libm, __finitel, finitel);
--- libc/sysdeps/ieee754/ldbl-64-128/s_floor.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_floor.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_floorl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_floorl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_fma.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fma.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_fmal.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fmal.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_fmax.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fmax.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_fmaxl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fmaxl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_fmin.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fmin.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_fminl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_fminl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_frexp.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_frexp.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_frexp.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __frexp, frexpl, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_frexpl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_frexpl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_frexpl.c>
+long_double_symbol (libm, __frexpl, frexpl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ilogb.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ilogb.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_ilogbl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ilogbl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_isinf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_isinf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_isinf.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isinf, isinfl, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_isinfl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_isinfl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_isinfl.c>
+long_double_symbol (libc, __isinfl, isinfl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_isnan.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_isnan.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_isnan.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libm, __isnan, isnanl, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_isnanl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_isnanl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_isnanl.c>
+long_double_symbol (libm, __isnanl, isnanl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_ldexp.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ldexp.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/generic/s_ldexp.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __ldexp, ldexpl, GLIBC_2_1);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_ldexpl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_ldexpl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/generic/s_ldexpl.c>
+long_double_symbol (libc, __ldexpl, ldexpl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_llrint.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_llrint.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_llrintl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_llrintl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_llround.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_llround.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_llroundl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_llroundl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_log1p.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_log1p.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_log1pl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_log1pl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_logb.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_logb.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_logbl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_logbl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_lrint.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_lrint.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_lrintl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_lrintl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_lround.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_lround.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_lroundl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_lroundl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_modf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_modf.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_modf.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_modfl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_modfl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_modfl.c>
+long_double_symbol (libm, __modfl, modfl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_nan.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nan.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_nanl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nanl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_nearbyint.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nearbyint.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_nextafter.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nextafter.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c	Mon Jul  1 12:56:48 2002
@@ -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 __nexttowardfd(float x, double y);
+
+float __nexttowardfd(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, __nexttowardfd, nexttowardf, GLIBC_2_1);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_remquo.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_remquo.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_remquol.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_remquol.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_rint.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_rint.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_rintl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_rintl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_round.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_round.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_roundl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_roundl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_scalbln.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_scalbln.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_scalbln.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __scalbln, scalblnl, GLIBC_2_1);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_scalblnl.c>
+long_double_symbol (libc, __scalblnl, scalblnl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_scalbn.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_scalbn.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/ieee754/dbl-64/s_scalbn.c>
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __scalbn, scalbnl, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+#include "math_ldbl_opt.h"
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_scalbnl.c>
+long_double_symbol (libc, __scalbnl, scalbnl);
--- libc/sysdeps/ieee754/ldbl-64-128/s_significand.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_significand.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_significandl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_significandl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_sin.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_sin.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_sincos.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_sincos.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_sincosl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_sincosl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_sinl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_sinl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_tan.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_tan.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_tanh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_tanh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_tanhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_tanhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_tanl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_tanl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/s_trunc.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_trunc.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/s_truncl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/s_truncl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_acos.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_acos.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_acosh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_acosh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_acoshl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_acoshl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_acosl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_acosl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_asin.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_asin.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_asinl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_asinl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_atan2.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_atan2.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_atan2l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_atan2l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_atanh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_atanh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_atanhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_atanhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_cosh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_cosh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_coshl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_coshl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_drem.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_drem.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_dreml.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_dreml.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_exp.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_exp.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_exp10.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_exp10.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,6 @@
+#include "math_ldbl_opt.h"
+#include <sysdeps/generic/w_exp10.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __exp10, exp10l, GLIBC_2_0);
+compat_symbol (libm, __pow10, pow10l, GLIBC_2_0);
+#endif
--- libc/sysdeps/ieee754/ldbl-64-128/w_exp10l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_exp10l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_exp2.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_exp2.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_exp2l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_exp2l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_expl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_expl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_fmod.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_fmod.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_fmodl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_fmodl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_hypot.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_hypot.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_hypotl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_hypotl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_j0.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_j0.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_j0l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_j0l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_j1.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_j1.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_j1l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_j1l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_jn.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_jn.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_jnl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_jnl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_lgamma.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_lgamma.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_lgamma_r.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_lgamma_r.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_lgammal.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_lgammal.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_lgammal_r.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_lgammal_r.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_log.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_log.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_log10.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_log10.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_log10l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_log10l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_log2.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_log2.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_log2l.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_log2l.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_logl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_logl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_pow.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_pow.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_powl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_powl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_remainder.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_remainder.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_remainderl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_remainderl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_scalb.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_scalb.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_scalbl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_scalbl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_sinh.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_sinh.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_sinhl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_sinhl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_sqrt.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_sqrt.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_sqrtl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_sqrtl.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/ieee754/ldbl-64-128/w_tgamma.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_tgamma.c	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/ieee754/ldbl-64-128/w_tgammal.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/ieee754/ldbl-64-128/w_tgammal.c	Mon Jul  1 12:56:48 2002
@@ -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);
--- libc/sysdeps/sparc/fpu/bits/mathdef.h.jj	Thu Aug 23 18:50:19 2001
+++ libc/sysdeps/sparc/fpu/bits/mathdef.h	Mon Jul  1 12:56:48 2002
@@ -64,14 +64,3 @@ typedef double double_t;
 # 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
--- libc/sysdeps/sparc/fpu/bits/mathinline.h.jj	Sat Jun  8 22:45:06 2002
+++ libc/sysdeps/sparc/fpu/bits/mathinline.h	Mon Jul  1 12:56:48 2002
@@ -30,23 +30,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)				      \
+      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 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)				      \
+	{								      \
+	  float __x = (x); float __y = (y);				      \
+	  __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))
@@ -59,22 +88,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; }))
@@ -121,11 +150,23 @@ __signbit (double __x) __THROW
   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
 __signbitl (long double __x) __THROW
 {
   return __signbit ((double)__x);
 }
+     #endif /* __NO_LONG_DOUBLE_MATH */
 
 #   else /* sparc64 */
 
@@ -174,6 +215,13 @@ sqrtl (long double __x) __THROW
   _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 */
@@ -205,6 +253,13 @@ __ieee754_sqrtl (long double __x)
   _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+ */
--- libc/sysdeps/sparc/sparc32/fpu/e_sqrtl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/fpu/e_sqrtl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1 @@
+/* __ieee754_sqrtl is defined in q_sqrt.c.  */
--- libc/sysdeps/sparc/sparc32/fpu/s_fabsf.S.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/fpu/s_fabsf.S	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,28 @@
+/* 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)
--- libc/sysdeps/sparc/sparc32/fpu/s_fabs.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/fpu/s_fabs.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+double __fabs (double x)
+{
+  return __builtin_fabs (x);
+}
+weak_alias (__fabs, fabs)
--- libc/sysdeps/sparc/sparc32/fpu/s_fabsl.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/fpu/s_fabsl.c	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,5 @@
+long double __fabsl (long double x)
+{
+  return __builtin_fabsl (x);
+}
+weak_alias (__fabsl, fabsl)
--- libc/sysdeps/sparc/sparc32/soft-fp/Makefile.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/Makefile	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/sparc/sparc32/soft-fp/q_div.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_div.c	Mon Jul  1 12:56:48 2002
@@ -35,5 +35,5 @@ long double _Q_div(const long double a, 
   FP_DIV_Q(C, A, B);
   FP_PACK_Q(c, C);
   FP_HANDLE_EXCEPTIONS;
-  return long double;
+  return c;
 }
--- libc/sysdeps/sparc/sparc32/soft-fp/Versions.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/Versions	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,8 @@
+libc {
+  GLIBC_2.3 {
+    _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;
+  }
+}
--- libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h	Mon Jul  1 12:56:48 2002
@@ -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
@@ -202,20 +203,11 @@ do {								\
        * We need to clear cexc bits if any.			\
        */							\
       extern unsigned long long ___Q_numbers[];			\
-      __asm__ __volatile__("
-      	ldd [%0], %%f30
-      	faddd %%f30, %%f30, %%f30
-      	" : : "r" (___Q_numbers) : "f30");			\
+      __asm__ __volatile__(					\
+	"ldd [%0], %%f30\n\t"					\
+	"faddd %%f30, %%f30, %%f30\n\t"				\
+      	: : "r" (___Q_numbers) : "f30");			\
     }								\
   else								\
-    {								\
-      __asm__ __volatile__("
-        mov %0, %%o0
-        mov %%o7, %%g1
-        call ___Q_simulate_exceptions
-         mov %%g1, %%o7
-        " : : "r" (_fex) :					\
-        "g1", "g2", "g3", "g4", "g5", "o0", 			\
-        "o1", "o2", "o3", "o4", "o5", "cc");			\
-    }								\
+    ___Q_simulate_exceptions(_fex);				\
 } while (0)
--- libc/sysdeps/sparc/sparc32/soft-fp/q_qtoui.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoui.c	Wed Jul  3 21:41:35 2002
@@ -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;
-}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_qtou.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtou.c	Mon Jul  1 12:56:48 2002
@@ -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;
+}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c	Mon Jul  1 12:56:48 2002
@@ -36,3 +36,4 @@ long double _Q_sqrt(const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
+strong_alias (_Q_sqrt, __ieee754_sqrtl);
--- libc/sysdeps/sparc/sparc32/soft-fp/q_qtoux.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoux.c	Wed Jul  3 21:41:35 2002
@@ -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;
-}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_qtoull.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoull.c	Mon Jul  1 12:56:48 2002
@@ -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;
+}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_qtox.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtox.c	Wed Jul  3 21:41:35 2002
@@ -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;
-}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_qtoll.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_qtoll.c	Mon Jul  1 12:56:48 2002
@@ -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;
+}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_uitoq.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_uitoq.c	Wed Jul  3 21:41:35 2002
@@ -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;
-}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_utoq.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_utoq.c	Mon Jul  1 12:56:48 2002
@@ -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;
+}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_xtoq.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_xtoq.c	Wed Jul  3 21:41:36 2002
@@ -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;
-}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_lltoq.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_lltoq.c	Mon Jul  1 12:56:48 2002
@@ -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;
+}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c.jj	Thu Aug 23 18:50:21 2001
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c	Wed Jul  3 21:41:36 2002
@@ -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;
-}
--- libc/sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c	Mon Jul  1 12:56:48 2002
@@ -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;
+}
--- libc/sysdeps/sparc/sparc32/Implies.jj	Fri Sep  8 17:51:35 2000
+++ libc/sysdeps/sparc/sparc32/Implies	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h.jj	Thu Aug 23 18:50:27 2001
+++ libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h	Mon Jul  1 12:56:48 2002
@@ -0,0 +1,20 @@
+/* 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
+#  endif
+# endif
+#endif
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile.jj	Tue Apr 18 08:13:27 2000
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile	Wed Jul  3 19:34:59 2002
@@ -1,9 +1,22 @@
+# 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 = optional
+long-double-fcts-ver = GLIBC_2_3
+
 asm-CPPFLAGS = -D__ASSEMBLY__
 ASFLAGS-.os += -fPIC
 LD += -melf32_sparc
 
+sysdep-CFLAGS += -mlong-double-128
+
 ifeq ($(subdir),misc)
 sysdep_routines += setfsgid setfsuid
+misc-CPPFLAGS += -DLONG_DOUBLE_OPTIONAL=$(long-double-fcts-ver)
+endif
+
+ifeq ($(subdir),math)
+libm-routines += s_nexttowardfd
 endif
 
 # When I get this to work, this is the right thing
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure.in.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure.in	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/configure	Mon Jul  1 12:56:48 2002
@@ -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
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/Versions.jj	Wed Nov 21 13:33:00 2001
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/Versions	Wed Jul  3 21:32:05 2002
@@ -17,4 +17,31 @@ libc {
     # s*
     scandir64;
   }
+  GLIBC_2.3 {
+    # IEEE quad long double functions (older symver is for
+    # IEEE double long double).
+    ldexpl; copysignl; finitel; frexpl; isinfl; isnanl; modfl;
+    scalblnl; scalbnl;
+    qecvt; qfcvt; qgcvt; qecvt_r; qfcvt_r;
+  }
+}
+libm {
+  GLIBC_2.3 {
+    # IEEE quad long double functions (older symver is for
+    # IEEE double 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; lgamma_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; 
+
+    __nexttowardfd;
+  }
 }
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/Implies.jj	Mon Jul  1 12:56:48 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/Implies	Mon Jul  1 12:56:48 2002
@@ -0,0 +1 @@
+ieee754/ldbl-64-128
--- libc/Versions.def.jj	Sat Mar 23 11:50:04 2002
+++ libc/Versions.def	Mon Jul  1 12:56:48 2002
@@ -15,6 +15,7 @@ libc {
   GLIBC_2.2.4
   GLIBC_2.2.5
   GLIBC_2.2.6
+  GLIBC_2.3
 %ifdef USE_IN_LIBIO
   HURD_CTHREADS_0.3
 %endif
@@ -35,6 +36,7 @@ libm {
   GLIBC_2.1
   GLIBC_2.2
   GLIBC_2.2.3
+  GLIBC_2.3
 }
 libnsl {
   GLIBC_2.0

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]