retdec
|
A renamer of variable names which extracts and uses the original addresses of the variables. More...
#include <address_var_renamer.h>
Public Member Functions | |
virtual std::string | getId () const override |
Returns the ID of the renamer. More... | |
![]() | |
void | renameVars (ShPtr< Module > module) |
Renames variables in the given module according to the settings set when constructing the renamer. More... | |
Static Public Member Functions | |
static ShPtr< VarRenamer > | create (ShPtr< VarNameGen > varNameGen, bool useDebugNames=true) |
Creates a new renamer. More... | |
Private Member Functions | |
AddressVarRenamer (ShPtr< VarNameGen > varNameGen, bool useDebugNames) | |
Constructs a new renamer. More... | |
virtual void | renameGlobalVar (ShPtr< Variable > var) override |
Renames the given global variable. More... | |
virtual void | renameVarsInFunc (ShPtr< Function > func) override |
Renames variables in the given function. More... | |
virtual void | renameFuncParam (ShPtr< Variable > var, ShPtr< Function > func) override |
Renames the given parameter var of function func. More... | |
virtual void | renameFuncLocalVar (ShPtr< Variable > var, ShPtr< Function > func) override |
Renames the given local variable var of function func. More... | |
Private Attributes | |
UPtr< VarNameGen > | globalVarNameGen |
Generator of names for global variables. More... | |
UPtr< VarNameGen > | paramVarNameGen |
Generator of names for parameters. More... | |
UPtr< VarNameGen > | localVarNameGen |
Generator of names for local variables. More... | |
Additional Inherited Members | |
![]() | |
using | FuncStringSetMap = std::map< ShPtr< Function >, StringSet > |
Mapping of a function into a set of strings. More... | |
using | FuncByNameMap = std::map< std::string, ShPtr< Function > > |
Mapping of a function's name into the function. More... | |
![]() | |
VarRenamer (ShPtr< VarNameGen > varNameGen, bool useDebugNames=true) | |
Constructs a new variable renamer. More... | |
void | assignName (ShPtr< Variable > var, const std::string &name, ShPtr< Function > func=nullptr) |
Assigns name to the given variable var, possibly in the given function. More... | |
void | assignNameFromDebugInfoIfAvail (ShPtr< Variable > var, ShPtr< Function > func=nullptr) |
Assigns the name from debug information (if available) to the given variable. More... | |
bool | isGlobalVar (ShPtr< Variable > var) const |
Returns true if the given variable is global, false otherwise. More... | |
bool | isFunc (ShPtr< Variable > var) const |
Returns true if the given variable corresponds to a function, false otherwise. More... | |
bool | hasBeenRenamed (ShPtr< Variable > var) const |
Returns true if the given variable has already been renamed, false otherwise. More... | |
bool | nameExists (const std::string &name, ShPtr< Function > func=nullptr) const |
Returns true if the given name has already been assigned, false otherwise. More... | |
ShPtr< Function > | getFuncByName (const std::string &name) const |
Returns a function with the given name. More... | |
virtual void | doVarsRenaming () |
Renames the variables in module . More... | |
virtual void | renameUsingDebugNames () |
Renames all variables in the module by using the assigned names from debug information. More... | |
virtual void | renameGlobalVars () |
Renames all global variables in the module. More... | |
virtual void | renameVarsInFuncs () |
Renames the variables in all functions. More... | |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< GlobalVarDef > varDef) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
![]() | |
OrderedAllVisitor (bool visitSuccessors=true, bool visitNestedStmts=true) | |
Constructs a new visitor. More... | |
virtual void | visitStmt (ShPtr< Statement > stmt, bool visitSuccessors=true, bool visitNestedStmts=true) |
Visits the given statement, and possibly its successors or nested statements. More... | |
void | restart (bool visitSuccessors=true, bool visitNestedStmts=true) |
"Restarts" the visitor so it is in the state like it was when it was created. More... | |
bool | makeAccessedAndCheckIfAccessed (ShPtr< Type > type) |
Makes the given type accessed. More... | |
virtual void | visit (ShPtr< GlobalVarDef > varDef) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
![]() | |
Visitor ()=default | |
virtual | ~Visitor ()=default |
![]() | |
ShPtr< VarNameGen > | varNameGen |
Used generator of variable names. More... | |
bool | useDebugNames |
Should we use variable names from debugging information? More... | |
ShPtr< Module > | module |
Module in which the variables are being renamed. More... | |
VarSet | globalVars |
FuncByNameMap | funcsByName |
VarSet | renamedVars |
Variables which have already been renamed. More... | |
StringSet | globalVarsNames |
Assigned names of global variables. More... | |
FuncStringSetMap | localVarsNames |
ShPtr< Function > | currFunc |
The currently visited function. More... | |
![]() | |
ShPtr< Statement > | lastStmt |
Statement that has been accessed as the last one. More... | |
StmtUSet | accessedStmts |
A set of all accessed statements. More... | |
TypeUSet | accessedTypes |
A set of all accessed types. More... | |
bool | visitSuccessors |
Should statements' successor be accessed? More... | |
bool | visitNestedStmts |
Should nested statements be accessed? More... | |
A renamer of variable names which extracts and uses the original addresses of the variables.
It names variables by extracting their address from their original name. For example, the local variable u2_804839f1
is named v_804839f1
(the used prefix corresponds to the naming convention of UnifiedVarRenamer).
If there is no address in the original name of the variable, we name it by using the naming convention of UnifiedVarRenamer.
Use create() to create instances.
|
private |
Constructs a new renamer.
For more details, see create().
|
static |
Creates a new renamer.
[in] | varNameGen | Used generator of variable names. |
[in] | useDebugNames | Should we use variable names from debugging information? |
|
overridevirtual |
Returns the ID of the renamer.
Implements retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames the given local variable var of function func.
By default, it uses varNameGen
to generate a new name for the variable.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames the given parameter var of function func.
By default, it uses varNameGen
to generate a new name for the variable.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames the given global variable.
By default, it uses varNameGen
to generate a new name for the variable.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
overrideprivatevirtual |
Renames variables in the given function.
By default, it sets currFunc
, calls renameFuncParam() on every function parameter that has not yet been renamed. Then, if func is a definition, it calls visitStmt
(func->getBody()) to call renameFuncLocalVar() on every local variable in the function.
Reimplemented from retdec::llvmir2hll::VarRenamer.
|
private |
Generator of names for global variables.
|
private |
Generator of names for local variables.
|
private |
Generator of names for parameters.