eichin@athena.mit.edu (Mark W. Eichin) (12/18/90)
I submitted this to perl-users for the MIPS and RT, but looks like it
applies to the Apollo too:
With my patch:
$ ./perl -e 'printf "%8x\n",unpack("N",pack("N",0x8000000f));'
8000000f
Without the patch (straight pl41):
$ perl -e 'printf "%8x\n",unpack("N",pack("N",0x8000000f));'
Floating exception
$ tb
Process 7341 (parent 3885, group 7341)
Time 90/12/17.16:45(EST)
Program /usr/local/bin/perl
Status 00120025: floating point operand error (OS/fault handler)
In routine "/usr/local/bin/perl" offset 88294
Called from "/usr/local/bin/perl" offset 94664
It turns out that those addresses are in do_pack, in the case 'N',
line 580. Using aulong for along takes care of it (the U_L doesn't end
up being necessary, but that's "luck" ie it's defined as a simple
case, I think...)
_Mark_eichin@athena.mit.edu (Mark W. Eichin) (12/19/90)
(Yeah, I'm still banging on this one, but at least it is "relevant to the Perl language"...) It turns out that the NeXT machine also needs the "#ifdef mips" case in util.c:castulong() to function correctly. This appears to be a bug in "fixunsdfsi" but I don't know 68K assembler well enough to tell... however, setting castneg=undef and duplicating the #ifdef mips clause as #ifdef NeXT produces a perl which passes all normal tests *and* handles DES properly. (This isn't just an example of bizarre perl code: I reduced the bug to % perl -e 'printf "%lu\n",0x80000000;' 2147483647 which is clearly and obviously wrong. I think the castneg try.c test has to be made *much* stronger, or else it should simply check #ifdef vax and only pass that case :-) At very least, it needs to check some real values near 1<<31 for conversions. It should also really *compute* some of them; one of the compilers I tried had *different behavior* depending on whether the float to long conversion was "constant folded" (ie done in the compiler) or done at runtime...) _Mark_ <eichin@athena.mit.edu> ps. Has anyone worked on more extensive Perl tests, comparable to SVVD or maybe trip.tex? ------ "Perl is APL on LSD" -- Seth Finkelstein -----