include/math.h broken

Denys Vlasenko vda.linux at googlemail.com
Sat Sep 5 19:36:56 UTC 2009


include/math.h, line 137:

# if (defined __STDC__ || defined __GNUC__) \
     && (defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT)
#  ifdef __LDBL_COMPAT
...
#  endif

#  define __MATH_maybe_libm_hidden_proto(x)
#  ifndef _Mlong_double_
#   define _Mlong_double_	long double
#  endif
#  define _Mdouble_		_Mlong_double_
#  ifdef __STDC__
#   define __MATH_PRECNAME(name,r) name##l##r
#  else
#   define __MATH_PRECNAME(name,r) name/**/l/**/r
#  endif
#  define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
#  define _Mdouble_END_NAMESPACE   __END_NAMESPACE_C99
#  include <bits/mathcalls.h>
#  undef _Mdouble_
#  undef _Mdouble_BEGIN_NAMESPACE
#  undef _Mdouble_END_NAMESPACE
#  undef __MATH_PRECNAME
#  undef __MATH_maybe_libm_hidden_proto

# endif /* __STDC__ || __GNUC__ */



defined __NO_LONG_DOUBLE_MATH
used to be
defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
at line 138.

This change excludes all long double functin defs:

# make ARCH=i386
  CC libm/nan.o
libm/nan.c:49: error: 'nanl' undeclared here (not in a function)
libm/nan.c:49: warning: type defaults to 'int' in declaration of 'nanl'
libm/nan.c:50: error: 'nanl' redeclared as different kind of symbol
libm/nan.c:49: error: previous declaration of 'nanl' was here
make: *** [libm/nan.o] Error 1


I assume somebody forgot the !:

!defined __NO_LONG_DOUBLE_MATH

I will add it. If it's wrong, let me know.
--
vda


More information about the uClibc mailing list