mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[Disassembler] Delete the VStream parameter of MCDisassembler::getInstruction()
The argument is llvm::null() everywhere except llvm::errs() in llvm-objdump in -DLLVM_ENABLE_ASSERTIONS=On builds. It is used by no target but X86 in -DLLVM_ENABLE_ASSERTIONS=On builds. If we ever have the needs to add verbose log to disassemblers, we can record log with a member function, instead of passing it around as an argument.
This commit is contained in:
parent
6d930a5412
commit
3a9f350cbb
@ -69,7 +69,6 @@ public:
|
||||
/// \param Address - The address, in the memory space of region, of the first
|
||||
/// byte of the instruction.
|
||||
/// \param Bytes - A reference to the actual bytes of the instruction.
|
||||
/// \param VStream - The stream to print warnings and diagnostic messages on.
|
||||
/// \param CStream - The stream to print comments and annotations on.
|
||||
/// \return - MCDisassembler::Success if the instruction is valid,
|
||||
/// MCDisassembler::SoftFail if the instruction was
|
||||
@ -77,7 +76,6 @@ public:
|
||||
/// MCDisassembler::Fail if the instruction was invalid.
|
||||
virtual DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const = 0;
|
||||
|
||||
/// May parse any prelude that precedes instructions after the start of a
|
||||
@ -88,13 +86,11 @@ public:
|
||||
/// \param Address - The address, in the memory space of region, of the first
|
||||
/// byte of the symbol.
|
||||
/// \param Bytes - A reference to the actual bytes at the symbol location.
|
||||
/// \param VStream - The stream to print warnings and diagnostic messages on.
|
||||
/// \param CStream - The stream to print comments and annotations on.
|
||||
/// \return - MCDisassembler::Success if the bytes are valid,
|
||||
/// MCDisassembler::Fail if the bytes were invalid.
|
||||
virtual DecodeStatus onSymbolStart(StringRef Name, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const;
|
||||
|
||||
private:
|
||||
|
@ -667,7 +667,7 @@ private:
|
||||
ArrayRef<uint8_t> SymbolBytes(SymbolMem.bytes_begin(), SymbolMem.size());
|
||||
|
||||
MCDisassembler::DecodeStatus S =
|
||||
Dis->getInstruction(Inst, Size, SymbolBytes, 0, nulls(), nulls());
|
||||
Dis->getInstruction(Inst, Size, SymbolBytes, 0, nulls());
|
||||
|
||||
return (S == MCDisassembler::Success);
|
||||
}
|
||||
|
@ -263,8 +263,7 @@ size_t LLVMDisasmInstruction(LLVMDisasmContextRef DCR, uint8_t *Bytes,
|
||||
MCDisassembler::DecodeStatus S;
|
||||
SmallVector<char, 64> InsnStr;
|
||||
raw_svector_ostream Annotations(InsnStr);
|
||||
S = DisAsm->getInstruction(Inst, Size, Data, PC,
|
||||
/*REMOVE*/ nulls(), Annotations);
|
||||
S = DisAsm->getInstruction(Inst, Size, Data, PC, Annotations);
|
||||
switch (S) {
|
||||
case MCDisassembler::Fail:
|
||||
case MCDisassembler::SoftFail:
|
||||
|
@ -16,9 +16,10 @@ using namespace llvm;
|
||||
|
||||
MCDisassembler::~MCDisassembler() = default;
|
||||
|
||||
MCDisassembler::DecodeStatus MCDisassembler::onSymbolStart(
|
||||
StringRef Name, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream, raw_ostream &CStream) const {
|
||||
MCDisassembler::DecodeStatus
|
||||
MCDisassembler::onSymbolStart(StringRef Name, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &CStream) const {
|
||||
Size = 0;
|
||||
return MCDisassembler::Success;
|
||||
}
|
||||
|
@ -251,7 +251,6 @@ static MCDisassembler *createAArch64Disassembler(const Target &T,
|
||||
DecodeStatus AArch64Disassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &OS,
|
||||
raw_ostream &CS) const {
|
||||
CommentStream = &CS;
|
||||
|
||||
|
@ -25,8 +25,7 @@ public:
|
||||
|
||||
MCDisassembler::DecodeStatus
|
||||
getInstruction(MCInst &Instr, uint64_t &Size, ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address, raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
uint64_t Address, raw_ostream &CStream) const override;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
@ -268,7 +268,6 @@ static bool isValidDPP8(const MCInst &MI) {
|
||||
DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes_,
|
||||
uint64_t Address,
|
||||
raw_ostream &WS,
|
||||
raw_ostream &CS) const {
|
||||
CommentStream = &CS;
|
||||
bool IsSDWA = false;
|
||||
|
@ -53,7 +53,7 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &WS, raw_ostream &CS) const override;
|
||||
raw_ostream &CS) const override;
|
||||
|
||||
const char* getRegClassName(unsigned RegClassID) const;
|
||||
|
||||
|
@ -42,7 +42,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
|
||||
@ -297,7 +296,6 @@ static DecodeStatus DecodeMoveHRegInstruction(MCInst &Inst, uint64_t Insn,
|
||||
DecodeStatus ARCDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &vStream,
|
||||
raw_ostream &cStream) const {
|
||||
MCDisassembler::DecodeStatus Result;
|
||||
if (Bytes.size() < 2) {
|
||||
|
@ -137,18 +137,15 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
|
||||
private:
|
||||
DecodeStatus getARMInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const;
|
||||
|
||||
DecodeStatus getThumbInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const;
|
||||
|
||||
mutable ITStatus ITBlock;
|
||||
@ -576,8 +573,7 @@ static MCDisassembler *createARMDisassembler(const Target &T,
|
||||
|
||||
// Post-decoding checks
|
||||
static DecodeStatus checkDecodedInstruction(MCInst &MI, uint64_t &Size,
|
||||
uint64_t Address, raw_ostream &OS,
|
||||
raw_ostream &CS,
|
||||
uint64_t Address, raw_ostream &CS,
|
||||
uint32_t Insn,
|
||||
DecodeStatus Result) {
|
||||
switch (MI.getOpcode()) {
|
||||
@ -609,17 +605,16 @@ static DecodeStatus checkDecodedInstruction(MCInst &MI, uint64_t &Size,
|
||||
|
||||
DecodeStatus ARMDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address, raw_ostream &OS,
|
||||
uint64_t Address,
|
||||
raw_ostream &CS) const {
|
||||
if (STI.getFeatureBits()[ARM::ModeThumb])
|
||||
return getThumbInstruction(MI, Size, Bytes, Address, OS, CS);
|
||||
return getARMInstruction(MI, Size, Bytes, Address, OS, CS);
|
||||
return getThumbInstruction(MI, Size, Bytes, Address, CS);
|
||||
return getARMInstruction(MI, Size, Bytes, Address, CS);
|
||||
}
|
||||
|
||||
DecodeStatus ARMDisassembler::getARMInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &OS,
|
||||
raw_ostream &CS) const {
|
||||
CommentStream = &CS;
|
||||
|
||||
@ -642,7 +637,7 @@ DecodeStatus ARMDisassembler::getARMInstruction(MCInst &MI, uint64_t &Size,
|
||||
decodeInstruction(DecoderTableARM32, MI, Insn, Address, this, STI);
|
||||
if (Result != MCDisassembler::Fail) {
|
||||
Size = 4;
|
||||
return checkDecodedInstruction(MI, Size, Address, OS, CS, Insn, Result);
|
||||
return checkDecodedInstruction(MI, Size, Address, CS, Insn, Result);
|
||||
}
|
||||
|
||||
struct DecodeTable {
|
||||
@ -673,7 +668,7 @@ DecodeStatus ARMDisassembler::getARMInstruction(MCInst &MI, uint64_t &Size,
|
||||
decodeInstruction(DecoderTableCoProc32, MI, Insn, Address, this, STI);
|
||||
if (Result != MCDisassembler::Fail) {
|
||||
Size = 4;
|
||||
return checkDecodedInstruction(MI, Size, Address, OS, CS, Insn, Result);
|
||||
return checkDecodedInstruction(MI, Size, Address, CS, Insn, Result);
|
||||
}
|
||||
|
||||
Size = 4;
|
||||
@ -906,7 +901,6 @@ void ARMDisassembler::UpdateThumbVFPPredicate(
|
||||
DecodeStatus ARMDisassembler::getThumbInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &OS,
|
||||
raw_ostream &CS) const {
|
||||
CommentStream = &CS;
|
||||
|
||||
@ -1010,7 +1004,7 @@ DecodeStatus ARMDisassembler::getThumbInstruction(MCInst &MI, uint64_t &Size,
|
||||
if (Result != MCDisassembler::Fail) {
|
||||
Size = 4;
|
||||
Check(Result, AddThumbPredicate(MI));
|
||||
return checkDecodedInstruction(MI, Size, Address, OS, CS, Insn32, Result);
|
||||
return checkDecodedInstruction(MI, Size, Address, CS, Insn32, Result);
|
||||
}
|
||||
|
||||
if (fieldFromInstruction(Insn32, 28, 4) == 0xE) {
|
||||
|
@ -40,7 +40,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
}
|
||||
@ -114,7 +113,6 @@ static const uint8_t *getDecoderTable(uint64_t Size) {
|
||||
DecodeStatus AVRDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
uint32_t Insn;
|
||||
|
||||
|
@ -67,7 +67,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
|
||||
uint8_t getInstClass(uint64_t Inst) const { return (Inst >> 56) & 0x7; };
|
||||
@ -162,7 +161,6 @@ static DecodeStatus readInstruction64(ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
DecodeStatus BPFDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
bool IsLittleEndian = getContext().getAsmInfo()->isLittleEndian();
|
||||
uint64_t Insn, Hi;
|
||||
|
@ -53,11 +53,9 @@ public:
|
||||
|
||||
DecodeStatus getSingleInstruction(MCInst &Instr, MCInst &MCB,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream, raw_ostream &CStream,
|
||||
bool &Complete) const;
|
||||
raw_ostream &CStream, bool &Complete) const;
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
void remapInstruction(MCInst &Instr) const;
|
||||
};
|
||||
@ -166,7 +164,6 @@ extern "C" void LLVMInitializeHexagonDisassembler() {
|
||||
DecodeStatus HexagonDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &os,
|
||||
raw_ostream &cs) const {
|
||||
DecodeStatus Result = DecodeStatus::Success;
|
||||
bool Complete = false;
|
||||
@ -179,7 +176,7 @@ DecodeStatus HexagonDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
if (Bytes.size() < HEXAGON_INSTR_SIZE)
|
||||
return MCDisassembler::Fail;
|
||||
MCInst *Inst = new (getContext()) MCInst;
|
||||
Result = getSingleInstruction(*Inst, MI, Bytes, Address, os, cs, Complete);
|
||||
Result = getSingleInstruction(*Inst, MI, Bytes, Address, cs, Complete);
|
||||
MI.addOperand(MCOperand::createInst(Inst));
|
||||
Size += HEXAGON_INSTR_SIZE;
|
||||
Bytes = Bytes.slice(HEXAGON_INSTR_SIZE);
|
||||
@ -290,9 +287,11 @@ static void adjustDuplex(MCInst &MI, MCContext &Context) {
|
||||
}
|
||||
}
|
||||
|
||||
DecodeStatus HexagonDisassembler::getSingleInstruction(
|
||||
MCInst &MI, MCInst &MCB, ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &os, raw_ostream &cs, bool &Complete) const {
|
||||
DecodeStatus HexagonDisassembler::getSingleInstruction(MCInst &MI, MCInst &MCB,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &cs,
|
||||
bool &Complete) const {
|
||||
assert(Bytes.size() >= HEXAGON_INSTR_SIZE);
|
||||
|
||||
uint32_t Instruction = support::endian::read32le(Bytes.data());
|
||||
|
@ -128,9 +128,10 @@ static void PostOperandDecodeAdjust(MCInst &Instr, uint32_t Insn) {
|
||||
}
|
||||
}
|
||||
|
||||
DecodeStatus LanaiDisassembler::getInstruction(
|
||||
MCInst &Instr, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream & /*VStream*/, raw_ostream & /*CStream*/) const {
|
||||
DecodeStatus
|
||||
LanaiDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream & /*CStream*/) const {
|
||||
uint32_t Insn;
|
||||
|
||||
DecodeStatus Result = readInstruction32(Bytes, Size, Insn);
|
||||
|
@ -28,8 +28,7 @@ public:
|
||||
// getInstruction - See MCDisassembler.
|
||||
MCDisassembler::DecodeStatus
|
||||
getInstruction(MCInst &Instr, uint64_t &Size, ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address, raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
uint64_t Address, raw_ostream &CStream) const override;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
@ -32,17 +32,14 @@ namespace {
|
||||
class MSP430Disassembler : public MCDisassembler {
|
||||
DecodeStatus getInstructionI(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const;
|
||||
|
||||
DecodeStatus getInstructionII(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const;
|
||||
|
||||
DecodeStatus getInstructionCJ(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const;
|
||||
|
||||
public:
|
||||
@ -51,7 +48,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
} // end anonymous namespace
|
||||
@ -233,7 +229,6 @@ static const uint8_t *getDecoderTable(AddrMode SrcAM, unsigned Words) {
|
||||
DecodeStatus MSP430Disassembler::getInstructionI(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
uint64_t Insn = support::endian::read16le(Bytes.data());
|
||||
AddrMode SrcAM = DecodeSrcAddrModeI(Insn);
|
||||
@ -289,7 +284,6 @@ DecodeStatus MSP430Disassembler::getInstructionI(MCInst &MI, uint64_t &Size,
|
||||
DecodeStatus MSP430Disassembler::getInstructionII(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
uint64_t Insn = support::endian::read16le(Bytes.data());
|
||||
AddrMode SrcAM = DecodeSrcAddrModeII(Insn);
|
||||
@ -345,7 +339,6 @@ static MSP430CC::CondCodes getCondCode(unsigned Cond) {
|
||||
DecodeStatus MSP430Disassembler::getInstructionCJ(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
uint64_t Insn = support::endian::read16le(Bytes.data());
|
||||
unsigned Cond = fieldFromInstruction(Insn, 10, 3);
|
||||
@ -367,7 +360,6 @@ DecodeStatus MSP430Disassembler::getInstructionCJ(MCInst &MI, uint64_t &Size,
|
||||
DecodeStatus MSP430Disassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
if (Bytes.size() < 2) {
|
||||
Size = 0;
|
||||
@ -378,10 +370,10 @@ DecodeStatus MSP430Disassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
unsigned Opc = fieldFromInstruction(Insn, 13, 3);
|
||||
switch (Opc) {
|
||||
case 0:
|
||||
return getInstructionII(MI, Size, Bytes, Address, VStream, CStream);
|
||||
return getInstructionII(MI, Size, Bytes, Address, CStream);
|
||||
case 1:
|
||||
return getInstructionCJ(MI, Size, Bytes, Address, VStream, CStream);
|
||||
return getInstructionCJ(MI, Size, Bytes, Address, CStream);
|
||||
default:
|
||||
return getInstructionI(MI, Size, Bytes, Address, VStream, CStream);
|
||||
return getInstructionI(MI, Size, Bytes, Address, CStream);
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +72,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
|
||||
@ -1220,7 +1219,6 @@ static DecodeStatus readInstruction32(ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
DecodeStatus MipsDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
uint32_t Insn;
|
||||
DecodeStatus Result;
|
||||
|
@ -34,7 +34,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
} // end anonymous namespace
|
||||
@ -323,7 +322,7 @@ static DecodeStatus decodeCRBitMOperand(MCInst &Inst, uint64_t Imm,
|
||||
|
||||
DecodeStatus PPCDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address, raw_ostream &OS,
|
||||
uint64_t Address,
|
||||
raw_ostream &CS) const {
|
||||
// Get the four bytes of the instruction.
|
||||
Size = 4;
|
||||
@ -350,4 +349,3 @@ DecodeStatus PPCDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
|
||||
return decodeInstruction(DecoderTable32, MI, Inst, Address, this, STI);
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
} // end anonymous namespace
|
||||
@ -315,7 +314,6 @@ static DecodeStatus decodeRVCInstrRdRs1Rs2(MCInst &Inst, unsigned Insn,
|
||||
DecodeStatus RISCVDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &OS,
|
||||
raw_ostream &CS) const {
|
||||
// TODO: This will need modification when supporting instruction set
|
||||
// extensions with instructions > 32-bits (up to 176 bits wide).
|
||||
|
@ -36,7 +36,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
}
|
||||
@ -332,7 +331,6 @@ static DecodeStatus readInstruction32(ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
DecodeStatus SparcDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const {
|
||||
uint32_t Insn;
|
||||
bool isLittleEndian = getContext().getAsmInfo()->isLittleEndian();
|
||||
|
@ -34,7 +34,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
|
||||
@ -449,7 +448,6 @@ static DecodeStatus decodeBDVAddr64Disp12Operand(MCInst &Inst, uint64_t Field,
|
||||
DecodeStatus SystemZDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes,
|
||||
uint64_t Address,
|
||||
raw_ostream &OS,
|
||||
raw_ostream &CS) const {
|
||||
// Get the first two bytes of the instruction.
|
||||
Size = 0;
|
||||
|
@ -45,11 +45,9 @@ class WebAssemblyDisassembler final : public MCDisassembler {
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
DecodeStatus onSymbolStart(StringRef Name, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
|
||||
public:
|
||||
@ -123,7 +121,7 @@ bool parseImmediate(MCInst &MI, uint64_t &Size, ArrayRef<uint8_t> Bytes) {
|
||||
|
||||
MCDisassembler::DecodeStatus WebAssemblyDisassembler::onSymbolStart(
|
||||
StringRef Name, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream, raw_ostream &CStream) const {
|
||||
raw_ostream &CStream) const {
|
||||
Size = 0;
|
||||
if (Address == 0) {
|
||||
// Start of a code section: we're parsing only the function count.
|
||||
@ -158,7 +156,7 @@ MCDisassembler::DecodeStatus WebAssemblyDisassembler::onSymbolStart(
|
||||
|
||||
MCDisassembler::DecodeStatus WebAssemblyDisassembler::getInstruction(
|
||||
MCInst &MI, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t /*Address*/,
|
||||
raw_ostream & /*OS*/, raw_ostream &CS) const {
|
||||
raw_ostream &CS) const {
|
||||
CommentStream = &CS;
|
||||
Size = 0;
|
||||
int Opc = nextByte(Bytes, Size);
|
||||
|
@ -140,7 +140,6 @@ public:
|
||||
public:
|
||||
DecodeStatus getInstruction(MCInst &instr, uint64_t &size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &vStream,
|
||||
raw_ostream &cStream) const override;
|
||||
|
||||
private:
|
||||
@ -175,7 +174,7 @@ X86GenericDisassembler::X86GenericDisassembler(
|
||||
|
||||
MCDisassembler::DecodeStatus X86GenericDisassembler::getInstruction(
|
||||
MCInst &Instr, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream, raw_ostream &CStream) const {
|
||||
raw_ostream &CStream) const {
|
||||
CommentStream = &CStream;
|
||||
|
||||
InternalInstruction InternalInstr;
|
||||
|
@ -37,7 +37,6 @@ public:
|
||||
|
||||
DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &VStream,
|
||||
raw_ostream &CStream) const override;
|
||||
};
|
||||
}
|
||||
@ -735,9 +734,10 @@ DecodeL4RSrcDstSrcDstInstruction(MCInst &Inst, unsigned Insn, uint64_t Address,
|
||||
return S;
|
||||
}
|
||||
|
||||
MCDisassembler::DecodeStatus XCoreDisassembler::getInstruction(
|
||||
MCInst &instr, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &vStream, raw_ostream &cStream) const {
|
||||
MCDisassembler::DecodeStatus
|
||||
XCoreDisassembler::getInstruction(MCInst &instr, uint64_t &Size,
|
||||
ArrayRef<uint8_t> Bytes, uint64_t Address,
|
||||
raw_ostream &cStream) const {
|
||||
uint16_t insn16;
|
||||
|
||||
if (!readInstruction16(Bytes, Address, Size, insn16)) {
|
||||
|
@ -478,7 +478,7 @@ void FileAnalysis::parseSectionContents(ArrayRef<uint8_t> SectionBytes,
|
||||
for (uint64_t Byte = 0; Byte < SectionBytes.size();) {
|
||||
bool ValidInstruction =
|
||||
Disassembler->getInstruction(Instruction, InstructionSize,
|
||||
SectionBytes.drop_front(Byte), 0, nulls(),
|
||||
SectionBytes.drop_front(Byte), 0,
|
||||
outs()) == MCDisassembler::Success;
|
||||
|
||||
Byte += InstructionSize;
|
||||
|
@ -106,7 +106,7 @@ void Analysis::writeSnippet(raw_ostream &OS, ArrayRef<uint8_t> Bytes,
|
||||
while (!Bytes.empty()) {
|
||||
MCInst MI;
|
||||
uint64_t MISize = 0;
|
||||
if (!Disasm_->getInstruction(MI, MISize, Bytes, 0, nulls(), nulls())) {
|
||||
if (!Disasm_->getInstruction(MI, MISize, Bytes, 0, nulls())) {
|
||||
writeEscaped<Tag>(OS, join(Lines, Separator));
|
||||
writeEscaped<Tag>(OS, Separator);
|
||||
writeEscaped<Tag>(OS, "[error decoding asm snippet]");
|
||||
|
@ -46,8 +46,7 @@ static bool PrintInsts(const MCDisassembler &DisAsm,
|
||||
MCInst Inst;
|
||||
|
||||
MCDisassembler::DecodeStatus S;
|
||||
S = DisAsm.getInstruction(Inst, Size, Data.slice(Index), Index,
|
||||
/*REMOVE*/ nulls(), nulls());
|
||||
S = DisAsm.getInstruction(Inst, Size, Data.slice(Index), Index, nulls());
|
||||
switch (S) {
|
||||
case MCDisassembler::Fail:
|
||||
SM.PrintMessage(SMLoc::getFromPointer(Bytes.second[Index]),
|
||||
|
@ -7326,12 +7326,6 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
}
|
||||
array_pod_sort(Dices.begin(), Dices.end());
|
||||
|
||||
#ifndef NDEBUG
|
||||
raw_ostream &DebugOut = DebugFlag ? dbgs() : nulls();
|
||||
#else
|
||||
raw_ostream &DebugOut = nulls();
|
||||
#endif
|
||||
|
||||
// Try to find debug info and set up the DIContext for it.
|
||||
std::unique_ptr<DIContext> diContext;
|
||||
std::unique_ptr<Binary> DSYMBinary;
|
||||
@ -7622,10 +7616,10 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
bool gotInst;
|
||||
if (UseThumbTarget)
|
||||
gotInst = ThumbDisAsm->getInstruction(Inst, Size, Bytes.slice(Index),
|
||||
PC, DebugOut, Annotations);
|
||||
PC, Annotations);
|
||||
else
|
||||
gotInst = DisAsm->getInstruction(Inst, Size, Bytes.slice(Index), PC,
|
||||
DebugOut, Annotations);
|
||||
Annotations);
|
||||
if (gotInst) {
|
||||
if (!NoShowRawInsn || Arch == Triple::arm) {
|
||||
dumpBytes(makeArrayRef(Bytes.data() + Index, Size), outs());
|
||||
@ -7696,7 +7690,7 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
SmallVector<char, 64> AnnotationsBytes;
|
||||
raw_svector_ostream Annotations(AnnotationsBytes);
|
||||
if (DisAsm->getInstruction(Inst, InstSize, Bytes.slice(Index), PC,
|
||||
DebugOut, Annotations)) {
|
||||
Annotations)) {
|
||||
if (!NoLeadingAddr) {
|
||||
if (FullLeadingAddr) {
|
||||
if (MachOOF->is64Bit())
|
||||
|
@ -1353,16 +1353,10 @@ static void disassembleObject(const Target *TheTarget, const ObjectFile *Obj,
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
raw_ostream &DebugOut = DebugFlag ? dbgs() : nulls();
|
||||
#else
|
||||
raw_ostream &DebugOut = nulls();
|
||||
#endif
|
||||
|
||||
// Some targets (like WebAssembly) have a special prelude at the start
|
||||
// of each symbol.
|
||||
DisAsm->onSymbolStart(SymbolName, Size, Bytes.slice(Start, End - Start),
|
||||
SectionAddr + Start, DebugOut, CommentStream);
|
||||
SectionAddr + Start, CommentStream);
|
||||
Start += Size;
|
||||
|
||||
Index = Start;
|
||||
@ -1426,8 +1420,7 @@ static void disassembleObject(const Target *TheTarget, const ObjectFile *Obj,
|
||||
// provided
|
||||
MCInst Inst;
|
||||
bool Disassembled = DisAsm->getInstruction(
|
||||
Inst, Size, Bytes.slice(Index), SectionAddr + Index, DebugOut,
|
||||
CommentStream);
|
||||
Inst, Size, Bytes.slice(Index), SectionAddr + Index, CommentStream);
|
||||
if (Size == 0)
|
||||
Size = 1;
|
||||
|
||||
|
@ -758,7 +758,7 @@ static void getObjectCoveragePoints(const object::ObjectFile &O,
|
||||
Index += Size) {
|
||||
MCInst Inst;
|
||||
if (!DisAsm->getInstruction(Inst, Size, Bytes.slice(Index),
|
||||
SectionAddr + Index, nulls(), nulls())) {
|
||||
SectionAddr + Index, nulls())) {
|
||||
if (Size == 0)
|
||||
Size = 1;
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user