https://bugs.kde.org/show_bug.cgi?id=386945
--- Comment #24 from Mark Wielaard <***@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.