The cause of the unaligned access messages is a cast in myldr/sha.c, sub
sha_transform, line 97.
For tracing the error, we compiled PAR with additional cc option -g and
ran dbx on static, pc=0x1201c785c:
/usr/local/PAR-0.80/myldr> dbx static
(dbx) 0x1201c785c / i
[sha_transform:97, 0x1201c785c] ldq t6, 0(t7)
This points us now to subroutine sha_transform, line 97. This subroutine
can be found in myldr/sha1.c.
...
87 static void sha_transform(SHA_INFO *sha_info)
88 {
89 int i;
90 U8 *dp;
91 ULONG T, A, B, C, D, E, W[80], *WP;
92
93 dp = sha_info->data;
94
95 /* assert(sizeof(ULONG) == 4); */
96 for (i = 0; i < 16; ++i) {
==> 97 T = *((ULONG *) dp);
98 dp += 4;
99 W[i] = ((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
100 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
101 }
102
...
Installing the current Digest::SHA1 version 2.10 from CPAN does not show
this behavior, so it seems to be fixed there as it is not being compiled
with the cc option -assume noaligned_objects option on Tru64 as well.
Cheers,
Peter.