mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-08 03:30:22 +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:
|
public:
|
||||||
MCExternalSymbolizer(MCContext &Ctx,
|
MCExternalSymbolizer(MCContext &Ctx,
|
||||||
std::unique_ptr<MCRelocationInfo> &RelInfo,
|
std::unique_ptr<MCRelocationInfo> RelInfo,
|
||||||
LLVMOpInfoCallback getOpInfo,
|
LLVMOpInfoCallback getOpInfo,
|
||||||
LLVMSymbolLookupCallback symbolLookUp, void *disInfo)
|
LLVMSymbolLookupCallback symbolLookUp, void *disInfo)
|
||||||
: MCSymbolizer(Ctx, RelInfo), GetOpInfo(getOpInfo),
|
: MCSymbolizer(Ctx, std::move(RelInfo)), GetOpInfo(getOpInfo),
|
||||||
SymbolLookUp(symbolLookUp), DisInfo(disInfo) {}
|
SymbolLookUp(symbolLookUp), DisInfo(disInfo) {}
|
||||||
|
|
||||||
bool tryAddingSymbolicOperand(MCInst &MI, raw_ostream &CommentStream,
|
bool tryAddingSymbolicOperand(MCInst &MI, raw_ostream &CommentStream,
|
||||||
int64_t Value, uint64_t Address, bool IsBranch,
|
int64_t Value, uint64_t Address, bool IsBranch,
|
||||||
|
@ -41,7 +41,7 @@ protected:
|
|||||||
const object::RelocationRef *findRelocationAt(uint64_t Addr);
|
const object::RelocationRef *findRelocationAt(uint64_t Addr);
|
||||||
const object::SectionRef *findSectionContaining(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);
|
const object::ObjectFile *Obj);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -65,7 +65,7 @@ public:
|
|||||||
/// \brief Create an object symbolizer for \p Obj.
|
/// \brief Create an object symbolizer for \p Obj.
|
||||||
static MCObjectSymbolizer *
|
static MCObjectSymbolizer *
|
||||||
createObjectSymbolizer(MCContext &Ctx,
|
createObjectSymbolizer(MCContext &Ctx,
|
||||||
std::unique_ptr<MCRelocationInfo> &RelInfo,
|
std::unique_ptr<MCRelocationInfo> RelInfo,
|
||||||
const object::ObjectFile *Obj);
|
const object::ObjectFile *Obj);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -46,7 +46,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
/// \brief Construct an MCSymbolizer, taking ownership of \p RelInfo.
|
/// \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();
|
virtual ~MCSymbolizer();
|
||||||
|
|
||||||
/// \brief Try to add a symbolic operand instead of \p Value to the MCInst.
|
/// \brief Try to add a symbolic operand instead of \p Value to the MCInst.
|
||||||
|
@ -25,8 +25,9 @@ void MCDisassembler::setupForSymbolicDisassembly(
|
|||||||
this->Ctx = Ctx;
|
this->Ctx = Ctx;
|
||||||
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
|
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
|
||||||
if (!Symbolizer)
|
if (!Symbolizer)
|
||||||
Symbolizer.reset(new MCExternalSymbolizer(*Ctx, RelInfo, GetOpInfo,
|
Symbolizer.reset(new MCExternalSymbolizer(*Ctx, std::move(RelInfo),
|
||||||
SymbolLookUp, DisInfo));
|
GetOpInfo, SymbolLookUp,
|
||||||
|
DisInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MCDisassembler::setupForSymbolicDisassembly(
|
void MCDisassembler::setupForSymbolicDisassembly(
|
||||||
|
@ -191,8 +191,8 @@ MCSymbolizer *createMCSymbolizer(StringRef TT, LLVMOpInfoCallback GetOpInfo,
|
|||||||
MCRelocationInfo *RelInfo) {
|
MCRelocationInfo *RelInfo) {
|
||||||
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
|
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
|
||||||
|
|
||||||
std::unique_ptr<MCRelocationInfo> RelInfoOwingPtr(RelInfo);
|
return new MCExternalSymbolizer(*Ctx,
|
||||||
return new MCExternalSymbolizer(*Ctx, RelInfoOwingPtr, GetOpInfo,
|
std::unique_ptr<MCRelocationInfo>(RelInfo),
|
||||||
SymbolLookUp, DisInfo);
|
GetOpInfo, SymbolLookUp, DisInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ class MCMachObjectSymbolizer : public MCObjectSymbolizer {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
MCMachObjectSymbolizer(MCContext &Ctx,
|
MCMachObjectSymbolizer(MCContext &Ctx,
|
||||||
std::unique_ptr<MCRelocationInfo> &RelInfo,
|
std::unique_ptr<MCRelocationInfo> RelInfo,
|
||||||
const MachOObjectFile *MOOF);
|
const MachOObjectFile *MOOF);
|
||||||
|
|
||||||
StringRef findExternalFunctionAt(uint64_t Addr) override;
|
StringRef findExternalFunctionAt(uint64_t Addr) override;
|
||||||
@ -46,10 +46,10 @@ public:
|
|||||||
} // End unnamed namespace
|
} // End unnamed namespace
|
||||||
|
|
||||||
MCMachObjectSymbolizer::MCMachObjectSymbolizer(
|
MCMachObjectSymbolizer::MCMachObjectSymbolizer(
|
||||||
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> &RelInfo,
|
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> RelInfo,
|
||||||
const MachOObjectFile *MOOF)
|
const MachOObjectFile *MOOF)
|
||||||
: MCObjectSymbolizer(Ctx, RelInfo, MOOF), MOOF(MOOF), StubsStart(0),
|
: MCObjectSymbolizer(Ctx, std::move(RelInfo), MOOF), MOOF(MOOF),
|
||||||
StubsCount(0), StubSize(0), StubsIndSymIndex(0) {
|
StubsStart(0), StubsCount(0), StubSize(0), StubsIndSymIndex(0) {
|
||||||
|
|
||||||
for (const SectionRef &Section : MOOF->sections()) {
|
for (const SectionRef &Section : MOOF->sections()) {
|
||||||
StringRef Name;
|
StringRef Name;
|
||||||
@ -121,9 +121,10 @@ tryAddingPcLoadReferenceComment(raw_ostream &cStream, int64_t Value,
|
|||||||
//===- MCObjectSymbolizer -------------------------------------------------===//
|
//===- MCObjectSymbolizer -------------------------------------------------===//
|
||||||
|
|
||||||
MCObjectSymbolizer::MCObjectSymbolizer(
|
MCObjectSymbolizer::MCObjectSymbolizer(
|
||||||
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> &RelInfo,
|
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> RelInfo,
|
||||||
const ObjectFile *Obj)
|
const ObjectFile *Obj)
|
||||||
: MCSymbolizer(Ctx, RelInfo), Obj(Obj), SortedSections(), AddrToReloc() {}
|
: MCSymbolizer(Ctx, std::move(RelInfo)), Obj(Obj), SortedSections(),
|
||||||
|
AddrToReloc() {}
|
||||||
|
|
||||||
bool MCObjectSymbolizer::
|
bool MCObjectSymbolizer::
|
||||||
tryAddingSymbolicOperand(MCInst &MI, raw_ostream &cStream,
|
tryAddingSymbolicOperand(MCInst &MI, raw_ostream &cStream,
|
||||||
@ -191,11 +192,11 @@ StringRef MCObjectSymbolizer::findExternalFunctionAt(uint64_t Addr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MCObjectSymbolizer *MCObjectSymbolizer::createObjectSymbolizer(
|
MCObjectSymbolizer *MCObjectSymbolizer::createObjectSymbolizer(
|
||||||
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> &RelInfo,
|
MCContext &Ctx, std::unique_ptr<MCRelocationInfo> RelInfo,
|
||||||
const ObjectFile *Obj) {
|
const ObjectFile *Obj) {
|
||||||
if (const MachOObjectFile *MOOF = dyn_cast<MachOObjectFile>(Obj))
|
if (const MachOObjectFile *MOOF = dyn_cast<MachOObjectFile>(Obj))
|
||||||
return new MCMachObjectSymbolizer(Ctx, RelInfo, MOOF);
|
return new MCMachObjectSymbolizer(Ctx, std::move(RelInfo), MOOF);
|
||||||
return new MCObjectSymbolizer(Ctx, RelInfo, Obj);
|
return new MCObjectSymbolizer(Ctx, std::move(RelInfo), Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SortedSections implementation.
|
// SortedSections implementation.
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
MCSymbolizer::MCSymbolizer(MCContext &Ctx,
|
MCSymbolizer::MCSymbolizer(MCContext &Ctx,
|
||||||
std::unique_ptr<MCRelocationInfo> &RelInfo)
|
std::unique_ptr<MCRelocationInfo> RelInfo)
|
||||||
: Ctx(Ctx), RelInfo(RelInfo.release()) {}
|
: Ctx(Ctx), RelInfo(std::move(RelInfo)) {}
|
||||||
|
|
||||||
MCSymbolizer::~MCSymbolizer() {
|
MCSymbolizer::~MCSymbolizer() {
|
||||||
}
|
}
|
||||||
|
@ -325,7 +325,8 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
|
|||||||
TheTarget->createMCRelocationInfo(TripleName, *Ctx.get()));
|
TheTarget->createMCRelocationInfo(TripleName, *Ctx.get()));
|
||||||
if (RelInfo) {
|
if (RelInfo) {
|
||||||
std::unique_ptr<MCSymbolizer> Symzer(
|
std::unique_ptr<MCSymbolizer> Symzer(
|
||||||
MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(), RelInfo, Obj));
|
MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(),
|
||||||
|
std::move(RelInfo), Obj));
|
||||||
if (Symzer)
|
if (Symzer)
|
||||||
DisAsm->setSymbolizer(std::move(Symzer));
|
DisAsm->setSymbolizer(std::move(Symzer));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user