[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
At least, it says hello to the world when using the system-installed dynamic libgcc.
OK, I built the 64-bit and fat libgcc and then turned to the testsuite, expecting many failures, but there were less than I had thought. This apart from problems with stabs and dwarf-2 debug info, that I ignored for now (not reproducing "can't find atom for N_GSYM stabs ..." in the results below). In fact, I believe that some of the testsuite is wrong in a situation where Integer and Longint are both 64-bit and CInteger is 32-bit, as on powerpc-apple-darwin-8 when using -m64 to create 64-bit binaries.
Some of the failures (not all) are reproduced below, with my comments. One possible fix of the testsuite is to replace Integer by CInteger where appropriate.
Regards,
Adriaan van Os
------
TEST c_gpc.pas: 13c13 < PascalProgramVariable is now 53021371269137. ---
PascalProgramVariable is now 12345.
failed
*** c_gpc.pas is wrong (two occurences of Integer should be CInteger)
TEST chief35b.pas: failed foo4 43 2251795518715392 43
TEST chief40.pas: ./chief40.pas: In main program: ./chief40.pas:8: error: constant out of range ./chief40.pas:11: error: arithmetical overflow ./chief40.pas:11: error: constant overflow in expression ./chief40.pas:14: error: arithmetical overflow ./chief40.pas:14: error: constant overflow in expression failed
*** compiler is right, testsuite is wrong
TEST chuck6.pas: 1c1,4 < ./a.out: value out of range (error #300 at 28a3) ---
-10 10 -10 10 -10 10
failed
*** see the recent discussion on subrange expressions ?
TEST fjf327.pas: ./fjf327.pas: In main program: ./fjf327.pas:9: error: constant out of range failed
*** compiler is right, testsuite is wrong (I recall the discussion on range checking for constants)
TEST fjf526a.pas: ./fjf526a.pas: In main program: gpc1: warnings being treated as errors ./fjf526a.pas:8: warning: left shift count >= width of type failed
*** compiler is right, testsuite is wrong
TEST fjf526b.pas: ./fjf526b.pas: In main program: gpc1: warnings being treated as errors ./fjf526b.pas:8: warning: left shift count >= width of type failed
*** compiler is right, testsuite is wrong
TEST fsc22.pas: failed
TEST fsc24.pas: failed
TEST gpc_c_p.pas: 10c10 < PascalUnitVariable is now 4294967338. ---
PascalUnitVariable is now 43.
16c16 < PascalProgramVariable is now 53021371269137. ---
PascalProgramVariable is now 12345.
failed TEST gpcu_c_u.pas: 11c11 < PascalUnitVariable is now 4294967338. ---
PascalUnitVariable is now 43.
failed
*** gpc_c_p.pas is wrong (two occurences of Integer should be CInteger), *** gpc_c_u.pas is wrong (one occurence of Integer should be CInteger)
TEST shl.pas: ./shl.pas: In main program: gpc1: warnings being treated as errors ./shl.pas:9: warning: left shift count >= width of type ./shl.pas:11: warning: right shift count >= width of type ./shl.pas:21: warning: left shift count >= width of type ./shl.pas:23: warning: right shift count >= width of type failed
*** compiler is right, testsuite is wrong
TEST toby2.pas: failed: ./toby2.pas:2: internal compiler error: in mseek, at p/module.c:355 Please submit a full bug report, with preprocessed source if appropriate. See URL:http://www.gnu-pascal.de/todo.html for instructions.
TEST writeb.pas: Run #2: LongInt `-7890123456789012345' was not indented, but should be. ... Run #3: LongInt `-7890123456789012345' was indented with field width 21, but should be with field width 44. ...
TEST writec.pas: SP: LongInt `-7890123456789012345' was not indented, but should be. ... Run #3: LongInt `-7890123456789012345' was indented with field width 21, but should be with field width 44. ...
TEST writee.pas: EP: LongInt `-7890123456789012345' was not indented, but should be. ... Run #1: LongInt `-7890123456789012345' was not indented, but should be. ... Run #3: LongInt `-7890123456789012345' was indented with field width 21, but should be with field width 44. ...
TEST writeg.pas: Run #2: LongInt `-7890123456789012345' was not indented, but should be. ... Run #3: LongInt `-7890123456789012345' was indented with field width 21, but should be with field width 44. ...