Waldek Hebisch wrote:
Adriaan van Os wrote:
Now that gpc has preliminary support for gcc-4 (thanks!) I am trying to build a 64-bit libgpc.a for use with -m64 on powerpc-apple- darwin8. This results in an ICE in fname.pas.
../.././xgpc -B../.././ -c -I. -W -Wall -Wmissing-prototypes - Wmissing-declarations -g -O2 -m64 --unit-path=/Users/adriaan/gnu/ gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts --automake - DRTS_RELEASE_STRING="'`cat /Users/adriaan/gnu/gpc/gpc-20060325/gcc-4/ gcc-4.0.3/gcc/p/rts/rts-version`'" -DGCC_VERSION="'4.0.3'" "/Users/ adriaan/gnu/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/random.pas" ../.././xgpc -B../.././ -c -I. -W -Wall -Wmissing-prototypes - Wmissing-declarations -g -O2 -m64 --unit-path=/Users/adriaan/gnu/ gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts --automake - DRTS_RELEASE_STRING="'`cat /Users/adriaan/gnu/gpc/gpc-20060325/gcc-4/ gcc-4.0.3/gcc/p/rts/rts-version`'" -DGCC_VERSION="'4.0.3'" "/Users/ adriaan/gnu/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/fname.pas" /Users/adriaan/gnu/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/ fname.pas: In function `InternalFSearch': /Users/adriaan/gnu/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/ fname.pas:705: internal compiler error: in output_constant, at varasm.c:3929 Please submit a full bug report, with preprocessed source if appropriate. See URL:http://www.gnu-pascal.de/todo.html for instructions. make[2]: *** [fname.o] Error 1 make[1]: *** [pascal.rts] Error 2 make: *** [all-gcc] Error 2
It would be nice to have a 64-bit darwin compiler available for download at some point, but it is not urgent.
Again, I can not reproduce the ICE. But I have noticed that I am getting ICE when I compile using -m64 flag when there are .gpi files compiled using -m32. So, I wonder if you used clean directory for 64-bit compilation (it looks that you re-used build directory directory, did you remove old .gpi files?).
Thanks for looking into this.
Initially, my attempt to rebuild libgpc.a failed (see below), so I tried various ways to build the compiler with -m64 (pass env CC="gcc -m64" to configure or add -m64 to CFLAGS during make or make bootstrap). This all resulted in the error above (that was in a fresh build directory).
However, I now found out why my initial attempt to simply rebuild libgpc.a in build/gcc/p/rts failed. I typed
[G5:gcc/p/rts] adriaan% rm *.o *.gpi [G5:gcc/p/rts] adriaan% make
or
[G5:gcc/p/rts] adriaan% rm *.o *.gpi [G5:gcc/p/rts] adriaan% make CFLAGS="-O2 -m64"
and this results in
`echo /Users/adriaan/gpc/gpc-20060325/gcc-4/build/gcc/xgcc -B/Users/adriaan/gpc/gpc-20060325/gcc-4/build/gcc/ -B/Developer/Pascal/gpc403d1/powerpc-apple-darwin8/bin/ -B/Developer/Pascal/gpc403d1/powerpc-apple-darwin8/lib/ -isystem /Developer/Pascal/gpc403d1/powerpc-apple-darwin8/include -isystem /Developer/Pascal/gpc403d1/powerpc-apple-darwin8/sys-include | sed 's,^([^ ]*[/][^/]*)gcc,\1gpc,;s/^gcc$/gpc/' ` -c -I. -W -Wall -Wmissing-prototypes -Wmissing-declarations -O2 --unit-path=/Users/adriaan/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts --automake -DRTS_RELEASE_STRING="'`cat /Users/adriaan/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/rts- version`'" -DGCC_VERSION="'unknown'" --no-automake "/Users/adriaan/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/heap.pas" /Users/adriaan/gpc/gpc-20060325/gcc-4/gcc-4.0.3/gcc/p/rts/heap.pas:38: error: module/unit interface `Error' could not be imported make: *** [heap.o] Error 1
I should have typed
[G5:gcc/p/rts] adriaan% make clean [G5:gcc/p/rts] adriaan% make
or
[G5:gcc/p/rts] adriaan% make clean [G5:gcc/p/rts] adriaan% make CFLAGS="-O2 -m64"
and building a 64-bit libgpc.a works !
With lipo, the 32-bit and 64-bit libgpc.a can be combined into one "fat" libgpc.a.
[G5:~/gpc/testgpc/adriaan] adriaan% gpc hello.pas -m64 can't find atom for N_GSYM stabs Fakehighletters:G(0,7) in /Developer/Pascal/gpc403d1/lib/gcc/powerpc-apple-darwin8/4.0.3/ libgpc.a(rtsc.o) ld64 failed: in /Developer/Pascal/gpc403d1/lib/gcc/powerpc-apple-darwin8/4.0.3/ libgcc.a(_fixtfdi.o), not a valid ppc64 mach-o file collect2: ld returned 1 exit status
So, next I will try to build a 64-bit libgcc and combine the 32-bit and 64-bit libgcc.a into a "fat" libgcc.a
Regards,
Adriaan van Os