From 7fd03c55f3a60a00c565a5458bf62d1d440f65ef Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Thu, 27 Mar 2014 02:39:01 +0000 Subject: [PATCH] Update MCSymbolizer and its subclasses' constructors to reflect the fact that they take ownership of the RelocationInfo they're constructed with. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204891 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCExternalSymbolizer.h | 6 +++--- include/llvm/MC/MCObjectSymbolizer.h | 4 ++-- include/llvm/MC/MCSymbolizer.h | 2 +- lib/MC/MCDisassembler.cpp | 5 +++-- lib/MC/MCExternalSymbolizer.cpp | 6 +++--- lib/MC/MCObjectSymbolizer.cpp | 21 +++++++++++---------- lib/MC/MCSymbolizer.cpp | 4 ++-- tools/llvm-objdump/llvm-objdump.cpp | 3 ++- 8 files changed, 27 insertions(+), 24 deletions(-) diff --git a/include/llvm/MC/MCExternalSymbolizer.h b/include/llvm/MC/MCExternalSymbolizer.h index 02f9230f207..cab915234f3 100644 --- a/include/llvm/MC/MCExternalSymbolizer.h +++ b/include/llvm/MC/MCExternalSymbolizer.h @@ -39,11 +39,11 @@ class MCExternalSymbolizer : public MCSymbolizer { public: MCExternalSymbolizer(MCContext &Ctx, - std::unique_ptr &RelInfo, + std::unique_ptr RelInfo, LLVMOpInfoCallback getOpInfo, LLVMSymbolLookupCallback symbolLookUp, void *disInfo) - : MCSymbolizer(Ctx, RelInfo), GetOpInfo(getOpInfo), - SymbolLookUp(symbolLookUp), DisInfo(disInfo) {} + : MCSymbolizer(Ctx, std::move(RelInfo)), GetOpInfo(getOpInfo), + SymbolLookUp(symbolLookUp), DisInfo(disInfo) {} bool tryAddingSymbolicOperand(MCInst &MI, raw_ostream &CommentStream, int64_t Value, uint64_t Address, bool IsBranch, diff --git a/include/llvm/MC/MCObjectSymbolizer.h b/include/llvm/MC/MCObjectSymbolizer.h index 099713d41e6..f75b7f58a14 100644 --- a/include/llvm/MC/MCObjectSymbolizer.h +++ b/include/llvm/MC/MCObjectSymbolizer.h @@ -41,7 +41,7 @@ protected: const object::RelocationRef *findRelocationAt(uint64_t Addr); const object::SectionRef *findSectionContaining(uint64_t Addr); - MCObjectSymbolizer(MCContext &Ctx, std::unique_ptr &RelInfo, + MCObjectSymbolizer(MCContext &Ctx, std::unique_ptr RelInfo, const object::ObjectFile *Obj); public: @@ -65,7 +65,7 @@ public: /// \brief Create an object symbolizer for \p Obj. static MCObjectSymbolizer * createObjectSymbolizer(MCContext &Ctx, - std::unique_ptr &RelInfo, + std::unique_ptr RelInfo, const object::ObjectFile *Obj); private: diff --git a/include/llvm/MC/MCSymbolizer.h b/include/llvm/MC/MCSymbolizer.h index 954e9ce4163..4f4ab79d462 100644 --- a/include/llvm/MC/MCSymbolizer.h +++ b/include/llvm/MC/MCSymbolizer.h @@ -46,7 +46,7 @@ protected: public: /// \brief Construct an MCSymbolizer, taking ownership of \p RelInfo. - MCSymbolizer(MCContext &Ctx, std::unique_ptr &RelInfo); + MCSymbolizer(MCContext &Ctx, std::unique_ptr RelInfo); virtual ~MCSymbolizer(); /// \brief Try to add a symbolic operand instead of \p Value to the MCInst. diff --git a/lib/MC/MCDisassembler.cpp b/lib/MC/MCDisassembler.cpp index 18f0f2f0b2b..af426e2d019 100644 --- a/lib/MC/MCDisassembler.cpp +++ b/lib/MC/MCDisassembler.cpp @@ -25,8 +25,9 @@ void MCDisassembler::setupForSymbolicDisassembly( this->Ctx = Ctx; assert(Ctx != 0 && "No MCContext given for symbolic disassembly"); if (!Symbolizer) - Symbolizer.reset(new MCExternalSymbolizer(*Ctx, RelInfo, GetOpInfo, - SymbolLookUp, DisInfo)); + Symbolizer.reset(new MCExternalSymbolizer(*Ctx, std::move(RelInfo), + GetOpInfo, SymbolLookUp, + DisInfo)); } void MCDisassembler::setupForSymbolicDisassembly( diff --git a/lib/MC/MCExternalSymbolizer.cpp b/lib/MC/MCExternalSymbolizer.cpp index 660a11c2742..839516e2532 100644 --- a/lib/MC/MCExternalSymbolizer.cpp +++ b/lib/MC/MCExternalSymbolizer.cpp @@ -191,8 +191,8 @@ MCSymbolizer *createMCSymbolizer(StringRef TT, LLVMOpInfoCallback GetOpInfo, MCRelocationInfo *RelInfo) { assert(Ctx != 0 && "No MCContext given for symbolic disassembly"); - std::unique_ptr RelInfoOwingPtr(RelInfo); - return new MCExternalSymbolizer(*Ctx, RelInfoOwingPtr, GetOpInfo, - SymbolLookUp, DisInfo); + return new MCExternalSymbolizer(*Ctx, + std::unique_ptr(RelInfo), + GetOpInfo, SymbolLookUp, DisInfo); } } diff --git a/lib/MC/MCObjectSymbolizer.cpp b/lib/MC/MCObjectSymbolizer.cpp index dc1253d6292..ba80d156532 100644 --- a/lib/MC/MCObjectSymbolizer.cpp +++ b/lib/MC/MCObjectSymbolizer.cpp @@ -35,7 +35,7 @@ class MCMachObjectSymbolizer : public MCObjectSymbolizer { public: MCMachObjectSymbolizer(MCContext &Ctx, - std::unique_ptr &RelInfo, + std::unique_ptr RelInfo, const MachOObjectFile *MOOF); StringRef findExternalFunctionAt(uint64_t Addr) override; @@ -46,10 +46,10 @@ public: } // End unnamed namespace MCMachObjectSymbolizer::MCMachObjectSymbolizer( - MCContext &Ctx, std::unique_ptr &RelInfo, + MCContext &Ctx, std::unique_ptr RelInfo, const MachOObjectFile *MOOF) - : MCObjectSymbolizer(Ctx, RelInfo, MOOF), MOOF(MOOF), StubsStart(0), - StubsCount(0), StubSize(0), StubsIndSymIndex(0) { + : MCObjectSymbolizer(Ctx, std::move(RelInfo), MOOF), MOOF(MOOF), + StubsStart(0), StubsCount(0), StubSize(0), StubsIndSymIndex(0) { for (const SectionRef &Section : MOOF->sections()) { StringRef Name; @@ -121,9 +121,10 @@ tryAddingPcLoadReferenceComment(raw_ostream &cStream, int64_t Value, //===- MCObjectSymbolizer -------------------------------------------------===// MCObjectSymbolizer::MCObjectSymbolizer( - MCContext &Ctx, std::unique_ptr &RelInfo, - const ObjectFile *Obj) - : MCSymbolizer(Ctx, RelInfo), Obj(Obj), SortedSections(), AddrToReloc() {} + MCContext &Ctx, std::unique_ptr RelInfo, + const ObjectFile *Obj) + : MCSymbolizer(Ctx, std::move(RelInfo)), Obj(Obj), SortedSections(), + AddrToReloc() {} bool MCObjectSymbolizer:: tryAddingSymbolicOperand(MCInst &MI, raw_ostream &cStream, @@ -191,11 +192,11 @@ StringRef MCObjectSymbolizer::findExternalFunctionAt(uint64_t Addr) { } MCObjectSymbolizer *MCObjectSymbolizer::createObjectSymbolizer( - MCContext &Ctx, std::unique_ptr &RelInfo, + MCContext &Ctx, std::unique_ptr RelInfo, const ObjectFile *Obj) { if (const MachOObjectFile *MOOF = dyn_cast(Obj)) - return new MCMachObjectSymbolizer(Ctx, RelInfo, MOOF); - return new MCObjectSymbolizer(Ctx, RelInfo, Obj); + return new MCMachObjectSymbolizer(Ctx, std::move(RelInfo), MOOF); + return new MCObjectSymbolizer(Ctx, std::move(RelInfo), Obj); } // SortedSections implementation. diff --git a/lib/MC/MCSymbolizer.cpp b/lib/MC/MCSymbolizer.cpp index 6395b113512..bb1a1c7c513 100644 --- a/lib/MC/MCSymbolizer.cpp +++ b/lib/MC/MCSymbolizer.cpp @@ -13,8 +13,8 @@ using namespace llvm; MCSymbolizer::MCSymbolizer(MCContext &Ctx, - std::unique_ptr &RelInfo) - : Ctx(Ctx), RelInfo(RelInfo.release()) {} + std::unique_ptr RelInfo) + : Ctx(Ctx), RelInfo(std::move(RelInfo)) {} MCSymbolizer::~MCSymbolizer() { } diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp index 42bbf731ff9..729fcbaff48 100644 --- a/tools/llvm-objdump/llvm-objdump.cpp +++ b/tools/llvm-objdump/llvm-objdump.cpp @@ -325,7 +325,8 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) { TheTarget->createMCRelocationInfo(TripleName, *Ctx.get())); if (RelInfo) { std::unique_ptr Symzer( - MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(), RelInfo, Obj)); + MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(), + std::move(RelInfo), Obj)); if (Symzer) DisAsm->setSymbolizer(std::move(Symzer)); } -- 2.34.1