Ghidra 11.3.2
Ghidra internal decompiler documentation.
Loading...
Searching...
No Matches
ghidra::JumpAssistOp Class Reference

A user defined p-code op for assisting the recovery of jump tables. More...

#include <userop.hh>

Inheritance diagram for ghidra::JumpAssistOp:
[legend]
Collaboration diagram for ghidra::JumpAssistOp:
[legend]

Public Member Functions

 JumpAssistOp (Architecture *g)
 Constructor.
 
int4 getIndex2Case (void) const
 Get the injection id for index2case.
 
int4 getIndex2Addr (void) const
 Get the injection id for index2addr.
 
int4 getDefaultAddr (void) const
 Get the injection id for defaultaddr.
 
int4 getCalcSize (void) const
 Get the injection id for calcsize.
 
virtual void decode (Decoder &decoder)
 Restore the detailed description from a stream element.
 
- Public Member Functions inherited from ghidra::UserPcodeOp
 UserPcodeOp (const string &nm, Architecture *g, uint4 tp, int4 ind)
 Construct from name and index.
 
const string & getName (void) const
 Get the low-level name of the p-code op.
 
uint4 getType (void) const
 Get the encoded class type.
 
int4 getIndex (void) const
 Get the constant id of the op.
 
uint4 getDisplay (void) const
 Get display type (0=functional)
 
virtual ~UserPcodeOp (void)
 Destructor.
 
virtual string getOperatorName (const PcodeOp *op) const
 Get the symbol representing this operation in decompiled code.
 
virtual DatatypegetOutputLocal (const PcodeOp *op) const
 Return the output data-type of the user-op if specified.
 
virtual DatatypegetInputLocal (const PcodeOp *op, int4 slot) const
 Return the input data-type to the user-op in the given slot.
 
virtual int4 extractAnnotationSize (const Varnode *vn, const PcodeOp *op)
 Assign a size to an annotation input to this userop.
 

Private Attributes

int4 index2case
 Id of p-code script performing index2case (== -1 if no script and index==case)
 
int4 index2addr
 Id of p-code script performing index2addr (must be present)
 
int4 defaultaddr
 Id of p-code script performing calculation of default address (must be present)
 
int4 calcsize
 Id of p-code script that calculates number of indices (== -1 if no script)
 

Additional Inherited Members

- Public Types inherited from ghidra::UserPcodeOp
enum  userop_flags { annotation_assignment = 1 , no_operator = 2 , display_string = 4 }
 Enumeration of different boolean properties that can be assigned to a CALLOTHER. More...
 
enum  userop_type {
  unspecialized = 1 , injected = 2 , volatile_read = 3 , volatile_write = 4 ,
  segment = 5 , jumpassist = 6 , string_data = 7 , datatype = 8
}
 User-op class encoded as an enum. More...
 
- Static Public Attributes inherited from ghidra::UserPcodeOp
static const uint4 BUILTIN_STRINGDATA = 0x10000000
 Built-in id for the InternalStringOp.
 
static const uint4 BUILTIN_VOLATILE_READ = 0x10000001
 Built-in id for VolatileReadOp.
 
static const uint4 BUILTIN_VOLATILE_WRITE = 0x10000002
 Built-in id for VolatileWriteOp.
 
static const uint4 BUILTIN_MEMCPY = 0x10000003
 Built-in id for memcpy.
 
static const uint4 BUILTIN_STRNCPY = 0x10000004
 Built-in id for strcpy.
 
static const uint4 BUILTIN_WCSNCPY = 0x10000005
 Built-in id for wcsncpy.
 
- Protected Attributes inherited from ghidra::UserPcodeOp
string name
 Low-level name of p-code operator.
 
Architectureglb
 Architecture owning the user defined op.
 
uint4 type
 Encoded class type (userop_type)
 
int4 useropindex
 Index passed in the CALLOTHER op.
 
uint4 flags
 Boolean attributes of the CALLOTHER.
 

Detailed Description

A user defined p-code op for assisting the recovery of jump tables.

An instance of this class refers to p-code script(s) that describe how to parse the jump table from the load image. Possible scripts include:

  • (if present) index2case describes how to get case values from an index 0..size-1
  • index2addr describes how to get address values from the same index range
  • defaultaddr describes how to calculate the switch's default address
  • (if present) calcsize recovers the number of indices in the table

This class stores injection ids. The scripts themselves are managed by PcodeInjectLibrary.

Constructor & Destructor Documentation

◆ JumpAssistOp()

ghidra::JumpAssistOp::JumpAssistOp ( Architecture g)

Constructor.

Parameters
gis the Architecture owning this set of jump assist scripts

References calcsize, defaultaddr, index2addr, and index2case.

Member Function Documentation

◆ decode()


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