GTIRB-PPRINTER  v0.1.1
GrammaTech Intermediate Representation for Binaries: Pretty Printer
Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
gtirb_pprint::IntelPrettyPrinter Class Reference

#include <IntelPrinter.h>

Inheritance diagram for gtirb_pprint::IntelPrettyPrinter:
Inheritance graph
[legend]
Collaboration diagram for gtirb_pprint::IntelPrettyPrinter:
Collaboration graph
[legend]

Public Member Functions

 IntelPrettyPrinter (gtirb::Context &context, gtirb::IR &ir, const string_range &skip_funcs, DebugStyle dbg)
 
- Public Member Functions inherited from gtirb_pprint::PrettyPrinterBase
 PrettyPrinterBase (gtirb::Context &context, gtirb::IR &ir, const string_range &skip_funcs, DebugStyle dbg)
 
virtual ~PrettyPrinterBase ()
 
virtual std::ostream & print (std::ostream &out)
 

Protected Member Functions

int getGtirbOpIndex (int index, int opCount) const override
 
void printHeader (std::ostream &os) override
 
void printOpImmediate (std::ostream &os, const gtirb::SymbolicExpression *symbolic, const cs_insn &inst, uint64_t index) override
 
void printOpIndirect (std::ostream &os, const gtirb::SymbolicExpression *symbolic, const cs_insn &inst, uint64_t index) override
 
void printOpRegdirect (std::ostream &os, const cs_insn &inst, const cs_x86_op &op) override
 
- Protected Member Functions inherited from gtirb_pprint::PrettyPrinterBase
std::string avoidRegNameConflicts (const std::string &x)
 
std::vector< std::string > * getAmbiguousSymbol ()
 
std::optional< std::string > getContainerFunctionName (const gtirb::Addr x) const
 
const std::optional< const gtirb::Section * > getContainerSection (const gtirb::Addr addr) const
 
std::optional< std::string > getForwardedSymbolName (const gtirb::Symbol *symbol, bool isAbsolute) const
 
std::string getFunctionName (gtirb::Addr x) const
 
virtual std::string getRegisterName (unsigned int reg) const
 
virtual const gtirb::SymAddrConst * getSymbolicImmediate (const gtirb::SymbolicExpression *symex)
 
bool isAmbiguousSymbol (const std::string &ea) const
 
bool isInSkippedFunction (const gtirb::Addr x) const
 
bool isInSkippedSection (const gtirb::Addr x) const
 
bool isSectionSkipped (const std::string &name)
 
virtual void printAddend (std::ostream &os, int64_t number, bool first=false)
 
virtual void printAlignment (std::ostream &os, const gtirb::Addr addr)
 
virtual void printBar (std::ostream &os, bool heavy=true)
 
virtual void printBlock (std::ostream &os, const gtirb::Block &x)
 
virtual gtirb::Addr printBlockOrWarning (std::ostream &os, const gtirb::Block &x, gtirb::Addr last)
 
virtual void printComment (std::ostream &os, const gtirb::Addr ea)
 
virtual void printDataObject (std::ostream &os, const gtirb::DataObject &dataObject)
 
virtual gtirb::Addr printDataObjectOrWarning (std::ostream &os, const gtirb::DataObject &x, gtirb::Addr last)
 
virtual void printEA (std::ostream &os, gtirb::Addr ea)
 
virtual void printFunctionHeader (std::ostream &os, gtirb::Addr ea)
 
virtual void printInstruction (std::ostream &os, const cs_insn &inst)
 
virtual void printNonZeroDataObject (std::ostream &os, const gtirb::DataObject &dataObject)
 
virtual void printOperand (std::ostream &os, const gtirb::SymbolicExpression *symbolic, const cs_insn &inst, uint64_t index)
 
virtual void printOperandList (std::ostream &os, const gtirb::Addr ea, const cs_insn &inst)
 
virtual void printOverlapWarning (std::ostream &os, gtirb::Addr ea)
 
virtual void printSectionHeader (std::ostream &os, const gtirb::Addr addr)
 
virtual void printString (std::ostream &os, const gtirb::DataObject &x)
 
virtual void printSymbolDefinitionsAtAddress (std::ostream &os, gtirb::Addr ea)
 
virtual void printSymbolicData (std::ostream &os, const gtirb::SymbolicExpression *symbolic)
 
virtual void printSymbolicExpression (std::ostream &os, const gtirb::SymAddrConst *sexpr, bool inData=false)
 
virtual void printSymbolicExpression (std::ostream &os, const gtirb::SymAddrAddr *sexpr, bool inData=false)
 
virtual void printSymbolReference (std::ostream &os, const gtirb::Symbol *symbol, bool inData) const
 
virtual void printZeroDataObject (std::ostream &os, const gtirb::DataObject &dataObject)
 
bool shouldExcludeDataElement (const gtirb::Section &section, const gtirb::DataObject &dataObject) const
 
bool skipEA (const gtirb::Addr x) const
 

Static Protected Attributes

static constexpr char StrOffset [] {"OFFSET"}
 

Additional Inherited Members

- Static Protected Member Functions inherited from gtirb_pprint::PrettyPrinterBase
static std::string AdaptRegister (const std::string &x)
 
static std::string AvoidRegNameConflicts (const std::string &x)
 
static std::string GetSizeName (uint64_t x)
 
static std::string GetSizeName (const std::string &x)
 
static std::string GetSizeSuffix (uint64_t x)
 
static std::string GetSizeSuffix (const std::string &x)
 
static std::string GetSymbolToPrint (gtirb::Addr x)
 
- Protected Attributes inherited from gtirb_pprint::PrettyPrinterBase
const std::unordered_set< std::string > AsmArraySection
 
std::unordered_set< std::string > AsmSkipFunction
 Functions to avoid printing. More...
 
std::unordered_set< std::string > AsmSkipSection
 Sections to avoid printing. More...
 
gtirb::Context & context
 
csh csHandle
 
bool debug
 
gtirb::IR & ir
 
const std::string StrNOP {"nop"}
 
const std::string StrSection {".section"}
 
const std::string StrSectionBSS {".bss"}
 
const std::string StrSectionGlobal {".globl"}
 
const std::string StrSectionText {".text"}
 
const std::string StrSectionType {".type"}
 
const std::string StrTab {" "}
 
const std::string StrZeroByte {".byte 0x00"}
 Constants to reduce (eliminate) magical strings inside the printer. More...
 

Constructor & Destructor Documentation

◆ IntelPrettyPrinter()

gtirb_pprint::IntelPrettyPrinter::IntelPrettyPrinter ( gtirb::Context &  context,
gtirb::IR &  ir,
const string_range skip_funcs,
DebugStyle  dbg 
)

Member Function Documentation

◆ getGtirbOpIndex()

int gtirb_pprint::IntelPrettyPrinter::getGtirbOpIndex ( int  index,
int  opCount 
) const
overrideprotectedvirtual

Get the index of an operand in the GTIRB, given the index of the operand in the Capstone instruction.

NOTE: The GTIRB operands are indexed as if they were in an array: auto operands[] = {<unused>, src1, src2, ..., dst}

Parameters
indexthe Capstone index of the operand
opCountthe total number of operands in the instruction

Implements gtirb_pprint::PrettyPrinterBase.

◆ printHeader()

void gtirb_pprint::IntelPrettyPrinter::printHeader ( std::ostream &  os)
overrideprotectedvirtual

◆ printOpImmediate()

void gtirb_pprint::IntelPrettyPrinter::printOpImmediate ( std::ostream &  os,
const gtirb::SymbolicExpression *  symbolic,
const cs_insn &  inst,
uint64_t  index 
)
overrideprotectedvirtual

◆ printOpIndirect()

void gtirb_pprint::IntelPrettyPrinter::printOpIndirect ( std::ostream &  os,
const gtirb::SymbolicExpression *  symbolic,
const cs_insn &  inst,
uint64_t  index 
)
overrideprotectedvirtual

◆ printOpRegdirect()

void gtirb_pprint::IntelPrettyPrinter::printOpRegdirect ( std::ostream &  os,
const cs_insn &  inst,
const cs_x86_op &  op 
)
overrideprotectedvirtual

Member Data Documentation

◆ StrOffset

constexpr char gtirb_pprint::IntelPrettyPrinter::StrOffset[] {"OFFSET"}
staticprotected

The documentation for this class was generated from the following files: