summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDisassembler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/MC/MCDisassembler.cpp')
-rw-r--r--llvm/lib/MC/MCDisassembler.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/MC/MCDisassembler.cpp b/llvm/lib/MC/MCDisassembler.cpp
index c4cdbba26e2..bfd51ab1af9 100644
--- a/llvm/lib/MC/MCDisassembler.cpp
+++ b/llvm/lib/MC/MCDisassembler.cpp
@@ -23,9 +23,14 @@ MCDisassembler::setupForSymbolicDisassembly(
void *DisInfo,
MCContext *Ctx,
OwningPtr<MCRelocationInfo> &RelInfo) {
+ this->GetOpInfo = GetOpInfo;
+ this->SymbolLookUp = SymbolLookUp;
+ this->DisInfo = DisInfo;
+ this->Ctx = Ctx;
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
- Symbolizer.reset(new MCExternalSymbolizer(*Ctx, RelInfo, GetOpInfo,
- SymbolLookUp, DisInfo));
+ if (!Symbolizer)
+ Symbolizer.reset(new MCExternalSymbolizer(*Ctx, RelInfo, GetOpInfo,
+ SymbolLookUp, DisInfo));
}
bool MCDisassembler::tryAddingSymbolicOperand(MCInst &Inst, int64_t Value,
OpenPOWER on IntegriCloud