Heya folks, new contributor here. I work at Google on the Asylo project for enclave development. I’m in the process of switching our toolchain over to clang from GCC, and I’ve found that I have some minor problems doing so with newlib as our libc implementation.
Mainly, long double math operations are not supported by newlib. In libstdc++, if long double functions weren’t defined in libc (#ifndef HAVE_HYPOTL, etc, …), it’d define them itself. That’s not the case in libc++, so I was wondering what y’all thought would be the best course of action.
Mainly, should libc++ act like libstdc++ and define its own long double implementations of math operations, or should it not add the functions to the std:: namespace if they’re not available?
If not adding them, then the following headers would guard given declarations within _LIBCPP_HAS_NO_LONG_DOUBLE/#endif:
#include :
using ::nexttoward;
using ::nexttowardf;
using ::acosl;
[…contiguously down to…]
using ::truncl;
inline _LIBCPP_INLINE_VISIBILITY long double hypot( long double x, long double y, long double z ) { return sqrt(xx + yy + z*z); }
#include :
using ::strtold;
#include :
[…] long double __do_strtod […]
#include <math.h>:
[…everything that mentions long double in its prototype…]
I can produce a patch quickly if this is an acceptable change to folks.
Regards,
-Dionna Glaze, PhD (she/her)