This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]