Bernhard Übelacker <bernha...@mailbox.org> writes:

> Dear Maintainer,
> I tried to collect some more information and compared this
> situation on real hardware armv5tel with an armv7 and
> it looks like in keccak_finalize the following instruction
> stores different data to memory depending on the arm hardware:
>
>     0x005c4ac0 <keccak_finalize+192>:    f0 20 c4 e1     strd    r2, [r4]
>
> In the failing case this is stored:
>      (gdb) x/8xb &((keccak_state *) 0xbeffef5c)->a
>      0xbeffef5c:     0x6f    0x6e    0x20    0x63    0x00    0x00    0x00    
> 0x00
>
> And in the good case this:
>      (gdb) x/8xb &((keccak_state *) 0xbeffef5c)->a
>      0xbeffef5c:     0x2e    0x6f    0x6e    0x69    0x6f    0x6e    0x20    
> 0x63
>
> While on both the registers r2 and r3 contain:
>      r2             0x696e6f2e          1768845102
>      r3             0x63206e6f          1663069807
>
> In the attached files are some more details leading to the above result.
>

Woah Bernhard, that's some top-notch detective work!

I wonder what this means? Does this mean that strd is broken on that
armv5tel, or that we are running gcc with the wrong flags for this
architecture?

The only relevant google result I could find is this post from 2007:
    https://www.redhat.com/archives/rhl-devel-list/2007-June/msg01002.html

Reply via email to