https://sourceware.org/bugzilla/show_bug.cgi?id=26198
Bug ID: 26198
Summary: Failure to merge read only data of machine code object
file and LTO object file on MinGW
Product: binutils
Version: 2.35 (HEAD)
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: markus.boeck02 at gmail dot com
Target Milestone: ---
Given following C++ source code:
test.cpp:
#include <typeinfo>
class A
{
};
int
#ifndef LTO
foo()
#else
bar()
#endif
{
return typeid(A).hash_code();
}
If compiled twice using following commands with g++ with the x86_64-w64-mingw32
target:
g++ -c test.cpp -o test1.o
g++ -c test.cpp -DLTO -flto -fno-fat-lto-objects -o test2.o
And then attempted to be linked together using:
g++ -shared test1.o test2.o
yields following linker errors:
c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/10/../../../../x86_64-w64-mingw32/bin/ld.exe:
test2.o (symbol from plugin):(.gnu.linkonce.t._ZNKSt9type_info4nameEv+0x0):
multiple definition of `std::type_info::name() const';
test1.o:test.cpp:(.text$_ZNKSt9type_info4nameEv[_ZNKSt9type_info4nameEv]+0x0):
first defined here
c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/10/../../../../x86_64-w64-mingw32/bin/ld.exe:
test2.o (symbol from
plugin):(.gnu.linkonce.t._ZNKSt9type_info9hash_codeEv+0x0): multiple definition
of `std::type_info::hash_code() const';
test1.o:test.cpp:(.text$_ZNKSt9type_info9hash_codeEv[_ZNKSt9type_info9hash_codeEv]+0x0):
first defined here
c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/10/../../../../x86_64-w64-mingw32/bin/ld.exe:
test2.o (symbol from plugin):(.gnu.linkonce.t._ZTI1A+0x0): multiple definition
of `typeinfo for A'; test1.o:test.cpp:(.rdata$_ZTI1A[_ZTI1A]+0x0): first
defined here
c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/10/../../../../x86_64-w64-mingw32/bin/ld.exe:
test2.o (symbol from plugin):(.gnu.linkonce.t._ZTS1A+0x0): multiple definition
of `typeinfo name for A'; test1.o:test.cpp:(.rdata$_ZTS1A[_ZTS1A]+0x0): first
defined here
collect2.exe: error: ld returned 1 exit
status
Failed to reproduce this issue with a linux target
GCC version used was from the GCC 10 Branch at revision
d73846862b5e4cd381bb43024efdcbf6bd61e888
and binutils trunk at revision 33d1369f183f1c276e3f0f52b5573fb2f5843b1c
nm output of test1.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 p
.pdata$_ZNKSt9type_info4nameEv
0000000000000000 p .pdata$_ZNKSt9type_info9hash_codeEv
0000000000000000 r
.rdata$_ZTI1A
0000000000000000 r .rdata$_ZTS1A
0000000000000000 r
.rdata$zzz
0000000000000000 t .text
0000000000000000 t
.text$_ZNKSt9type_info4nameEv
0000000000000000 t .text$_ZNKSt9type_info9hash_codeEv
0000000000000000 r
.xdata
0000000000000000 r .xdata$_ZNKSt9type_info4nameEv
0000000000000000 r
.xdata$_ZNKSt9type_info9hash_codeEv
U __gxx_personality_seh0
0000000000000000 T _Z3foov
0000000000000000 T _ZNKSt9type_info4nameEv
0000000000000000 T
_ZNKSt9type_info9hash_codeEv
U _ZSt11_Hash_bytesPKvyy
0000000000000000 R _ZTI1A
0000000000000000 R _ZTS1A
U _ZTVN10__cxxabiv117__class_type_infoE
U strlen
gcc-nm output of test2.o:
U __gxx_personality_seh0
00000000 T _Z3barv
00000000 T _ZNKSt9type_info4nameEv
00000000 T _ZNKSt9type_info9hash_codeEv
U _ZSt11_Hash_bytesPKvyy
00000000 D _ZTI1A
00000000 D _ZTS1A
U _ZTVN10__cxxabiv117__class_type_infoE
--
You are receiving this mail because:
You are on the CC list for the bug.
