GP-3378 Remove op when clearing placeholder

This commit is contained in:
caheckman 2023-05-01 19:39:08 -04:00
parent 89e18fa536
commit 68747248f3
3 changed files with 29 additions and 14 deletions

View file

@ -1610,6 +1610,10 @@ class FuncCallSpecs : public FuncProto {
void commitNewInputs(Funcdata &data,vector<Varnode *> &newinput);
void commitNewOutputs(Funcdata &data,Varnode *newout);
void collectOutputTrialVarnodes(vector<Varnode *> &trialvn);
void setStackPlaceholderSlot(int4 slot) { stackPlaceholderSlot = slot;
if (isinputactive) activeinput.setPlaceholderSlot(); } ///< Set the slot of the stack-pointer placeholder
void clearStackPlaceholderSlot(void) {
stackPlaceholderSlot = -1; if (isinputactive) activeinput.freePlaceholderSlot(); } ///< Release the stack-pointer placeholder
public:
enum {
offset_unknown = 0xBADBEEF ///< "Magic" stack offset indicating the offset is unknown
@ -1629,10 +1633,6 @@ public:
int4 getParamshift(void) const { return paramshift; } ///< Get the parameter shift for this call site
int4 getMatchCallCount(void) const { return matchCallCount; } ///< Get the number of calls the caller makes to \b this sub-function
int4 getStackPlaceholderSlot(void) const { return stackPlaceholderSlot; } ///< Get the slot of the stack-pointer placeholder
void setStackPlaceholderSlot(int4 slot) { stackPlaceholderSlot = slot;
if (isinputactive) activeinput.setPlaceholderSlot(); } ///< Set the slot of the stack-pointer placeholder
void clearStackPlaceholderSlot(void) {
stackPlaceholderSlot = -1; if (isinputactive) activeinput.freePlaceholderSlot(); } ///< Release the stack-pointer placeholder
void initActiveInput(void); ///< Turn on analysis recovering input parameters
void clearActiveInput(void) { isinputactive = false; } ///< Turn off analysis recovering input parameters
@ -1651,6 +1651,7 @@ public:
void deindirect(Funcdata &data,Funcdata *newfd);
void forceSet(Funcdata &data,const FuncProto &fp);
void insertPcode(Funcdata &data);
void createPlaceholder(Funcdata &data,AddrSpace *spacebase);
void resolveSpacebaseRelative(Funcdata &data,Varnode *phvn);
void abortSpacebaseRelative(Funcdata &data);
void finalInputCheck(void);