- Notifications
You must be signed in to change notification settings - Fork 15.2k
Description
| Bugzilla Link | 44784 |
| Resolution | FIXED |
| Resolved on | Feb 11, 2020 01:42 |
| Version | unspecified |
| OS | Windows NT |
| Blocks | #43900 |
| Reporter | LLVM Bugzilla Contributor |
| CC | @dwblaikie,@froydnj,@zmodem |
Extended Description
While testing the 10.0 release branch, we ran into the following situation:
-
We use rustc 1.39 (based on LLVM 9) to build (with LTO) some Rust code, and the resulting object file has a piece of metadata saying the DWARF version is 2 and the behavior is
llvm::Module::Warning. -
We use clang 10 to build (with LTO) some C++ code, and the resulting object file has a piece of metadata saying the DWARF version is 4 and the behavior is
llvm::Module::Max, because of the change in [1].
(I don't know why we have mismatched DWARF versions.)
- When we link the objects together, previously we would just get a bunch of warning spam, but now we fail with an LTO error because of the mismatch in behaviors [2].
@dblaikie: Is this scenario expected to be supported? From my reading of the changeset, it sounds like the desired behavior would be to upgrade to the higher version, and perhaps warn, but not fail the build. So maybe the mismatched-behaviors check is too aggressive in this case. But correct me if I've misunderstood the intent. Or maybe it's our fault for using mixed LLVM versions.
[1] e956952
[2]
llvm-project/llvm/lib/Linker/IRMover.cpp
Line 1280 in d811754
| if (SrcBehaviorValue != DstBehaviorValue) |