diff options
author | Fangrui Song <i@maskray.me> | 2020-12-20 21:04:12 -0800 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2020-12-20 21:04:12 -0800 |
commit | 553d4d08d2bee53d2cc19ea5160a0dfbffe12fa9 (patch) | |
tree | ec70d5a279b221c6285babfb27af18a5ebeebbdd /llvm/lib/MC/ELFObjectWriter.cpp | |
parent | f314bcffa3c6083079831dde4e7bc124a25e0c04 (diff) | |
download | llvm-553d4d08d2bee53d2cc19ea5160a0dfbffe12fa9.zip llvm-553d4d08d2bee53d2cc19ea5160a0dfbffe12fa9.tar.gz llvm-553d4d08d2bee53d2cc19ea5160a0dfbffe12fa9.tar.bz2 |
[MC] Report locations for .symver errors
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index 9cf29ba..d5da8de 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -1258,9 +1258,9 @@ void ELFObjectWriter::executePostLayoutBinding(MCAssembler &Asm, const MCAsmLayout &Layout) { // The presence of symbol versions causes undefined symbols and // versions declared with @@@ to be renamed. - for (const std::pair<StringRef, const MCSymbol *> &P : Asm.Symvers) { - StringRef AliasName = P.first; - const auto &Symbol = cast<MCSymbolELF>(*P.second); + for (const MCAssembler::Symver &S : Asm.Symvers) { + StringRef AliasName = S.Name; + const auto &Symbol = cast<MCSymbolELF>(*S.Sym); size_t Pos = AliasName.find('@'); assert(Pos != StringRef::npos); @@ -1286,18 +1286,16 @@ void ELFObjectWriter::executePostLayoutBinding(MCAssembler &Asm, if (!Symbol.isUndefined() && !Rest.startswith("@@@")) continue; - // FIXME: Get source locations for these errors or diagnose them earlier. if (Symbol.isUndefined() && Rest.startswith("@@") && !Rest.startswith("@@@")) { - Asm.getContext().reportError(SMLoc(), "versioned symbol " + AliasName + - " must be defined"); + Asm.getContext().reportError(S.Loc, "default version symbol " + + AliasName + " must be defined"); continue; } if (Renames.count(&Symbol) && Renames[&Symbol] != Alias) { - Asm.getContext().reportError( - SMLoc(), llvm::Twine("multiple symbol versions defined for ") + - Symbol.getName()); + Asm.getContext().reportError(S.Loc, Twine("multiple versions for ") + + Symbol.getName()); continue; } |