NetBSD 6.1.5 doesn't have ldexpl in math.h
Hal Murray
hmurray at megapathdsl.net
Thu Sep 7 08:37:30 UTC 2017
devel at ntpsec.org said:
> ldexpl() is POSIX 2008 and ISO/IEC 9899:1999 (a.k.a. C99). =20
> Not supporting C99 is pretty lame. NTPsec specifically requires C99
> support.
> So clearly a NetBSD problem.
Thanks.
Looks like they tried but didn't get everything. The man page says:
The described functions conform to ISO/IEC 9899:1999 (``ISO C99'').
Of course, that doesn't say the whole system confirms to C99, just ldexp and
ldexpf, but I'll interpret it as meaning that they tried to cover the whole
C99.
> Maybe ldexpl() is in math.h, but if behind an #ifdef?
Nope. grep doesn't find it.
> Got a workaround?
This seems to build and check:
#include <math.h> /* ldexpl() */
#ifndef ldexpl
/* Missing in NetBSD 6.1.5 */
#define ldexpl ldexp
#endif
Will that do the right conversions between double and long double?
Do we want to work with old but still supported NetBSD or be sticky about
requiring C99?
Eric: Do we have a list of OSes and hardware where ntpsec is known to build
and work?
----------
grep does find this in /usr/include/g++/cmath
inline long double
ldexp(long double __x, int __exp)
{ return __builtin_ldexpl(__x, __exp); }
I screwed around trying to make something like that work and didn't find a
recipe. It might be possible, but it requires some skills I don't have.
I'll itemize what I tried if anybody is interested.
--
These are my opinions. I hate spam.
More information about the devel
mailing list