HomePhabricator

lld/coff: Simplify error message for comdat selection mismatches

Description

lld/coff: Simplify error message for comdat selection mismatches

Turns out nobody understands what "conflicting comdat type" is supposed to
mean, so just emit a regular "duplicate symbol" error and move the comdat
selection information into /verbose output.

This also fixes a problem where the error output would depend on the order of
.obj files passed. Before this patch:

  • If passed one_only.obj discard.obj, lld-link would only err "conflicting comdat type"
  • If passed discard.obj one_only.obj, lld-link would err "conflicting comdat type" and then "duplicate symbol"

Now lld-link only errs "duplicate symbol" in both cases.

I considered adding a "Detail" parameter to reportDuplicate() that's printed in
parens at the end of the "duplicate symbol" diag if present, and then put the
comdat selection mismatch details there, but since users don't know what it's
supposed to mean decided against it. I also considered special-casing the
Detail message for one_only/discard mismatches, which in practice means
"function defined as inline in TU 1 but as out-of-line in TU 2", but I wasn't
sure how useful it is so I omitted that too.

Differential Revision: https://reviews.llvm.org/D58180

Details

Committed
nicoFeb 13 2019, 7:16 PM
Differential Revision
D58180: lld/coff: Simplify error message for comdat selection mismatches
Parents
rL354005: [msan] Don't delete MSanAtExitRecord
Branches
Unknown
Tags
Unknown