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
This commit is contained in:
Lang Hames 2014-03-27 02:39:01 +00:00
parent 7d3c316353
commit 7fd03c55f3
8 changed files with 27 additions and 24 deletions

View File

@ -39,11 +39,11 @@ class MCExternalSymbolizer : public MCSymbolizer {
public:
MCExternalSymbolizer(MCContext &Ctx,
std::unique_ptr<MCRelocationInfo> &RelInfo,
std::unique_ptr<MCRelocationInfo> 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,

View File

@ -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<MCRelocationInfo> &RelInfo,
MCObjectSymbolizer(MCContext &Ctx, std::unique_ptr<MCRelocationInfo> 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<MCRelocationInfo> &RelInfo,
std::unique_ptr<MCRelocationInfo> RelInfo,
const object::ObjectFile *Obj);
private:

View File

@ -46,7 +46,7 @@ protected:
public:
/// \brief Construct an MCSymbolizer, taking ownership of \p RelInfo.
MCSymbolizer(MCContext &Ctx, std::unique_ptr<MCRelocationInfo> &RelInfo);
MCSymbolizer(MCContext &Ctx, std::unique_ptr<MCRelocationInfo> RelInfo);
virtual ~MCSymbolizer();
/// \brief Try to add a symbolic operand instead of \p Value to the MCInst.

View File

@ -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(

View File

@ -191,8 +191,8 @@ MCSymbolizer *createMCSymbolizer(StringRef TT, LLVMOpInfoCallback GetOpInfo,
MCRelocationInfo *RelInfo) {
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
std::unique_ptr<MCRelocationInfo> RelInfoOwingPtr(RelInfo);
return new MCExternalSymbolizer(*Ctx, RelInfoOwingPtr, GetOpInfo,
SymbolLookUp, DisInfo);
return new MCExternalSymbolizer(*Ctx,
std::unique_ptr<MCRelocationInfo>(RelInfo),
GetOpInfo, SymbolLookUp, DisInfo);
}
}

View File

@ -35,7 +35,7 @@ class MCMachObjectSymbolizer : public MCObjectSymbolizer {
public:
MCMachObjectSymbolizer(MCContext &Ctx,
std::unique_ptr<MCRelocationInfo> &RelInfo,
std::unique_ptr<MCRelocationInfo> 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<MCRelocationInfo> &RelInfo,
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> 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<MCRelocationInfo> &RelInfo,
const ObjectFile *Obj)
: MCSymbolizer(Ctx, RelInfo), Obj(Obj), SortedSections(), AddrToReloc() {}
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> 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<MCRelocationInfo> &RelInfo,
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> RelInfo,
const ObjectFile *Obj) {
if (const MachOObjectFile *MOOF = dyn_cast<MachOObjectFile>(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.

View File

@ -13,8 +13,8 @@
using namespace llvm;
MCSymbolizer::MCSymbolizer(MCContext &Ctx,
std::unique_ptr<MCRelocationInfo> &RelInfo)
: Ctx(Ctx), RelInfo(RelInfo.release()) {}
std::unique_ptr<MCRelocationInfo> RelInfo)
: Ctx(Ctx), RelInfo(std::move(RelInfo)) {}
MCSymbolizer::~MCSymbolizer() {
}

View File

@ -325,7 +325,8 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
TheTarget->createMCRelocationInfo(TripleName, *Ctx.get()));
if (RelInfo) {
std::unique_ptr<MCSymbolizer> Symzer(
MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(), RelInfo, Obj));
MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(),
std::move(RelInfo), Obj));
if (Symzer)
DisAsm->setSymbolizer(std::move(Symzer));
}