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