Jarkko Hietaniemi <[EMAIL PROTECTED]> wrote: > I followed up on the perlbug thread on this but so far it hasn't > showed up in p6i, so here's a manual resend.
I've checked is some changes in the meantime, comments below inline. > (3a) Why is fetch_op_mixed() reading in 8 bytes at a time when the > .pbc is saying the wordsize is 4 Changed to fetch_buf_le_4() now. Please note I didn't try to fix the whole code, just to get Tru64 running. > (3c) In PF_fetch_opcode() we have > o = (pf->fetch_op)(**stream); I changed the signature to "unsigned char*" now. > (3c3) *stream is increased by four, it then being X+4. > (3c4) The next time around an attempt is made to call (pf->fetch_op) > with the *stream pointing to an address aligned by four but not by eight. This should be gone now... > In general it is not portable across architectures to cast aligned > (like opcode_t, or long) and "non-aligned" (char, void) pointers back > and forth ... but there are still might be issues. Aligning the cursor to 16 bytes in packfile.c comes to my mind. The PF_fetch_op() still gets an opcode_t* cursor, which might be misaligned. *But* AFAIK this misaligned thingy should never be dereferenced, so that a SIGBUS shouldn't get triggered. leo