mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-06 20:32:19 +00:00
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:
parent
7d3c316353
commit
7fd03c55f3
@ -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,
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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(
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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() {
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user