Can't build on Solaris 2.6

Michel Decima michel.decima@cnet.francetelecom.fr
Tue Apr 11 06:53:00 GMT 2000


Hello,

  I have some problems too with complex support on a Solaris2.6. The
  bootstrap fails with an internal compiler error (see below).

  I'm using snapshot egcs-20000410 + libstdc++-2.90.8, with the 
  flags :
   --enable-libstdcxx-v3
   --with-gnu-as
   --with-gnu-ld
   --enable-threads=posix
   --enable-namespaces

  So, I think it is a gcc bug :-(

/opt/gnu/build/egcs-build/gcc/xgcc -B/opt/gnu/build/egcs-build/gcc/ 
-B/opt/gnu/e
gcs/sparc-sun-solaris2.6/bin/ -DHAVE_CONFIG_H -I. 
-I../../../../egcs-20000410/li
bstdc++-v3/math -I.. -I.. -I/opt/gnu/egcs/include -g -O2 -c  -fPIC -DPIC 
../../.
./../egcs-20000410/libstdc++-v3/math/c_log.c -o .libs/c_log.lo
../../../../egcs-20000410/libstdc++-v3/math/c_log.c: In function `c_log':
../../../../egcs-20000410/libstdc++-v3/math/c_log.c:63: Internal compiler 
error
in `insert_save', at caller-save.c:656
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make[3]: *** [c_log.lo] Error 1
make[3]: Leaving directory 
`/opt/gnu/build/egcs-build/sparc-sun-solaris2.6/libst
dc++-v3/math'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory 
`/opt/gnu/build/egcs-build/sparc-sun-solaris2.6/libst
dc++-v3'
make[1]: *** [all-recursive-am] Error 2
make[1]: Leaving directory 
`/opt/gnu/build/egcs-build/sparc-sun-solaris2.6/libst
dc++-v3'
make: *** [all-target-libstdc++-v3] Error 2


file libstdc++-v3/math/c_log.c :

__complex__ double
c_log (__complex__ double x)
{
  __complex__ double result;

  if (x == 0.0)
    {
      __imag__ result = signbit (__real__ x) ? M_PI : 0.0;
      __imag__ result = copysign (__imag__ result, __imag__ x);
      __real__ result = -1.0 / fabs (__real__ x);
    }
  else if (__real__ x == __real__ x && __imag__ x == __imag__ x)
    {
      __real__ result = log (hypot (__real__ x, __imag__ x));
      __imag__ result = atan2 (__imag__ x, __real__ x);
    }
  else
    {
      __imag__ result = NAN;
      if (INFINITE_P (__real__ x) || INFINITE_P (__imag__ x))
	       __real__ result = HUGE_VAL;
      else
	       __real__ result = NAN;
    }

  return result;
}                          # line 63


More information about the Libstdc++ mailing list