Gale Paeper wrote:
Also, it would be a good idea to test more than just record sizes in a single code block. Things like actual field offsets and composite types with a mixture of alignments composed through uses clauses and import specifications should be part of the tests. In other words, stress tests to ensure there are no surprises/bugs in the implementation for all the various ways it might be used in general use.
I ran the gpc testsuite, with the added option EXTRA_TEST_PFLAGS="--maximum-field-alignment=8". Below are the results, skipping the previously mentioned back-end problems.
Regards,
Adriaan van Os
--------
[G4:~/gnu/testgpc/test-20030323] adriaan% make EXTRA_TEST_PFLAGS="--maximum-field-alignment=8"
Running the GPC Test Suite. This may take a while ...
rm -f *.dat *.o *.s *.gpm *.gpi *.gpd *.gpc core a.out stderr.out *.exe testmake.tmp dummy.c dummy.pas dummy.out diff_cr*.tmp fixcr fixcr.exe rm -f todo/a.out todo/*.exe todo/*.o todo/*.s todo/*.gpm todo/*.gpi todo/*.gpd todo/core { gpc --version | head -1; gpc --print-search-dirs | grep install | head -1; hostname || echo "unknown host"; } | \ sed -e 's,^,Testing ,;N;s,\n.*gcc-lib[/], (,;s,[/].*,),;N;s,\n, (,;s,$,),' Testing gpc 20030323, based on gcc-3.2.1 (powerpc-apple-darwin6.3) (G4.local.) echo "gpc -g -O3 -W -Wall -Wundef -Wpointer-arith -Wno-unused --maximum-field-alignment=8" gpc -g -O3 -W -Wall -Wundef -Wpointer-arith -Wno-unused --maximum-field-alignment=8 PC="gpc" PFLAGS="--autobuild -g -O3 -W -Wall -Wundef -Wpointer-arith -Wno-unused --maximum-field-alignment=8" SRCDIR="." TEST_MAKE_FLAG=test-make-flag "./test_run" "*.pas" | "./test_sum"
TEST bill6.pas: ./test_run: line 202: 3134 Segmentation fault ./"$A_OUT" "$1"
TEST chief31.pas: gpc1: warnings being treated as errors ./chief31.pas:6: warning: too few initializers for array failed
TEST ciriaco1.pas: ./test_run: line 202: 6238 Segmentation fault ./"$A_OUT" "$1"
TEST files3.pas: ./test_run: line 202: 9394 Segmentation fault ./"$A_OUT" "$1"
TEST fjf193.pas: ./test_run: line 202: 11572 Segmentation fault ./"$A_OUT" "$1"
TEST fjf193b.pas: ./a.out: error when writing to file `a' bound to file handle #8 (Bad file descriptor) (error #466 at 1ebf)
TEST fjf294a.pas: gpc1: warnings being treated as errors ./fjf294a.pas:7: warning: too few initializers for array failed
TEST fjf528a.pas: gpc1: warnings being treated as errors ./fjf528a.pas:7: warning: too few initializers for array failed
TEST fjf528b.pas: gpc1: warnings being treated as errors ./fjf528b.pas:7: warning: too few initializers for array failed
TEST fjf589a.pas: gpc1: warnings being treated as errors ./fjf589a.pas: In main program: ./fjf589a.pas:46: warning: cast increases required alignment of target type ./fjf589a.pas:47: warning: cast increases required alignment of target type failed
TEST fjf638.pas: gpc1: warnings being treated as errors ./fjf638.pas:9: warning: too few initializers for array failed
TEST fjf670.pas: ./test_run: line 202: 9963 Segmentation fault ./"$A_OUT" "$1"
TEST fjf755.pas: ./a.out: error when reading from file `Foo' bound to file handle #6 (Bad file descriptor) (error #464 at 1def)
TEST formattimetest.pas: ./strftime.cmp: line 34: 17561 Segmentation fault ./"$A_OUT"
TEST getopt1.pas: 1c1,14 < ./getopt1.run: line 3: 17711 Segmentation fault ./"$A_OUT" --optarg -r foo -x -o -nobar --noarg --reqarg foo --optarg=bar --abc baz qux ---
long option `optarg' option `r' with argument `foo' dummy: unrecognized option `-x' (incorrect long option) option `o' option `n' option `o' with argument `bar' long option `noarg' long option `reqarg' with argument `foo' long option `optarg' with argument `bar' option `x' Remaining arguments: baz qux
failed
TEST getopt2.pas: 1c1,13 < ./getopt2.run: line 3: 17738 Segmentation fault ./"$A_OUT" --optarg -r foo -x -o -nobar --noarg --reqarg foo --optarg=bar --abc baz qux ---
long option `optarg' option `r' with argument `foo' option `x' option `o' option `n' option `o' with argument `bar' long option `noarg' long option `reqarg' with argument `foo' long option `optarg' with argument `bar' option `x' Remaining arguments: baz qux
failed
TEST getopt3.pas: 1c1,13 < ./getopt3.run: line 3: 17765 Segmentation fault ./"$A_OUT" --optarg -r foo -x -o -nobar --noarg --reqarg foo --optarg=bar --abc baz qux ---
option `o' option `r' with argument `foo' option `x' option `o' option `n' option `o' with argument `bar' option `n' option `r' with argument `foo' option `o' with argument `bar' option `x' Remaining arguments: baz qux
failed
TEST gpctest.pas: warning: strange time zone 24.00 -1 86400 943841988 True True 0 1999 131006464 11 720896 29 1835008 1 0 2 131072 19 1245184 48 3145728 0 Error in UnixTimeToTimeStamp
TEST kevin10.pas: ./test_run: line 202: 19221 Segmentation fault ./"$A_OUT" "$1"
TEST kevin11.pas: ./test_run: line 202: 19241 Segmentation fault ./"$A_OUT" "$1"
TEST kevin12.pas: ./test_run: line 202: 19261 Segmentation fault ./"$A_OUT" "$1"
TEST pat4.pas: gpc1: warnings being treated as errors ./pat4.pas:17: warning: too few initializers for array failed
TEST pipetes2.pas: gpc1: warnings being treated as errors ./pipetes2.pas:15: warning: too few initializers for array failed
TEST pipetest.pas: gpc1: warnings being treated as errors ./pipetest.pas:15: warning: too few initializers for array failed
TEST russell1.pas: ./a.out: error when writing to file `MyFile' bound to file handle #8 (Bad file descriptor) (error #466 at 28e3)
TEST schema2a.pas: failed
TEST size.pas: gpc1: warnings being treated as errors ./size.pas:14: warning: too few initializers for array failed
TEST strindex.pas: gpc1: warnings being treated as errors ./strindex.pas:6: warning: too few initializers for array failed
TEST sven4.pas: gpc1: warnings being treated as errors ./sven4.pas:15: warning: too few initializers for array failed
TEST y2k.pas: failed 537067520 4178575360
# of GPC tests 3324 # of GPC tests passed 3268 # of GPC tests skipped 15 # of GPC tests failed 41
-------
I can provide more information, as needed. Many, but not all, backtraces look like this:
Thread 0 Crashed: #0 0x00005064 in _p_Bind (file.c:404) #1 0x00001cd8 in init_Bill6ubar (bill6u.pas:11) #2 0x00001f44 in init_pascal_main_program (bill6.pas:16) #3 0x00001fb0 in main (bill6.pas:16) #4 0x00001b0c in _start (crt.c:267) #5 0x0000198c in start
-------