From f7b27d15f286b7da220395e8dc407934e00f5d25 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 30 Jun 2015 00:47:52 +0000 Subject: COFF: Implement SymbolBody::getDebugName() for DefinedBitcode symbols. Differential Revision: http://reviews.llvm.org/D10827 llvm-svn: 241029 --- lld/COFF/InputFiles.cpp | 3 ++- lld/COFF/Symbols.cpp | 3 +++ lld/COFF/Symbols.h | 9 +++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) (limited to 'lld/COFF') diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp index 2819d393e650..47a6d0a98198 100644 --- a/lld/COFF/InputFiles.cpp +++ b/lld/COFF/InputFiles.cpp @@ -291,7 +291,8 @@ std::error_code BitcodeFile::parse() { } else { bool Replaceable = (SymbolDef == LTO_SYMBOL_DEFINITION_TENTATIVE || (Attrs & LTO_SYMBOL_COMDAT)); - SymbolBodies.push_back(new (Alloc) DefinedBitcode(SymName, Replaceable)); + SymbolBodies.push_back(new (Alloc) DefinedBitcode(this, SymName, + Replaceable)); } } diff --git a/lld/COFF/Symbols.cpp b/lld/COFF/Symbols.cpp index 4f7d9191c13b..883666e5780b 100644 --- a/lld/COFF/Symbols.cpp +++ b/lld/COFF/Symbols.cpp @@ -138,6 +138,9 @@ std::string SymbolBody::getDebugName() { if (auto *D = dyn_cast(this)) { N += " "; N += D->File->getShortName(); + } else if (auto *D = dyn_cast(this)) { + N += " "; + N += D->File->getShortName(); } return N; } diff --git a/lld/COFF/Symbols.h b/lld/COFF/Symbols.h index 58e025689fef..6710698d6661 100644 --- a/lld/COFF/Symbols.h +++ b/lld/COFF/Symbols.h @@ -28,6 +28,7 @@ using llvm::object::coff_import_header; using llvm::object::coff_symbol_generic; class ArchiveFile; +class BitcodeFile; class InputFile; class ObjectFile; class SymbolBody; @@ -334,15 +335,19 @@ private: }; class DefinedBitcode : public Defined { + friend SymbolBody; public: - DefinedBitcode(StringRef N, bool IsReplaceable) - : Defined(DefinedBitcodeKind, N) { + DefinedBitcode(BitcodeFile *F, StringRef N, bool IsReplaceable) + : Defined(DefinedBitcodeKind, N), File(F) { this->IsReplaceable = IsReplaceable; } static bool classof(const SymbolBody *S) { return S->kind() == DefinedBitcodeKind; } + +private: + BitcodeFile *File; }; } // namespace coff -- cgit v1.2.3