diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h --- a/lld/ELF/Symbols.h +++ b/lld/ELF/Symbols.h @@ -482,6 +482,11 @@ IsPreemptible = Old.IsPreemptible; ScriptDefined = Old.ScriptDefined; + // Symbol length is computed lazily. If we already know a symbol length, + // propagate it. + if (NameData == New.NameData && NameSize == 0 && New.NameSize != 0) + NameSize = New.NameSize; + // Print out a log message if --trace-symbol was specified. // This is for debugging. if (Traced)