Waldek Hebisch a écrit:
Maurice Lombardi wrote:
Waldek Hebisch a écrit:
I have put a new gpc snapshot at:
http://www.math.uni.wroc.pl/~hebisch/gpc/gpc-20060215.tar.bz2
Compiled with DJGPP and gcc 3.4.4 Only one failure for a new test (y2k has no meaning)
Running target any Running testsuite ...
UNSUPPORTED: fjf165a.pas UNSUPPORTED: longr2.pas FAIL: peter8.pas FAIL: y2k.pas
=== gpc Summary ===
# of tests 5057 # of expected passes 5053 # of unexpected failures 2 # of unsupported tests 2
TEST peter8.pas: Exiting due to signal SIGSEGV
Could you narrow down the problem? peter8.pas defines 27 routines and around 20 arguments and tries all combinations of routines and arguments. You can comment out lines loking like `do_tstc (f1);' to choose only specific arguments. You can remove parts of `do_tstc' (and `do_tstc0' and `do_tstc1') macros to test only some routines.
There is also a series of tests checking that arguments are passed by reference (`do_tstr' series), each test two routines (one with `const' argument and one with `const var' argument).
Also, do optimization matter? The routines are small so there is a lot of possibilities for inlining.
BTW. peter8.pas uses macros, but no units, so you can test is separatly in another directory.
This is a problem of stack overflow, presumably due to this complexity. The default stack in DJGPP is 512k Increasing it to 2048k makes the problem disappear.
I increase the stack manually in DJGPP by typing
stubedit gpc1.exe minstack=2048K
I have checked that you can do it automatically by including the following lines in peter8.pas immediately after the program header
{$ifdef __GO32__} const MinStackSize: Cardinal = $200000; attribute (name = '_stklen'); {$endif}
(the recipe is somewhere in the gpc docs)
Maurice