mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
GP-2157 Marshaling refactor. Decompiler side.
This commit is contained in:
parent
672c1f11e2
commit
d8c10bf229
97 changed files with 5313 additions and 3733 deletions
|
@ -30,6 +30,12 @@ class Funcdata;
|
|||
class SymbolEntry;
|
||||
class ValueSet;
|
||||
|
||||
extern AttributeId ATTRIB_ADDRTIED; ///< Marshaling attribute "addrtied"
|
||||
extern AttributeId ATTRIB_GRP; ///< Marshaling attribute "grp"
|
||||
extern AttributeId ATTRIB_INPUT; ///< Marshaling attribute "input"
|
||||
extern AttributeId ATTRIB_PERSISTS; ///< Marshaling attribute "persists"
|
||||
extern AttributeId ATTRIB_UNAFF; ///< Marshaling attribute "unaff"
|
||||
|
||||
/// \brief Compare two Varnode pointers by location then definition
|
||||
struct VarnodeCompareLocDef {
|
||||
bool operator()(const Varnode *a,const Varnode *b) const; ///< Functional comparison operator
|
||||
|
@ -315,7 +321,7 @@ public:
|
|||
void setLongPrint(void) { addlflags |= Varnode::longprint; } ///< Force \b this to be printed as a \e long token
|
||||
void setStopUpPropagation(void) { addlflags |= Varnode::stop_uppropagation; } ///< Stop up-propagation thru \b this
|
||||
void clearStopUpPropagation(void) { addlflags &= ~Varnode::stop_uppropagation; } ///< Stop up-propagation thru \b this
|
||||
void setImpliedField(void) { addlflags |= Varnode::has_implied_field; } ///< Mark \this as having an implied field
|
||||
void setImpliedField(void) { addlflags |= Varnode::has_implied_field; } ///< Mark \b this as having an implied field
|
||||
bool updateType(Datatype *ct,bool lock,bool override); ///< (Possibly) set the Datatype given various restrictions
|
||||
void setStackStore(void) { addlflags |= Varnode::stack_store; } ///< Mark as produced by explicit CPUI_STORE
|
||||
void setLockedInput(void) { addlflags |= Varnode::locked_input; } ///< Mark as existing input, even if unused
|
||||
|
@ -323,10 +329,9 @@ public:
|
|||
void copySymbolIfValid(const Varnode *vn); ///< Copy symbol info from \b vn if constant value matches
|
||||
Datatype *getLocalType(bool &blockup) const; ///< Calculate type of Varnode based on local information
|
||||
bool copyShadow(const Varnode *op2) const; ///< Are \b this and \b op2 copied from the same source?
|
||||
void saveXml(ostream &s) const; ///< Save a description of \b this as an XML tag
|
||||
void encode(Encoder &encoder) const; ///< Encode a description of \b this to a stream
|
||||
static bool comparePointers(const Varnode *a,const Varnode *b) { return (*a < *b); } ///< Compare Varnodes as pointers
|
||||
static void printRaw(ostream &s,const Varnode *vn); ///< Print raw info about a Varnode to stream
|
||||
// static Varnode *restoreXml(const Element *el,Funcdata &fd,bool coderef);
|
||||
};
|
||||
|
||||
/// \brief A container for Varnode objects from a specific function
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue