f77 correctness on Sparc

Brad Lucier lucier@math.purdue.edu
Mon Sep 18 11:59:00 GMT 2000


Toon Moene wrote:

> > The vast majority of the extra problems are similar; did something not get built
> > or multilib'ed?:
> 
> > spawn /export/home/sources/egcs/solaris-2.8/gcc/g77 -B/export/home/sources/egcs/solaris-2.8/gcc/ /export/home/sources/egcs/gcc/testsuite/g77.f-torture/execute/19990826-0.f -w -Os -mcpu=ultrasparc -m64 -L/export/home/sources/egcs/solaris-2.8/sparc-sun-solaris2.8/libf2c -lm -o /export/home/sources/egcs/solaris-2.8/gcc/testsuite/19990826-0.x
> > Undefined                       first referenced
> >  symbol                             in file
> > s_stop                              /tmp/ccOagkee.o
> > G77_abort_0                         /tmp/ccOagkee.o
> > main                                
> 
> These are symptoms that libf2c wasn't found at the right moment in the
> right place (during linking).  I.e., even if the compiler proper didn't
> run into any problem at all, still the code couldn't be executed because
> the link failed.  Unfortunately, this looks sufficiently different from
> link command lines on my i686-pc-linux-gnu that I can't say what the
> error is.

I looked through the build log (which was a bit confused, because I
did a parallel make), and found

Adding multilib support to Makefile in ../../../libf2c
multidirs=sparcv9
with_multisubdir=
Running configure in multilib subdirs sparcv9
pwd: /export/home/sources/egcs/solaris-2.8/sparc-sun-solaris2.8/libf2c
Running configure in multilib subdir sparcv9

which was the same for the other libraries (libchill, etc.).  Now, things
are compiled in the sparcv9 subdirectory with, e.g.,

/export/home/sources/egcs/solaris-2.8/gcc/xgcc -B/export/home/sources/egcs/solaris-2.8/gcc/ -B/pkgs/gcc-2.96/sparc-sun-solaris2.8/bin/ -B/pkgs/gcc-2.96/sparc-sun-solaris2.8/lib/ -isystem /pkgs/gcc-2.96/sparc-sun-solaris2.8/include -c -DSkip_f2c_Undefs -DAllow_TYQUAD -I. -I../../../../../libf2c/libI77 -I.. -I../../../../../libf2c/libI77/..  -DSTDC_HEADERS=1 -D_POSIX_SOURCE=1 -DHAVE_TEMPNAM=1 -DNON_ANSI_RW_MODES=1 -DNO_EOF_CHAR_CHECK=1 -DSkip_f2c_Undefs=1  -g -O2  -m64 ../../../../../libf2c/libI77/ftell_.c

which is, to me, a bit strange, unless -m64 implies -mcpu=sparcv9.  And,
shouldn't there be two versions of the library, one 32-bit binaries on
sparcv9 (i.e., "-mcpu=sparcv9 -m32") and 64-bit binaries on sparcv9
("-mcpu=sparcv9 -m64")?  FWIW, the other libraries are compiled with
similar options:

make[4]: Entering directory `/export/home/sources/egcs/solaris-2.8/sparc-sun-solaris2.8/sparcv9/libchill'
/export/home/sources/egcs/solaris-2.8/gcc/xgcc -B/export/home/sources/egcs/solaris-2.8/gcc/ -B/pkgs/gcc-2.96/sparc-sun-solaris2.8/bin/ -B/pkgs/gcc-2.96/sparc-sun-solaris2.8/lib/ -isystem /pkgs/gcc-2.96/sparc-sun-solaris2.8/include -c -I. -I../../../../libchill   -g -O2  -m64  ../../../../libchill/chillrt0.c

etc.

Brad Lucier


More information about the Gcc mailing list