negative memcpy

Khem Raj raj.khem at gmail.com
Wed Aug 10 06:59:55 UTC 2011



On Aug 9, 2011, at 10:25 PM, manish kumar <deliver2manish at gmail.com> wrote:

> On Wed, Aug 10, 2011 at 12:06 PM, Denys Vlasenko
> <vda.linux at googlemail.com> wrote:
> 
>> Try disassembling a static binary.
> 
> I disassembled the static version. It appears it is calling the CPU
> specific optimized memcpy() with unrolled loops. But then how can I
> fix this problem. I want this test case to crash.

Report to gcc devs. Meanwhile you can disable memcpy intrinsic
-fno-builtin-memcpy
> 
> The disassembly is attached as file (pending moderator approval) and
> inline below (partially since it is too big):
> 
> int main()
> {
> 4002a0:       27bdffc0        addiu   sp,sp,-64
> 4002a4:       afbf003c        sw      ra,60(sp)
> 4002a8:       afbe0038        sw      s8,56(sp)
> 4002ac:       03a0f021        move    s8,sp
>      size_t size = -1;
> 4002b0:       2402ffff        li      v0,-1
> 4002b4:       afc20018        sw      v0,24(s8)
>      char src[10] = {0, }, dest[10] = {0, };
> 4002b8:       afc0001c        sw      zero,28(s8)
> 4002bc:       afc00020        sw      zero,32(s8)
> 4002c0:       a7c00024        sh      zero,36(s8)
> 4002c4:       afc00028        sw      zero,40(s8)
> 4002c8:       afc0002c        sw      zero,44(s8)
> 4002cc:       a7c00030        sh      zero,48(s8)
>      memcpy(dest, src, size);
> 4002d0:       27c30028        addiu   v1,s8,40
> 4002d4:       27c2001c        addiu   v0,s8,28
> 4002d8:       00602021        move    a0,v1
> 4002dc:       00402821        move    a1,v0
> 4002e0:       8fc60018        lw      a2,24(s8)
> 4002e4:       0c1000c4        jal     400310 <__GI_memcpy>
> 4002e8:       00000000        nop
>      return 1;
> 4002ec:       24020001        li      v0,1
> }
> 4002f0:       03c0e821        move    sp,s8
> 4002f4:       8fbf003c        lw      ra,60(sp)
> 4002f8:       8fbe0038        lw      s8,56(sp)
> 4002fc:       27bd0040        addiu   sp,sp,64
> - Hide quoted text -
> 400300:       03e00008        jr      ra
> 400304:       00000000        nop
>      ...
> 
> 00400310 <__GI_memcpy>:
> 400310:       3c080041        lui     t0,0x41
> 400314:       8d083060        lw      t0,12384(t0)
> 400318:       110005ec        beqz    t0,401acc <detect_cpu>
> 40031c:       00000000        nop
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc


More information about the uClibc mailing list