decompiler
1.0.0
|
Cleanup: Set-up to print string constants. More...
Public Member Functions | |
RulePtrsubCharConstant (const string &g) | |
Constructor. | |
virtual Rule * | clone (const ActionGroupList &grouplist) const |
Clone the Rule. More... | |
virtual void | getOpList (vector< uint4 > &oplist) const |
List of op codes this rule operates on. More... | |
virtual int4 | applyOp (PcodeOp *op, Funcdata &data) |
Attempt to apply this Rule. More... | |
Public Member Functions inherited from Rule | |
Rule (const string &g, uint4 fl, const string &nm) | |
Construct given group, properties name. More... | |
virtual | ~Rule (void) |
Destructor. | |
const string & | getName (void) const |
Return the name of this Rule. | |
const string & | getGroup (void) const |
Return the group this Rule belongs to. | |
uint4 | getNumTests (void) |
Get number of attempted applications. | |
uint4 | getNumApply (void) |
Get number of successful applications. | |
void | setBreak (uint4 tp) |
Set a breakpoint on this Rule. | |
void | clearBreak (uint4 tp) |
Clear a breakpoint on this Rule. | |
void | turnOnWarnings (void) |
Enable warnings for this Rule. | |
void | turnOffWarnings (void) |
Disable warnings for this Rule. | |
bool | isDisabled (void) const |
Return true if this Rule is disabled. | |
void | setDisable (void) |
Disable this Rule (within its pool) | |
void | clearDisable (void) |
Enable this Rule (within its pool) | |
bool | checkActionBreak (void) |
Check if an action breakpoint is turned on. More... | |
uint4 | getBreakPoint (void) const |
Return breakpoint toggles. | |
virtual void | reset (Funcdata &data) |
Reset this Rule. More... | |
virtual void | resetStats (void) |
Reset Rule statistics. More... | |
virtual void | printStatistics (ostream &s) const |
Print statistics for this Rule. More... | |
Private Member Functions | |
bool | pushConstFurther (Funcdata &data, TypePointer *outtype, PcodeOp *op, int4 slot, uintb val) |
Try to push constant pointer further. More... | |
Additional Inherited Members | |
Public Types inherited from Rule | |
enum | typeflags { type_disable = 1, rule_debug = 2, warnings_on = 4, warnings_given = 8 } |
Properties associated with a Rule. More... | |
Cleanup: Set-up to print string constants.
If a SUBPIECE refers to a global symbol, the output of the SUBPIECE is a (char *), and the address is read-only, then get rid of the SUBPIECE in favor of printing a constant string.
Attempt to apply this Rule.
This method contains the main logic for applying the Rule. It must use a given PcodeOp as the point at which the Rule applies. If it does apply, changes are made directly to the function and 1 (non-zero) is returned, otherwise 0 is returned.
Reimplemented from Rule.
References Varnode::beginDescend(), CPUI_COPY, Varnode::endDescend(), PcodeOp::getAddr(), TypeSpacebase::getAddress(), Funcdata::getArch(), PcodeOp::getIn(), TypeSpacebase::getMap(), Datatype::getMetatype(), Varnode::getOffset(), PcodeOp::getOut(), TypePointer::getPtrTo(), Datatype::getSize(), Varnode::getSize(), PcodeOp::getSlot(), Varnode::getType(), PrintLanguage::isCharacterConstant(), Datatype::isCharPrint(), Varnode::isConstant(), Scope::isReadOnly(), Architecture::loader, LoadImage::loadFill(), Funcdata::newConstant(), Funcdata::opDestroy(), Funcdata::opRemoveInput(), Funcdata::opSetInput(), Funcdata::opSetOpcode(), Architecture::print, pushConstFurther(), TYPE_PTR, TYPE_SPACEBASE, and Varnode::updateType().
|
inlinevirtual |
Clone the Rule.
If this Rule is a member of one of the groups in the grouplist, this returns a clone of the Rule, otherwise NULL is returned.
grouplist | is the list of groups being cloned |
Implements Rule.
References ActionGroupList::contains(), Rule::getGroup(), and RulePtrsubCharConstant().
|
virtual |
List of op codes this rule operates on.
Populate the given array with all possible OpCodes this Rule might apply to. By default, this method returns all possible OpCodes
oplist | is the array to populate |
Reimplemented from Rule.
References CPUI_PTRSUB.
|
private |
Try to push constant pointer further.
Given a PTRSUB has been collapsed to a constant COPY of a string address, try to collapse descendant any PTRADD.
data | is the function being analyzed |
outtype | is the data-type associated with the constant |
op | is the putative descendant PTRADD |
slot | is the input slot receiving the collapsed PTRSUB |
val | is the constant pointer value |
References PcodeOp::code(), CPUI_COPY, CPUI_PTRADD, PcodeOp::getIn(), Varnode::getOffset(), Varnode::getSize(), Varnode::isConstant(), Funcdata::newConstant(), Funcdata::opRemoveInput(), Funcdata::opSetInput(), Funcdata::opSetOpcode(), and Varnode::updateType().
Referenced by applyOp().