Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: some binaries crash with SIGILL on Zybo-Z7-20



On 31.10.2018 11:24, Martin Husemann wrote:
> On Wed, Oct 31, 2018 at 10:08:31AM +0000, Alexander Nasonov wrote:
>> There is indeed an invalid instruction if I open libc.so on my
>> Intel notebook in radare2 tool:
>>
>> [0x000a03e4]> s sym._string_hash_func
>> [0x000a03e4]> pd 125
>> ...
>>        0x000a0568      a0c1a0e1       lsr ip, r0, 3
>>        0x000a056c      03308fe0       add r3, pc, r3
>>        0x000a0570      7fc00ce2       and ip, ip, 0x7f
>>        0x000a0574      30402de9       push {r4, r5, lr}
>>        0x000a0578      0c3183e0       add r3, r3, ip, lsl 2
>>        0x000a057c      01e0a0e3       mov lr, 1
>>   ..-> 0x000a0580      9e4003e1       invalid                     <--- HERE
>>  ,===< 0x000a0584      010000ea       b 0xa0590
>>  |::   0x000a0588      000055e3       cmp r5, 0
>>  |`==< 0x000a058c      fbffff1a       bne 0xa0580
>>  `---> 0x000a0590      000054e3       cmp r4, 0
>>    `=< 0x000a0594      f9ffff1a       bne 0xa0580
> 
> Not sure what that tool does, but this is how objdump -D looks on my armv5
> machine:
> 
>    a0434:       e1a0c1a0        lsr     ip, r0, #3
>    a0438:       e08f3003        add     r3, pc, r3
>    a043c:       e20cc07f        and     ip, ip, #127    ; 0x7f
>    a0440:       e92d4030        push    {r4, r5, lr}
>    a0444:       e083310c        add     r3, r3, ip, lsl #2
>    a0448:       e3a0e001        mov     lr, #1
>>> a044c:       e103409e        swp     r4, lr, [r3]  <<--- HERE
>    a0450:       ea000001        b       a045c <_string_hash_func+0x70>
>    a0454:       e3550000        cmp     r5, #0
>    a0458:       1afffffb        bne     a044c <_string_hash_func+0x60>
>    a045c:       e3540000        cmp     r4, #0
>    a0460:       1afffff9        bne     a044c <_string_hash_func+0x60>
>    a0464:       e5d03000        ldrb    r3, [r0]
> 
> And SWP{B} are valid in all arm versions AFAICT (though deprecated since
> armv6 in favor of strex/ldrex).
> 

SWP has been removed in ARMv8, even in the aarch32 mode (ARMv7 compat).

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch08s03s02.html

However this board shall be Cortex-A9, so ARMv7 and SWP should be supported.

Attachment: signature.asc
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index