Summary: | [2.35|regression|bisected] DWARF error: could not find variable specification | ||
---|---|---|---|
Product: | binutils | Reporter: | xantares09 |
Component: | ld | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | hjl.tools, xantares09 |
Priority: | P2 | ||
Version: | 2.35 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
xantares09
2020-08-21 13:16:09 UTC
bisecting leads to: commit 0e6a3f07f50723d1831291492b96fdf74bcbdc11 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 22 03:49:07 2020 -0700 ld: Properly override the IR definition We change the previous definition in the IR object to undefweak only after all LTO symbols have been read. bisecting leads to: commit 0e6a3f07f50723d1831291492b96fdf74bcbdc11 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 22 03:49:07 2020 -0700 ld: Properly override the IR definition We change the previous definition in the IR object to undefweak only after all LTO symbols have been read. reverting this commit on current master fixes the issue (conflicts in changelogs only) I think this a latent problem that ld doesn't support some DWARF info generated by LLVM. can you elaborate when you mean generated ? llvm is not running here, we just link against it (llvm is compiled with gcc) The relevant error message is /usr/lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(string-inst.o): in function `ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag': /build/mingw-w64-gcc/src/build-i686-w64-mingw32/i686-w64-mingw32/libstdc++-v3/include/bits/basic_string.tcc:206: multiple definition of `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)'; gallivm_lp_bld_misc.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag+0x0): first defined here /usr/lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld: /usr/lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(string-inst.o): in function `ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag': /build/mingw-w64-gcc/src/build-i686-w64-mingw32/i686-w64-mingw32/libstdc++-v3/include/bits/basic_string.tcc:206: multiple definition of `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)'; gallivm_lp_bld_misc.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag+0x0): first defined here _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag are defined in .gnu.linkonce.t sections and multiple definition should be OK. Why is it a problem? I dont know. Maybe windows binary format dont support multiple definitions ? I thought the most important part was: ld: DWARF error: could not find variable specification at offset 377 I believe the DWARF parsing error has been fixed. |