[csw-maintainers] Alignment-problem on libmhash

Dagobert Michelsen dam at opencsw.org
Wed Jun 10 18:48:58 CEST 2009


Hi,

I have an alignment problem with libmhash on sparcv9. It looks like  
this:

Checking fragmentation capabilities of HAVAL256: FAIL: frag_test

build8s% cd work/build-isa-sparcv9/mhash-0.9.9.9/src/
build8s% mdb .libs/
driver       frag_test    hmac_test    keygen_test  rest_test
build8s% mdb .libs/frag_test core
mdb: warning: core file is from SunOS 5.10 Generic_138888-07; shared  
text
mappings may not match installed libraries
Loading modules: [ ]
> ::stack
libmhash.so.2`mutils_word32nswap+0xb8(100104990, 20, 1f, 6c24cc00, 1,
20754a1616aa27a)
libmhash.so.2`havalTransform3+0xc(1001047d4, ffffffff7fffefcd,  
100104880,
143367, a19b3906, 1f3213955f32139)
libmhash.so.2`havalUpdate+0x130(1001047d0, ffffffff7fffefcc, 81,
ffffffffffffffff, 1001047f4, 408)
libmhash.so.2`mhash+0x14(100101fd0, ffffffff7fffefcc, 81,
fffffffffffffffd, 0, 7ffeff021eb8)
frag_test+0x98(100, 81, 1, 958, ffffffff7fffefcc, 80)
main+0x8c(1c, 7ffeff1329ce, 1, 100101620, 100001038, 100101588)
_start+0x17c(0, ffffffff7ffff238, 0, 1, 7ffeffe0d6cc, 7ffefff10000)
> ::dis mutils_word32nswap
libmhash.so.2`mutils_word32nswap:       save      %sp, -0xb0, %sp
libmhash.so.2`mutils_word32nswap+4:     btst      0xff, %i2
libmhash.so.2`mutils_word32nswap+8:     bne,pn    %icc,+0x24
<libmhash.so.2`mutils_word32nswap+0x2c>
libmhash.so.2`mutils_word32nswap+0xc:   mov       %i0, %l4
libmhash.so.2`mutils_word32nswap+0x10:  sll       %i1, 2, %l6
libmhash.so.2`mutils_word32nswap+0x14:  call      +0x12d494
<0x7ffeff131aa0>
libmhash.so.2`mutils_word32nswap+0x18:  srl       %l6, 0, %o0
libmhash.so.2`mutils_word32nswap+0x1c:  brnz,pn   %o0, +0x14
<libmhash.so.2`mutils_word32nswap+0x30>
libmhash.so.2`mutils_word32nswap+0x20:  mov       %o0, %i0
libmhash.so.2`mutils_word32nswap+0x24:  ret
libmhash.so.2`mutils_word32nswap+0x28:  restore   %g0, 0, %o0
libmhash.so.2`mutils_word32nswap+0x2c:  mov       %l4, %i0
libmhash.so.2`mutils_word32nswap+0x30:  cmp       %i1, 0
libmhash.so.2`mutils_word32nswap+0x34:  bleu,pn   %icc,+0x264
<libmhash.so.2`mutils_word32nswap+0x298>
libmhash.so.2`mutils_word32nswap+0x38:  cmp       %i1, 4
libmhash.so.2`mutils_word32nswap+0x3c:  bl,pn     %icc,+0x200
<libmhash.so.2`mutils_word32nswap+0x23c>
libmhash.so.2`mutils_word32nswap+0x40:  mov       %i0, %l6
libmhash.so.2`mutils_word32nswap+0x44:  sra       %i1, 0, %o0
libmhash.so.2`mutils_word32nswap+0x48:  sub       %i0, %l4, %l7
libmhash.so.2`mutils_word32nswap+0x4c:  srax      %l7, 0x3f, %g4
libmhash.so.2`mutils_word32nswap+0x50:  sethi     %hi(0x7ffffc00), %l1
libmhash.so.2`mutils_word32nswap+0x54:  srl       %i1, 0, %l2
libmhash.so.2`mutils_word32nswap+0x58:  xor       %l7, %g4, %g5
libmhash.so.2`mutils_word32nswap+0x5c:  sllx      %o0, 2, %g3
libmhash.so.2`mutils_word32nswap+0x60:  add       %l1, 0x3fe, %l0
libmhash.so.2`mutils_word32nswap+0x64:  sub       %g5, %g4, %g2
libmhash.so.2`mutils_word32nswap+0x68:  sub       %l2, %l0, %o2
libmhash.so.2`mutils_word32nswap+0x6c:  srlx      %o2, 0x3f, %o1
libmhash.so.2`mutils_word32nswap+0x70:  cmp       %g2, %g3
libmhash.so.2`mutils_word32nswap+0x74:  clr       %g1
libmhash.so.2`mutils_word32nswap+0x78:  and       %o1, 1, %i4
libmhash.so.2`mutils_word32nswap+0x7c:  movge %xcc,1, %g1
libmhash.so.2`mutils_word32nswap+0x80:  btst      %g1, %i4
libmhash.so.2`mutils_word32nswap+0x84:  be,a,pn   %icc,+0x1bc
<libmhash.so.2`mutils_word32nswap+0x240>
libmhash.so.2`mutils_word32nswap+0x88:  clr       %l2
libmhash.so.2`mutils_word32nswap+0x8c:  sethi     %hi(0xfc00), %l5
libmhash.so.2`mutils_word32nswap+0x90:  add       %i1, 0, %g4
libmhash.so.2`mutils_word32nswap+0x94:  add       %l5, 0x300, %l3
libmhash.so.2`mutils_word32nswap+0x98:  add       %i1, -1, %i2
libmhash.so.2`mutils_word32nswap+0x9c:  clr       %l1
libmhash.so.2`mutils_word32nswap+0xa0:  sethi     %hi(0xff000000), %l2
libmhash.so.2`mutils_word32nswap+0xa4:  sethi     %hi(0xff0000), %l5
libmhash.so.2`mutils_word32nswap+0xa8:  cmp       %g4, 5
libmhash.so.2`mutils_word32nswap+0xac:  bl,pn     %icc,+0x13c
<libmhash.so.2`mutils_word32nswap+0x1e8>
libmhash.so.2`mutils_word32nswap+0xb0:  sub       %i2, 3, %o7
libmhash.so.2`mutils_word32nswap+0xb4:  add       %l1, 1, %l1
libmhash.so.2`mutils_word32nswap+0xb8:  ld        [%l4], %g5
libmhash.so.2`mutils_word32nswap+0xbc:  add       %l4, 4, %l4
libmhash.so.2`mutils_word32nswap+0xc0:  and       %g5, %l5, %o1


> ::regs
%g0 = 0x0000000000000000                 %l0 = 0x000000007ffffffe
%g1 = 0x0000000000000001                 %l1 = 0x0000000000000001
%g2 = 0x00000001801059c3                 %l2 = 0x00000000ff000000
%g3 = 0x0000000000000080                 %l3 = 0x000000000000ff00
%g4 = 0x0000000000000020                 %l4 = 0xffffffff7fffefcd
%g5 = 0x00000001801059c3                 %l5 = 0x0000000000ff0000
%g6 = 0x0000000000000000                 %l6 = 0x0000000100104990
%g7 = 0x0000000000000000                 %l7 = 0x00000001801059c3

%o0 = 0x0000000000000020                 %i0 = 0x0000000100104990
%o1 = 0x0000000000000001                 %i1 = 0x0000000000000020
%o2 = 0xffffffff80000022                 %i2 = 0x000000000000001f
%o3 = 0x000000007f7e7e7e                 %i3 = 0x000000006c24cc00
%o4 = 0x00000000007e0000                 %i4 = 0x0000000000000001
%o5 = 0x0000000100104990                 %i5 = 0x020754a1616aa27a
%o6 = 0xffffffff7fffe151                 %i6 = 0xffffffff7fffe201
%o7 = 0x000000000000001c                 %i7 = 0x00007ffeff0190ec
libmhash.so.2`havalTransform3+0xc

%ccr = 0x00 xcc=nzvc icc=nzvc
   %y = 0x0000000000000000
  %pc = 0x00007ffeff0046b0 libmhash.so.2`mutils_word32nswap+0xb8
%npc = 0x00007ffeff0046b4 libmhash.so.2`mutils_word32nswap+0xbc
  %sp = 0xffffffff7fffe151
  %fp = 0xffffffff7fffe201

%asi = 0x82
%fprs = 0x07


So, the problem is that 0xffffffff7fffefcd is not 32 bit aligned, but I
can't see it in the source why this should be the case. Maybe I'm just  
too
blind today and someone other can have a look? Everything has been
committed to pkg/libmhash.


Best regards

  -- Dago









More information about the maintainers mailing list