Replace hybrid libm with OpenBSD libm on vendor branch
In order to gain full c++11 support on GCC, we had to import a number
of long double functions from NetBSD, once again converting libm into
a hybrid library from a mixture of sources. As of today, FreeBSD still
doesn't have the missing functions and the PR on broken c++11 has been
lingering for months.
The OpenBSD libm is complete and maintained[1][2]. It's unmodified
sources are in vendor/OPENBSD_LIBM branch with local modifications (to
squelch gcc warnings and adjust for OS differences mainly) are applied
to the master for easy diff generation.
A dports bulk build was executing using the new math library and the
result is the ports built normally.
[1] The final two "imprecise" functions were replaced by proper long
double versions. The imprecise versions remain as older symbols
(libm has symbol versioning) so this source is additional to what
is provided in the vendor branch. (powl, tgammal)
[2] There were several DF306.0 symbols that are not present in OpenLIBM,
partially because they've been moved to libc or were always there.
In order to maintain backwards capability, copies of these functions
with new names are built into libm, and given DF306.0 versions only.
Without the version suffix, these past functions will not link to
new programs.
- [DB] lib/libm/src/s_fdim.c