This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: 64-bit gcc3.1 on Solaris?
- From: Elliott Potter <epotter at eep dot burdell dot org>
- To: Rupert Wood <me at rupey dot net>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Mon, 1 Jul 2002 15:40:14 -0400 (EDT)
- Subject: RE: 64-bit gcc3.1 on Solaris?
On Mon, 1 Jul 2002, Rupert Wood wrote:
> Elliott Potter wrote:
>
> > Has anyone tried to compile gcc 3.1 as 64 bit on Solaris 2.8 or 2.9?
> > I got it compiled as 32 bit no problem (twice actually) and it does
> > appear to compile working 64 bit programs, but just for the heck of
> > it I thought I'd try to compile the compiler with the -m64 option.
>
> I don't have 2.9 to play with but the following works for me on 2.8:
>
> CC="gcc -m64" ~/cvs/gcc31/configure --enable-threads=posix \
> --disable-checking --disable-nls --with-cpu=ultrasparc \
> sparcv9-sun-solaris2.8 \
> && gmake -j4 bootstrap CC="gcc -m64"
The configure line I used to make the 32 bit version was:
CC="gcc -mcpu=ultrasparc" ../configure --prefix=/usr/local/gcc-3.1-1 \
--enable-threads=posix --with-cpu=ultrasparc \
--with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld \
--disable-nls
make CFLAGS="-mcpu=ultrasparc" BOOT_CFLAGS="-mcpu=ultrasparc" \
bootstrap MAKE="make -j3"
...which worked like a charm. For the 64-bit version I used the same
lines except added "-m64" to the CC/*CFLAGS arguments.
That works just fine until later stages, where it fails at the same place
regardless of different combinations of CFLAGS and such that I've tried:
stage1/xgcc -Bstage1/ -B/usr/local/gcc-3.1-2/sparc-sun-solaris2.9/bin/
-DIN_GCC -O3 -mcpu=ultrasparc -m64 -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic
-Wno-long-long -DHAVE_CONFIG_H -DGENERATOR_FILE -o gengenrtl \
gengenrtl.o ../libiberty/libiberty.a
ld: fatal: file /usr/lib/sparcv9/values-Xa.o: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to gengenrtl
collect2: ld returned 1 exit status
make[2]: *** [gengenrtl] Error 1
make[2]: Leaving directory `/usr/local/gcc-3.1-2-build/objdir/gcc'
make[1]: *** [stage2_build] Error 2
make[1]: Leaving directory `/usr/local/gcc-3.1-2-build/objdir/gcc'
make: *** [bootstrap] Error 2
This is where I'm stumped, because everything in libiberty.a is 64 bits,
as is xgcc and gengenrtl.
> using Sun's as and ld and CVS GCC3.1.1 sources from the middle of last
> week (release 3.1 ought to work too). gmake is GNU make - haven't tried
> Sun's make. This build didn't include Ada; I've got Sun ld vs Ada symbol
> problems and GNU ld 64-bit vs patched libdl.so problems but I haven't
> yet found time to work out what bugs I need to report to whom.
I used Sun's as and ld, and gmake that came with Solaris 8. I don't do
anything with Ada so I didn't try to build it.
Anyway the 32-bit build works perfectly as long as I don't try to compile
Mozilla so I should probably leave it, but I've never had a compiler that
was actually 64 bits so I thought I'd give it a try. Other than that I
have no good reason to make gcc 64 bit. (That's not to say I don't want
to try still :)
Thanks,
--
Elliott