Fix for PR 15235 libgfortran doesn't build on Solaris

Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Tue May 18 18:15:00 GMT 2004


Tobias Schlüter writes:

> And here's the patch which uses isnan, to be applied in libgfortran/io.
> I verified that NaNs are now also handled correctly.
>
> Could you please try how far you get with it?

The situation is somewhat mixed now:

* On Solaris 10, most execution tests fail due to link failures:
  __builtin_isnan is missing.  This is a bug in Sun's <iso/math_c99.h>
  which doesn't work with non-Sun C99 compilers.  Apart from reporting this
  to Sun, this is fixincludes material.

* On Solaris 8, this problem is gone since the system headers don't support
  C99, but I get tons of link failures nonetheless, e.g.

FAIL: gfortran.fortran-torture/execute/a_edit_1.f90 compilation,  -O0

Undefined			first referenced
 symbol  			    in file
expf                                /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
cosf                                /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
atan2f                              /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
sqrtf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
coshf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
nextafterf                          /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
sinf                                /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
round                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
scalbnf                             /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
atanf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
roundf                              /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
log10f                              /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
logf                                /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
sinhf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
acosf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
frexpf                              /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
copysignf                           /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
tanf                                /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
tanhf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
asinf                               /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
hypotf                              /amnt/figaro/volumes/obj-gcc/gcc/obj.sol2/gcc-3.5.0-20040517/8-gcc/sparc-sun-solaris2.8//libgfortran/.libs/libgfortran.so
ld: fatal: Symbol referencing errors. No output written to /vol/gcc/obj/gcc-3.5.0-20040517/8-gcc/gcc/testsuite/a_edit_1.x
collect2: ld returned 1 exit status

  As I said before, libgfortran cannot unconditionally use C99 functions
  without checking for their existance and provide an alternative.

	Rainer

-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University



More information about the Fortran mailing list