https://bugs.kde.org/show_bug.cgi?id=386945

--- Comment #24 from Mark Wielaard <m...@klomp.org> ---
Created attachment 115701
  --> https://bugs.kde.org/attachment.cgi?id=115701&action=edit
Small ppc64le binary with inlined string functions

Here is an example with some inlined string functions on Fedora 28 ppc64le:

$ cat foo.c
#include <string.h>
#include <stdio.h>

__attribute__ ((weak)) void
do_test (const char *left, const char *right)
{
  printf ("result: %d\n", strcmp (left, right));
}

int
main (void)
{
  do_test (strdup ("a"), strdup ("b"));
}

$ gcc --version | head -1
gcc (GCC) 8.1.1 20180712 (Red Hat 8.1.1-5)
$ gcc -O2 -g -o foo foo.c

$ valgrind -q ./foo 2>&1 | head -30
==10495== Invalid read of size 4
==10495==    at 0x10000790: do_test (foo.c:7)
==10495==    by 0x10000587: main (foo.c:13)
==10495==  Address 0x4310044 is 2 bytes after a block of size 2 alloc'd
==10495==    at 0x4093F6C: malloc (vg_replace_malloc.c:299)
==10495==    by 0x4196F63: strdup (in /usr/lib64/libc-2.27.so)
==10495==    by 0x10000563: main (foo.c:13)
==10495== 
==10495== Invalid read of size 4
==10495==    at 0x10000794: do_test (foo.c:7)
==10495==    by 0x10000587: main (foo.c:13)
==10495==  Address 0x4310094 is 2 bytes after a block of size 2 alloc'd
==10495==    at 0x4093F6C: malloc (vg_replace_malloc.c:299)
==10495==    by 0x4196F63: strdup (in /usr/lib64/libc-2.27.so)
==10495==    by 0x10000577: main (foo.c:13)
==10495== 
==10495== Conditional jump or move depends on uninitialised value(s)
==10495==    at 0x1000079C: do_test (foo.c:7)
==10495==    by 0x10000587: main (foo.c:13)
==10495== 
==10495== Conditional jump or move depends on uninitialised value(s)
==10495==    at 0x4156044: vfprintf@@GLIBC_2.17 (in /usr/lib64/libc-2.27.so)
==10495==    by 0x415DED7: printf@@GLIBC_2.17 (in /usr/lib64/libc-2.27.so)
==10495==    by 0x100007D7: do_test (foo.c:7)
==10495==    by 0x10000587: main (foo.c:13)
==10495== 
==10495== Use of uninitialised value of size 8
==10495==    at 0x41522E8: _itoa_word (in /usr/lib64/libc-2.27.so)
==10495==    by 0x41568B7: vfprintf@@GLIBC_2.17 (in /usr/lib64/libc-2.27.so)
==10495==    by 0x100007D7: do_test (foo.c:7)

objdump -d of do_test ():

0000000010000730 <do_test>:
    10000730:   02 10 40 3c     lis     r2,4098
    10000734:   00 7f 42 38     addi    r2,r2,32512
    10000738:   a6 02 08 7c     mflr    r0
    1000073c:   20 05 69 78     clrldi  r9,r3,52
    10000740:   c0 0f a9 2f     cmpdi   cr7,r9,4032
    10000744:   10 00 01 f8     std     r0,16(r1)
    10000748:   a1 ff 21 f8     stdu    r1,-96(r1)
    1000074c:   10 00 9c 40     bge     cr7,1000075c <do_test+0x2c>
    10000750:   20 05 89 78     clrldi  r9,r4,52
    10000754:   c0 0f a9 2f     cmpdi   cr7,r9,4032
    10000758:   38 00 9c 41     blt     cr7,10000790 <do_test+0x60>
    1000075c:   a5 fd ff 4b     bl      10000500
<00000039.plt_call.strcmp@@GLIBC_2.17>
    10000760:   18 00 41 e8     ld      r2,24(r1)
    10000764:   b4 07 64 7c     extsw   r4,r3
    10000768:   fe ff 62 3c     addis   r3,r2,-2
    1000076c:   98 8b 63 38     addi    r3,r3,-29800
    10000770:   51 fd ff 4b     bl      100004c0
<00000039.plt_call.printf@@GLIBC_2.17>
    10000774:   18 00 41 e8     ld      r2,24(r1)
    10000778:   60 00 21 38     addi    r1,r1,96
    1000077c:   10 00 01 e8     ld      r0,16(r1)
    10000780:   a6 03 08 7c     mtlr    r0
    10000784:   20 00 80 4e     blr
    10000788:   00 00 00 60     nop
    1000078c:   00 00 42 60     ori     r2,r2,0
    10000790:   28 1c 40 7d     ldbrx   r10,0,r3
    10000794:   28 24 00 7d     ldbrx   r8,0,r4
    10000798:   51 50 28 7d     subf.   r9,r8,r10
    1000079c:   54 00 82 41     beq     100007f0 <do_test+0xc0>
    100007a0:   00 00 20 39     li      r9,0
    100007a4:   f8 43 43 7d     cmpb    r3,r10,r8
    100007a8:   f8 4b 49 7d     cmpb    r9,r10,r9
    100007ac:   38 1b 23 7d     orc     r3,r9,r3
    100007b0:   74 00 63 7c     cntlzd  r3,r3
    100007b4:   08 00 63 38     addi    r3,r3,8
    100007b8:   30 1e 4a 79     rldcl   r10,r10,r3,56
    100007bc:   30 1e 03 79     rldcl   r3,r8,r3,56
    100007c0:   50 50 23 7d     subf    r9,r3,r10
    100007c4:   78 4b 23 7d     mr      r3,r9
    100007c8:   b4 07 64 7c     extsw   r4,r3
    100007cc:   fe ff 62 3c     addis   r3,r2,-2
    100007d0:   98 8b 63 38     addi    r3,r3,-29800
    100007d4:   ed fc ff 4b     bl      100004c0
<00000039.plt_call.printf@@GLIBC_2.17>
    100007d8:   18 00 41 e8     ld      r2,24(r1)
    100007dc:   60 00 21 38     addi    r1,r1,96
    100007e0:   10 00 01 e8     ld      r0,16(r1)
    100007e4:   a6 03 08 7c     mtlr    r0
    100007e8:   20 00 80 4e     blr
    100007ec:   00 00 42 60     ori     r2,r2,0
    100007f0:   f8 4b 4a 7d     cmpb    r10,r10,r9
    100007f4:   00 00 aa 2f     cmpdi   cr7,r10,0
    100007f8:   cc ff 9e 40     bne     cr7,100007c4 <do_test+0x94>
    100007fc:   08 00 23 39     addi    r9,r3,8
    10000800:   28 4c 40 7d     ldbrx   r10,0,r9
    10000804:   08 00 24 39     addi    r9,r4,8
    10000808:   28 4c 00 7d     ldbrx   r8,0,r9
    1000080c:   51 50 28 7d     subf.   r9,r8,r10
    10000810:   90 ff 82 40     bne     100007a0 <do_test+0x70>
    10000814:   f8 4b 4a 7d     cmpb    r10,r10,r9
    10000818:   00 00 aa 2f     cmpdi   cr7,r10,0
    1000081c:   a8 ff 9e 40     bne     cr7,100007c4 <do_test+0x94>
    10000820:   10 00 23 39     addi    r9,r3,16
    10000824:   28 4c 40 7d     ldbrx   r10,0,r9
    10000828:   10 00 24 39     addi    r9,r4,16
    1000082c:   28 4c 00 7d     ldbrx   r8,0,r9
    10000830:   51 50 28 7d     subf.   r9,r8,r10
    10000834:   6c ff 82 40     bne     100007a0 <do_test+0x70>
    10000838:   f8 4b 4a 7d     cmpb    r10,r10,r9
    1000083c:   00 00 aa 2f     cmpdi   cr7,r10,0
    10000840:   84 ff 9e 40     bne     cr7,100007c4 <do_test+0x94>
    10000844:   18 00 23 39     addi    r9,r3,24
    10000848:   28 4c 40 7d     ldbrx   r10,0,r9
    1000084c:   18 00 24 39     addi    r9,r4,24
    10000850:   28 4c 00 7d     ldbrx   r8,0,r9
    10000854:   51 50 28 7d     subf.   r9,r8,r10
    10000858:   48 ff 82 40     bne     100007a0 <do_test+0x70>
    1000085c:   f8 4b 4a 7d     cmpb    r10,r10,r9
    10000860:   00 00 aa 2f     cmpdi   cr7,r10,0
    10000864:   60 ff 9e 40     bne     cr7,100007c4 <do_test+0x94>
    10000868:   20 00 23 39     addi    r9,r3,32
    1000086c:   28 4c 40 7d     ldbrx   r10,0,r9
    10000870:   20 00 24 39     addi    r9,r4,32
    10000874:   28 4c 00 7d     ldbrx   r8,0,r9
    10000878:   51 50 28 7d     subf.   r9,r8,r10
    1000087c:   24 ff 82 40     bne     100007a0 <do_test+0x70>
    10000880:   f8 4b 4a 7d     cmpb    r10,r10,r9
    10000884:   00 00 aa 2f     cmpdi   cr7,r10,0
    10000888:   3c ff 9e 40     bne     cr7,100007c4 <do_test+0x94>
    1000088c:   28 00 23 39     addi    r9,r3,40
    10000890:   28 4c 40 7d     ldbrx   r10,0,r9
    10000894:   28 00 24 39     addi    r9,r4,40
    10000898:   28 4c 00 7d     ldbrx   r8,0,r9
    1000089c:   51 50 28 7d     subf.   r9,r8,r10
    100008a0:   00 ff 82 40     bne     100007a0 <do_test+0x70>
    100008a4:   f8 4b 4a 7d     cmpb    r10,r10,r9
    100008a8:   00 00 aa 2f     cmpdi   cr7,r10,0
    100008ac:   18 ff 9e 40     bne     cr7,100007c4 <do_test+0x94>
    100008b0:   30 00 23 39     addi    r9,r3,48
    100008b4:   28 4c 40 7d     ldbrx   r10,0,r9
    100008b8:   30 00 24 39     addi    r9,r4,48
    100008bc:   28 4c 00 7d     ldbrx   r8,0,r9
    100008c0:   51 50 28 7d     subf.   r9,r8,r10
    100008c4:   dc fe 82 40     bne     100007a0 <do_test+0x70>
    100008c8:   f8 4b 4a 7d     cmpb    r10,r10,r9
    100008cc:   00 00 aa 2f     cmpdi   cr7,r10,0
    100008d0:   f4 fe 9e 40     bne     cr7,100007c4 <do_test+0x94>
    100008d4:   38 00 23 39     addi    r9,r3,56
    100008d8:   28 4c 40 7d     ldbrx   r10,0,r9
    100008dc:   38 00 24 39     addi    r9,r4,56
    100008e0:   28 4c 00 7d     ldbrx   r8,0,r9
    100008e4:   51 50 28 7d     subf.   r9,r8,r10
    100008e8:   b8 fe 82 40     bne     100007a0 <do_test+0x70>
    100008ec:   f8 4b 4a 7d     cmpb    r10,r10,r9
    100008f0:   00 00 aa 2f     cmpdi   cr7,r10,0
    100008f4:   d0 fe 9e 40     bne     cr7,100007c4 <do_test+0x94>
    100008f8:   40 00 84 38     addi    r4,r4,64
    100008fc:   40 00 63 38     addi    r3,r3,64
    10000900:   5c fe ff 4b     b       1000075c <do_test+0x2c>
    10000904:   00 00 00 00     .long 0x0
    10000908:   00 00 00 01     .long 0x1000000
    1000090c:   80 00 00 00     .long 0x80

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to