H.Merijn Brand wrote:
On Wed, 01 Jun 2005 12:45:12 +0100, Nick Glencross
<[EMAIL PROTECTED]> wrote:
Here are some notes for those that are interested in parrot being built
on other platforms.
The system in question is a PA-RISC HP-UX 11.11 system
(hppa2.0w-hp-hpux11.11). The system only has the bundled C compiler and
linker, so I've compiled gcc 3.3.6 for it. gcc cannot create debug
information without gas, which is unfortunately not supported on this
platform.
It is. Go fetch from my site!
Having downloaded the version of gas from H.Merijn's site, I've now
recompiled gcc against it and have debugging support on HP-UX (I'm
still using the system ld for the timebeing).
Strangely all the segfaults have now gone away (perhaps the assembler
aligns data differently?), although the 'l != left' assertions are still
there.
There are quite a lot, and some are listed here. This lists the failed
test, and the line number that the assertion occurs in mmd.c.
TEST: mmd assertion line number
getopt_long_1.pir: 727
jit_54.pasm: 676
coroutine_6.pir: 625
coroutine_12.pir: 625
float_[16,17,18,19,20,21,22,23].pasm: 625 and 676
integer_1.pir: 625
perlint_[12,15,16,17,18,19,20,21,23,35,36,37,38,39,40,41,42,35,36,37,...]:
625 & 676
...
I shall obviously be investigating these in more detail.
Briefly, getopt_long_1.pir seems to assert on the following instruction.
858 i_concatenate P15, S15 - P15=String=PMC(0x4020a740 Str:""),
S15=".sub _pge_rule\n"
and jit_54.pasm asserts on this instruction:
9 i_divide P0, N0 - P0=Integer=PMC(0x4020d3c8: 123),
N0=4000.000000
If someone can give me any insight into what this assertion is checking,
I'd be grateful. It seems to boil down to whether the left PMC is a
deleg pmc (else left is assigned to l, and the assertion fires).
I've also attached a patch to rename the CPU arch which causes warnings
from config.h. If someone can apply this (or a variant if you don't like
the '|'s) I'd be grateful. Failing that, I'll log a call this evening
when I have access to an SMTP server.
Cheers,
Nick
Index: config/auto/jit.pl
===================================================================
--- config/auto/jit.pl (revision 8253)
+++ config/auto/jit.pl (working copy)
@@ -34,6 +34,9 @@
($osname, $cpuarch) = ($cpuarch, "");
}
+ # This was added to convert 9000/800 to 9000_800 on HP-UX
+ $cpuarch =~ s|/|_|g;
+
# On OS X if you are using the Perl that shipped with the system
# the above split fails because archname is "darwin-thread-multi-2level".