From a posting @toolchain by Dimitry Andric:
I took the original gcc 4.2.1 release tarball, modified a few autoconf
related scripts to cope with "freebsd10.0" being the current version,
and did a full three-stage build, though only targeting C and C++.
The libstdc++ configure script in 4.2.1 does detect a few new features
that are not in our shipping config.h, but is does not detect any
different settings regarding C99.
The reason it does not turn on _GLIBCXX_USE_C99, is that not all of the
C99 requirements are met, specifically <complex.h> checks fail:
checking for ISO C99 support in <math.h>... yes
checking for ISO C99 support in <complex.h>... no
checking for ISO C99 support in <stdio.h>... yes
checking for ISO C99 support in <stdlib.h>... yes
checking for ISO C99 support in <wchar.h>... yes
checking for fully enabled ISO C99 support... no
The exact failure testcase goes like this:
configure:7435: checking for ISO C99 support in <complex.h>
configure:7492: /home/dim/obj/gcc-4.2.1/./gcc/xgcc -shared-libgcc -B/home/dim/obj/gcc-4.2.1/./gcc -nostdinc++ -L/home/dim/obj/gcc-4.2.1/i386-unknown-freebsd10.0/libstdc++-v3/src -L/home/dim/obj/gcc-4.2.1/i386-unknown-freebsd10.0/libstdc++-v3/src/.libs -B/home/dim/ins/gcc-4.2.1/i386-unknown-freebsd10.0/bin/ -B/home/dim/ins/gcc-4.2.1/i386-unknown-freebsd10.0/lib/ -isystem /home/dim/ins/gcc-4.2.1/i386-unknown-freebsd10.0/include -isystem /home/dim/ins/gcc-4.2.1/i386-unknown-freebsd10.0/sys-include -c -g -O2 conftest.cc >&5
conftest.cc: In function 'int main()':
conftest.cc:41: error: 'clogf' was not declared in this scope
conftest.cc:47: error: 'cpowf' was not declared in this scope
conftest.cc:54: error: 'clog' was not declared in this scope
conftest.cc:60: error: 'cpow' was not declared in this scope
conftest.cc:64: error: 'ccosl' was not declared in this scope
conftest.cc:65: error: 'ccoshl' was not declared in this scope
conftest.cc:66: error: 'cexpl' was not declared in this scope
conftest.cc:67: error: 'clogl' was not declared in this scope
conftest.cc:68: error: 'csinl' was not declared in this scope
conftest.cc:69: error: 'csinhl' was not declared in this scope
conftest.cc:71: error: 'ctanl' was not declared in this scope
conftest.cc:72: error: 'ctanhl' was not declared in this scope
conftest.cc:73: error: 'cpowl' was not declared in this scope
configure:7498: $? = 1
So until we actually implement and declare those functions, we should
probably not enable _GLIBCXX_USE_C99_COMPLEX and _GLIBCXX_USE_C99.
Just a reminder (I know .. shutup and code).
Re-assign to freebsd-numerics@
They are known to be working on it.
It looks like Dragonfly-, Net- and OpenBSD already have implementations of the missing functions. Maybe these could be imported.
(In reply to seschwar from comment #2)
> It looks like Dragonfly-, Net- and OpenBSD already have
> implementations of the missing functions. Maybe these
> could be imported.
These would need to be tested for correctness especially near
branch points/cuts and exception values (Inf, NaN, subnormal).
I Haven't checked recently, but I'll offer that these
functions have a number of problems due to the use of I from
For bugs that match the following
- Status Is In progress
- Untouched since 2018-01-01.
- Affects Base System OR Documentation
Reset to open status.
I did a quick pass but if you are getting this email it might be worthwhile to double check to see if this bug ought to be closed.
*** Bug 221341 has been marked as a duplicate of this bug. ***
It seems like the missing functions have been committed in r333577 (clog(3), clogf(3), and clog(3)) and more recently r336299 (ld80/ld128 powl, cpow, cpowf, cpowl).
The later come from OpenBSD and were not committed in the past as their quality is not ideal, but for now they are probably an acceptable starting point while something better is found.
r336351 updated the configuration to start using the C99 math functions in legacy gcc-4.2.1. Any new issues should be reported in a new PR.