Waldek Hebisch wrote:
bprealtest.pas, segmentation fault
fay.pas, bus error
? procedural parameter and local procedure problems (? trampolines ?)
the following test failures look the same:
backtraceerr.pas
fjf35.pas
fjf464c.pas
fjf464e.pas
fproc.pas, same
knuth1.pas, same
nicola4d.pas, same
nlgpp.pas
nlgpp2.pas
t6334-2.pas
t6p6p3p4.pas
fjf908.pas failed 89 1.000000000000000e+00 2.500000000000000e-01
robert1a.pas
x ** y = NaN trunc( x ** y) = 0
- robert1b.pas
10.0 ** y = NaN trunc( 10.0 ** y) = 0
Anything I can do to investigate this further and report it to gcc bugzilla ?
Basic precedure I use is: first debug the test program. There is added difficulty that one has to down to assembly level. Once the exact problem with generated code is known one looks why the compiler generated this code.
The long list starting with backtraceerr.pas looks like tests for nonlocal jumps (and related). We had problems with them on various platforms in the past. To demonstrate that the problems indeed are backend problems we have translated few of the tests to C. The tests should be now in GCC testsuite, but probably buried between thousends of other tests. I would suggest finding tests attached to past bug reports about nonlocal jumps and check if they work with the C compiler. If you have problem finding the tests I can search for them. If the tests work with the C compiler then we need to do extra work. If not we should report that to backend developers.
BTW. I remeber a message on GCC mailing list, written by someone working for Apple. It sounded like Apple wanted to change some fundamental interfaces (like alignment of doubles). So, there is a possiblity that some interface change broke (some) binaries generated by gcc-3.4.x.
Indeed, and http://gcc.gnu.org/ml/gcc-patches/2005-03/msg02326.html fixes:
* bprealtest.pas * fjf908.pas * robert1a.pas * robert1b.pas
The problem is that the LongReal and Extended types build as 12 bytes long, where the OS expects them to be 16 bytes (-m128bit-long-double is the default on i686-apple-darwin8)
diff -u -p -u -p -r1.23 darwin.h --- config/i386/darwin.h 2 Dec 2004 18:42:26 -0000 1.23 +++ config/i386/darwin.h 24 Mar 2005 19:46:41 -0000 @@ -76,7 +76,7 @@ Boston, MA 02111-1307, USA. */ /* By default, target has a 80387, uses IEEE compatible arithmetic, and returns float values in the 387. */
-#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS) +#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_128BIT_LONG_DOUBLE | MASK_ALIGN_DOUBLE)
/* TARGET_DEEP_BRANCH_PREDICTION is incompatible with Mach-O PIC. */
So, that's only one set of problems left.
Regards,
Adriaan van Os