[Bug target/100912] powerpc64le: ieee128 long double incorrectly printed when using shared libstdc++
msc at linux dot ibm.com
gcc-bugzilla@gcc.gnu.org
Mon Jun 7 13:27:41 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100912
--- Comment #3 from Matheus Castanho <msc at linux dot ibm.com> ---
Using objdump -dr ~/usr/lib64/libstdc++.so.6:
[...]
00000000000c9340 <_ZSt16__convert_from_vRKP15__locale_structPciPKcz>:
c9340: 25 00 4c 3c addis r2,r12,37
c9344: c0 c5 42 38 addi r2,r2,-14912
c9348: a6 02 08 7c mflr r0
c934c: e8 ff a1 fb std r29,-24(r1)
c9350: f0 ff c1 fb std r30,-16(r1)
c9354: 78 33 dd 7c mr r29,r6
c9358: f8 ff e1 fb std r31,-8(r1)
c935c: 78 2b be 7c mr r30,r5
c9360: 78 23 9f 7c mr r31,r4
c9364: 10 00 01 f8 std r0,16(r1)
c9368: c1 ff 21 f8 stdu r1,-64(r1)
c936c: 80 00 e1 f8 std r7,128(r1)
c9370: 88 00 01 f9 std r8,136(r1)
c9374: 98 00 41 f9 std r10,152(r1)
c9378: 90 00 21 f9 std r9,144(r1)
c937c: 00 00 63 e8 ld r3,0(r3)
c9380: e1 07 ff 4b bl b9b60
<000006bf.plt_call.__uselocale@@GLIBC_2.17>
c9384: 18 00 41 e8 ld r2,24(r1)
c9388: 78 eb a5 7f mr r5,r29
c938c: 78 f3 c4 7f mr r4,r30
c9390: 80 00 c1 38 addi r6,r1,128
c9394: 78 1b 69 7c mr r9,r3
c9398: 78 fb e3 7f mr r3,r31
c939c: 78 4b 3e 7d mr r30,r9
c93a0: 01 7f ff 4b bl c12a0
<000006bf.plt_call.vsnprintf@@GLIBC_2.17>
c93a4: 18 00 41 e8 ld r2,24(r1)
c93a8: 78 1b 7f 7c mr r31,r3
c93ac: 78 f3 c3 7f mr r3,r30
c93b0: b1 07 ff 4b bl b9b60
<000006bf.plt_call.__uselocale@@GLIBC_2.17>
c93b4: 18 00 41 e8 ld r2,24(r1)
c93b8: 40 00 21 38 addi r1,r1,64
c93bc: 78 fb e3 7f mr r3,r31
c93c0: 10 00 01 e8 ld r0,16(r1)
c93c4: e8 ff a1 eb ld r29,-24(r1)
c93c8: f0 ff c1 eb ld r30,-16(r1)
c93cc: f8 ff e1 eb ld r31,-8(r1)
c93d0: a6 03 08 7c mtlr r0
c93d4: 20 00 80 4e blr
c93d8: 00 00 00 00 .long 0x0
c93dc: 00 09 00 01 .long 0x1000900
c93e0: 80 03 00 00 .long 0x380
c93e4: 00 00 00 60 nop
c93e8: 00 00 00 60 nop
c93ec: 00 00 00 60 nop
[...]
Using LD_LIBRARY_PATH instead of LD_PRELOAD shows the same behavior:
~/build/gcc> LD_LIBRARY_PATH=~/usr/lib64/ ./test-shared
6.95326e-310
Adding LD_DEBUG=libs shows that it is indeed using the libstdc++ I built:
~/build/gcc> LD_LIBRARY_PATH=~/usr/lib64/ LD_DEBUG=libs ./test-shared
38216: find library=libstdc++.so.6 [0]; searching
38216: search
path=/home/mscastanho/usr/lib64/glibc-hwcaps/power9:/home/mscastanho/usr/lib64/tls/power9/altivec/dfp:/home/mscastanho/usr/lib64/tls/power9/altivec:/home/
mscastanho/usr/lib64/tls/power9/dfp:/home/mscastanho/usr/lib64/tls/power9:/home/mscastanho/usr/lib64/tls/altivec/dfp:/home/mscastanho/usr/lib64/tls/altivec:/home/mscastanho/usr/l
ib64/tls/dfp:/home/mscastanho/usr/lib64/tls:/home/mscastanho/usr/lib64/power9/altivec/dfp:/home/mscastanho/usr/lib64/power9/altivec:/home/mscastanho/usr/lib64/power9/dfp:/home/ms
castanho/usr/lib64/power9:/home/mscastanho/usr/lib64/altivec/dfp:/home/mscastanho/usr/lib64/altivec:/home/mscastanho/usr/lib64/dfp:/home/mscastanho/usr/lib64
(LD_LIB
RARY_PATH)
38216: trying
file=/home/mscastanho/usr/lib64/glibc-hwcaps/power9/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/tls/power9/altivec/dfp/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/tls/power9/altivec/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/tls/power9/dfp/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/tls/power9/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/tls/altivec/dfp/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/tls/altivec/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/tls/dfp/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/tls/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/power9/altivec/dfp/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/power9/altivec/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/power9/dfp/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/power9/libstdc++.so.6
38216: trying
file=/home/mscastanho/usr/lib64/altivec/dfp/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/altivec/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/dfp/libstdc++.so.6
38216: trying file=/home/mscastanho/usr/lib64/libstdc++.so.6
38216:
38216: find library=libm.so.6 [0]; searching
38216: search path=/home/mscastanho/usr/lib64
(LD_LIBRARY_PATH)
38216: trying file=/home/mscastanho/usr/lib64/libm.so.6
38216: search cache=/etc/ld.so.cache
38216: trying file=/lib64/libm.so.6
38216:
38216: find library=libgcc_s.so.1 [0]; searching
38216: search path=/home/mscastanho/usr/lib64
(LD_LIBRARY_PATH)
38216: trying
file=/home/mscastanho/usr/lib64/libgcc_s.so.1
38216:
38216: find library=libc.so.6 [0]; searching
38216: search path=/home/mscastanho/usr/lib64
(LD_LIBRARY_PATH)
38216: trying
file=/home/mscastanho/usr/lib64/libc.so.6
38216: search cache=/etc/ld.so.cache
38216: trying file=/lib64/libc.so.6
38216:
38216:
38216: calling init: /lib64/ld64.so.2
38216:
38216:
38216: calling init: /lib64/libc.so.6
38216:
38216:
38216: calling init:
/home/mscastanho/usr/lib64/libgcc_s.so.1
38216:
38216:
38216: calling init: /lib64/libm.so.6
38216:
38216:
38216: calling init: /home/mscastanho/usr/lib64/libstdc++.so.6
38216:
38216:
38216: initialize program: ./test-shared
38216:
38216:
38216: transferring control: ./test-shared
38216:
6.95325e-310
38216:
38216: calling fini: ./test-shared [0]
38216:
38216:
38216: calling fini: /home/mscastanho/usr/lib64/libstdc++.so.6 [0]
38216:
38216:
38216: calling fini: /lib64/libm.so.6 [0]
38216:
38216:
38216: calling fini:
/home/mscastanho/usr/lib64/libgcc_s.so.1 [0]
More information about the Gcc-bugs
mailing list