Skip to content

LTO failure with mixed DWARF version metadata #44129

@llvmbot

Description

@llvmbot
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]

if (SrcBehaviorValue != DstBehaviorValue)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzilla

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions