Hi,That is loading the 2nd parameter to md5_do_chunk. I think that is defined as uint32_t *buf
On 29/04/2014 17:26, Colin Watson wrote:
Program received signal SIGBUS, Bus error.
0x003d8c2c in md5_do_chunk ()
(gdb) bt
#0 0x003d8c2c in md5_do_chunk ()
#1 0x003d9a10 in md5_update ()
#2 0x003d2070 in saqF_ret ()
#3 0x00da1e48 in StgRun ()
#4 0x00d9f65c in scheduleWaitThread ()
#5 0x00d9c774 in real_main ()
#6 0x00d9c8c8 in hs_main ()
#7 0x0003b624 in main ()
(gdb) disas /rm
Dump of assembler code for function md5_do_chunk:
0x003d8c18 <+0>: 9d e3 bf 20 save %sp, -224, %sp
0x003d8c1c <+4>: b6 07 bf c0 add %fp, -64, %i3
0x003d8c20 <+8>: 07 00 00 3f sethi %hi(0xfc00), %g3
0x003d8c24 <+12>: 82 10 20 00 clr %g1
0x003d8c28 <+16>: 86 10 e3 00 or %g3, 0x300, %g3
=> 0x003d8c2c <+20>: c4 06 40 01 ld [ %i1 + %g1 ], %g2
(source http://hackage.haskell.org/package/cryptohash-0.4/src/cbits/md5.c)
The register dump below shows that %i1 is not 4 byte aligned.
That would correspond to the force cast of ctx->buf to a uint32_t *
in md5_update in the same file.