On Thu, Jun 18, 2015 at 11:05 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>> This patch causes failures in arm-none-linux-gnueabihf testing: >> >> PASS->FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, >> -flto -O0 -std=c++11 >> >> .../arm-none-linux-gnueabihf/obj/gcc4/gcc/testsuite/g++2/../../xg++ >> -B.../arm-none-linux-gnueabihf/obj/gcc4/gcc/testsuite/g++2/../../ >> cp_lto_pr65276_0.o cp_lto_pr65276_1.o -fno-diagnostics-show-caret >> -fdiagnostics-color=never -nostdinc++ >> -I.../arm-none-linux-gnueabihf/obj/gcc4/arm-none-linux-gnueabihf/libstdc++-v3/include/arm-none-linux-gnueabihf >> >> -I.../arm-none-linux-gnueabihf/obj/gcc4/arm-none-linux-gnueabihf/libstdc++-v3/include >> -I.../gcc/libstdc++-v3/libsupc++ -I.../gcc/libstdc++-v3/include/backward >> -I.../gcc/libstdc++-v3/testsuite/util -fmessage-length=0 -flto -O0 >> -std=c++11 >> -L.../arm-none-linux-gnueabihf/obj/gcc4/arm-none-linux-gnueabihf/./libstdc++-v3/src/.libs >> >> -B.../arm-none-linux-gnueabihf/obj/gcc4/arm-none-linux-gnueabihf/./libstdc++-v3/src/.libs >> >> -L.../arm-none-linux-gnueabihf/obj/gcc4/arm-none-linux-gnueabihf/./libstdc++-v3/src/.libs >> -o g++-dg-lto-pr65276-01.exe >> cp_lto_pr65276_1.o (symbol from plugin): In function `typeinfo for >> std2::runtime_error': >> (.text+0x0): multiple definition of `typeinfo name for std2::exception' >> cp_lto_pr65276_0.o (symbol from plugin):(.text+0x0): first defined here >> cp_lto_pr65276_1.o (symbol from plugin): In function `typeinfo for >> std2::runtime_error': >> (.text+0x0): multiple definition of `typeinfo for std2::exception' >> cp_lto_pr65276_0.o (symbol from plugin):(.text+0x0): first defined here >> collect2: error: ld returned 1 exit status >> compiler exited with status 1 >> output is: >> cp_lto_pr65276_1.o (symbol from plugin): In function `typeinfo for >> std2::runtime_error': >> (.text+0x0): multiple definition of `typeinfo name for std2::exception' >> cp_lto_pr65276_0.o (symbol from plugin):(.text+0x0): first defined here >> cp_lto_pr65276_1.o (symbol from plugin): In function `typeinfo for >> std2::runtime_error': >> (.text+0x0): multiple definition of `typeinfo for std2::exception' >> cp_lto_pr65276_0.o (symbol from plugin):(.text+0x0): first defined here >> collect2: error: ld returned 1 exit status > > I discussed this patch privately with Jon, where he suggested that the > approach is OK. The patch also works for me on both, CentOS 5.11 and > Fedora 22. > > I'm out of ideas why this doesn't work on your system. Can you investigate it? FYI, patched testcase compiles to following assembly on CentOS 5.11: cp_lto_pr65276_0.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 <_ZN4std29exceptionD1Ev>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 48 83 ec 10 sub $0x10,%rsp 8: 48 89 7d f8 mov %rdi,0xfffffffffffffff8(%rbp) c: ba 00 00 00 00 mov $0x0,%edx d: R_X86_64_32 _ZTVN4std29exceptionE+0x10 11: 48 8b 45 f8 mov 0xfffffffffffffff8(%rbp),%rax 15: 48 89 10 mov %rdx,(%rax) 18: b8 00 00 00 00 mov $0x0,%eax 1d: 85 c0 test %eax,%eax 1f: 74 0c je 2d <_ZN4std29exceptionD1Ev+0x2d> 21: 48 8b 45 f8 mov 0xfffffffffffffff8(%rbp),%rax 25: 48 89 c7 mov %rax,%rdi 28: e8 00 00 00 00 callq 2d <_ZN4std29exceptionD1Ev+0x2d> 29: R_X86_64_PC32 _ZdlPv+0xfffffffffffffffc 2d: c9 leaveq 2e: c3 retq 2f: 90 nop 0000000000000030 <_ZN4std29exceptionD0Ev>: 30: 55 push %rbp 31: 48 89 e5 mov %rsp,%rbp 34: 48 83 ec 10 sub $0x10,%rsp 38: 48 89 7d f8 mov %rdi,0xfffffffffffffff8(%rbp) 3c: 48 8b 45 f8 mov 0xfffffffffffffff8(%rbp),%rax 40: 48 89 c7 mov %rax,%rdi 43: e8 00 00 00 00 callq 48 <_ZN4std29exceptionD0Ev+0x18> 44: R_X86_64_PC32 _ZN4std29exceptionD1Ev+0xfffffffffffffffc 48: 48 8b 45 f8 mov 0xfffffffffffffff8(%rbp),%rax 4c: 48 89 c7 mov %rax,%rdi 4f: e8 00 00 00 00 callq 54 <_ZN4std29exceptionD0Ev+0x24> 50: R_X86_64_PC32 _ZdlPv+0xfffffffffffffffc 54: c9 leaveq 55: c3 retq Unpatched testcase produces empty object file. Uros.