|
Ghidra Decompiler Analysis Engine
|
Common data shared by decompiler commands. More...
#include <ifacedecomp.hh>


Public Member Functions | |
| void | storePrototypePieces (Funcdata *fd_in, PrototypePieces pp_in) |
| PrototypePieces | findPrototypePieces (Funcdata *fd_in) |
| IfaceDecompData (void) | |
| Constructor. | |
| void | allocateCallGraph (void) |
| Allocate the call-graph object. | |
| void | abortFunction (ostream &s) |
| Clear references to current function. More... | |
| void | clearArchitecture (void) |
| Free all resources for the current architecture/program. | |
| void | followFlow (ostream &s, int4 size) |
| Generate raw p-code for the current function. More... | |
| Varnode * | readVarnode (istream &s) |
| Read a varnode from the given stream. More... | |
Public Attributes | |
| Funcdata * | fd |
| Current function active in the console. | |
| Architecture * | conf |
| Current architecture/program active in the console. | |
| CallGraph * | cgraph |
| Call-graph information for the program. | |
| map< Funcdata *, PrototypePieces > | prototypePieces |
Common data shared by decompiler commands.
| void IfaceDecompData::abortFunction | ( | ostream & | s | ) |
Clear references to current function.
This is called if a command throws a low-level error. It clears any analysis on the function, sets the current function to null, and issues a warning.
| s | is the stream to write the warning to |
| void IfaceDecompData::followFlow | ( | ostream & | s, |
| int4 | size | ||
| ) |
Generate raw p-code for the current function.
Follow flow from the entry point of the function and generate the raw p-code ops for all instructions, up to return instructions. If a size in bytes is provided, it bounds the memory region where flow can be followed. Otherwise, a zero size allows unbounded flow tracing.
| s | is a output stream for reporting function details or errors |
| size | (if non-zero) is the maximum number of bytes to disassemble |
| Varnode * IfaceDecompData::readVarnode | ( | istream & | s | ) |
Read a varnode from the given stream.
The Varnode is selected from the current function. It is specified as a storage location with info about its defining p-code in parantheses.
EAX(r0x10000:0x65)ECX(i)r0x10001000:4(:0x96)u0x00001100:1(:0x102)#0x1(0x10205:0x27)The storage address space is given as the short-cut character followed by the address offset. For register spaces, the name of the register can be given instead of the offset. After the offset, a size can be specified with a ':' followed by the size in bytes. If size is not provided and there is no register name, a default word size is assigned based on the address space.
The defining p-code op is specified either as:
EAX(r0x10000:0x65)EAX(:0x65) orEAX(i)For a constant Varnode, the storage offset is the actual value of the constant, and the p-code address and sequence number must both be present and specify the p-code op that reads the constant.
| s | is the given input stream |
1.8.17