IDAPython 9.0
Loading...
Searching...
No Matches
lvar_t Class Reference
Inheritance diagram for lvar_t:
lvar_locator_t

Public Member Functions

 __init__ (self, *args, **kwargs)
 
bool used (self)
 
bool typed (self)
 
bool mreg_done (self)
 
bool has_nice_name (self)
 
bool is_unknown_width (self)
 
bool has_user_info (self)
 
bool has_user_name (self)
 
bool has_user_type (self)
 
bool is_result_var (self)
 
bool is_arg_var (self)
 
bool is_fake_var (self)
 
bool is_overlapped_var (self)
 
bool is_floating_var (self)
 
bool is_spoiled_var (self)
 
bool is_noptr_var (self)
 
bool is_mapdst_var (self)
 
bool is_thisarg (self)
 
bool is_split_var (self)
 
bool has_regname (self)
 
bool in_asm (self)
 
bool is_dummy_arg (self)
 
bool is_notarg (self)
 
bool is_automapped (self)
 
bool is_used_byref (self)
 
bool is_decl_unused (self)
 
bool is_shared (self)
 
bool was_scattered_arg (self)
 
None set_used (self)
 
None clear_used (self)
 
None set_typed (self)
 
None set_non_typed (self)
 
None clr_user_info (self)
 
None set_user_name (self)
 
None set_user_type (self)
 
None clr_user_type (self)
 
None clr_user_name (self)
 
None set_mreg_done (self)
 
None clr_mreg_done (self)
 
None set_unknown_width (self)
 
None clr_unknown_width (self)
 
None set_arg_var (self)
 
None clr_arg_var (self)
 
None set_fake_var (self)
 
None clr_fake_var (self)
 
None set_overlapped_var (self)
 
None clr_overlapped_var (self)
 
None set_floating_var (self)
 
None clr_floating_var (self)
 
None set_spoiled_var (self)
 
None clr_spoiled_var (self)
 
None set_mapdst_var (self)
 
None clr_mapdst_var (self)
 
None set_noptr_var (self)
 
None clr_noptr_var (self)
 
None set_thisarg (self)
 
None clr_thisarg (self)
 
None set_split_var (self)
 
None clr_split_var (self)
 
None set_dummy_arg (self)
 
None clr_dummy_arg (self)
 
None set_notarg (self)
 
None clr_notarg (self)
 
None set_automapped (self)
 
None clr_automapped (self)
 
None set_used_byref (self)
 
None clr_used_byref (self)
 
None set_decl_unused (self)
 
None clr_decl_unused (self)
 
None set_shared (self)
 
None clr_shared (self)
 
None set_scattered_arg (self)
 
None clr_scattered_arg (self)
 
bool has_common (self, 'lvar_t' v)
 
bool has_common_bit (self, 'vdloc_t' loc, 'asize_t' width2)
 
'tinfo_t &' type (self)
 
bool accepts_type (self, 'tinfo_t' t, bool may_change_thisarg=False)
 
bool set_lvar_type (self, 'tinfo_t' t, bool may_fail=False)
 
None set_final_lvar_type (self, 'tinfo_t' t)
 
bool set_width (self, int w, int svw_flags=0)
 
None append_list (self, 'mba_t' mba, 'mlist_t' lst, bool pad_if_scattered=False)
 
bool is_aliasable (self, 'mba_t' mba)
 
- Public Member Functions inherited from lvar_locator_t
int get_stkoff (self)
 
bool is_reg1 (self)
 
bool is_reg2 (self)
 
bool is_reg_var (self)
 
bool is_stk_var (self)
 
bool is_scattered (self)
 
'mreg_t' get_reg1 (self)
 
'mreg_t' get_reg2 (self)
 
'scattered_aloc_t &' get_scattered (self)
 
bool __eq__ (self, 'lvar_locator_t' r)
 
bool __ne__ (self, 'lvar_locator_t' r)
 
bool __lt__ (self, 'lvar_locator_t' r)
 
bool __gt__ (self, 'lvar_locator_t' r)
 
bool __le__ (self, 'lvar_locator_t' r)
 
bool __ge__ (self, 'lvar_locator_t' r)
 
int compare (self, 'lvar_locator_t' r)
 

Static Public Attributes

str name
 
str cmt
 
str tif
 
str width
 
str defblk
 
str divisor
 
- Static Public Attributes inherited from lvar_locator_t
str location
 
str defea
 

Properties

 thisown
 
- Properties inherited from lvar_locator_t
 thisown
 

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* args,
** kwargs )

Reimplemented from lvar_locator_t.

Member Function Documentation

◆ accepts_type()

bool accepts_type ( self,
'tinfo_t' t,
bool may_change_thisarg = False )
Check if the variable accept the specified type. Some types are forbidden (void, function types, wrong arrays, etc) 

◆ append_list()

None append_list ( self,
'mba_t' mba,
'mlist_t' lst,
bool pad_if_scattered = False )
Append local variable to mlist. 

@param mba: ptr to the current mba_t
@param lst: list to append to
@param pad_if_scattered: if true, append padding bytes in case of scattered lvar

◆ clear_used()

None clear_used ( self)

◆ clr_arg_var()

None clr_arg_var ( self)

◆ clr_automapped()

None clr_automapped ( self)

◆ clr_decl_unused()

None clr_decl_unused ( self)

◆ clr_dummy_arg()

None clr_dummy_arg ( self)

◆ clr_fake_var()

None clr_fake_var ( self)

◆ clr_floating_var()

None clr_floating_var ( self)

◆ clr_mapdst_var()

None clr_mapdst_var ( self)

◆ clr_mreg_done()

None clr_mreg_done ( self)

◆ clr_noptr_var()

None clr_noptr_var ( self)

◆ clr_notarg()

None clr_notarg ( self)

◆ clr_overlapped_var()

None clr_overlapped_var ( self)

◆ clr_scattered_arg()

None clr_scattered_arg ( self)

◆ clr_shared()

None clr_shared ( self)

◆ clr_split_var()

None clr_split_var ( self)

◆ clr_spoiled_var()

None clr_spoiled_var ( self)

◆ clr_thisarg()

None clr_thisarg ( self)

◆ clr_unknown_width()

None clr_unknown_width ( self)

◆ clr_used_byref()

None clr_used_byref ( self)

◆ clr_user_info()

None clr_user_info ( self)

◆ clr_user_name()

None clr_user_name ( self)

◆ clr_user_type()

None clr_user_type ( self)

◆ has_common()

bool has_common ( self,
'lvar_t' v )
Do variables overlap?

◆ has_common_bit()

bool has_common_bit ( self,
'vdloc_t' loc,
'asize_t' width2 )
Does the variable overlap with the specified location?

◆ has_nice_name()

bool has_nice_name ( self)
Does the variable have a nice name?

◆ has_regname()

bool has_regname ( self)
Has a register name? (like _RAX)

◆ has_user_info()

bool has_user_info ( self)
Has any user-defined information?

◆ has_user_name()

bool has_user_name ( self)
Has user-defined name?

◆ has_user_type()

bool has_user_type ( self)
Has user-defined type?

◆ in_asm()

bool in_asm ( self)
Is variable used in an instruction translated into __asm?

◆ is_aliasable()

bool is_aliasable ( self,
'mba_t' mba )
Is the variable aliasable? 

@param mba: ptr to the current mba_t Aliasable variables may be modified indirectly (through a pointer)

◆ is_arg_var()

bool is_arg_var ( self)
Is the function argument?

◆ is_automapped()

bool is_automapped ( self)
Was the variable automatically mapped to another variable?

◆ is_decl_unused()

bool is_decl_unused ( self)
Was declared as __unused by the user? See CVAR_UNUSED.

◆ is_dummy_arg()

bool is_dummy_arg ( self)
Is a dummy argument (added to fill a hole in the argument list)

◆ is_fake_var()

bool is_fake_var ( self)
Is fake return variable?

◆ is_floating_var()

bool is_floating_var ( self)
Used by a fpu insn?

◆ is_mapdst_var()

bool is_mapdst_var ( self)
Other variable(s) map to this var?

◆ is_noptr_var()

bool is_noptr_var ( self)
Variable type should not be a pointer.

◆ is_notarg()

bool is_notarg ( self)
Is a local variable? (local variable cannot be an input argument)

◆ is_overlapped_var()

bool is_overlapped_var ( self)
Is overlapped variable?

◆ is_result_var()

bool is_result_var ( self)
Is the function result?

◆ is_shared()

bool is_shared ( self)
Is lvar mapped to several chains.

◆ is_split_var()

bool is_split_var ( self)
Is a split variable?

◆ is_spoiled_var()

bool is_spoiled_var ( self)
Is spoiled var? (meaningful only during lvar allocation)

◆ is_thisarg()

bool is_thisarg ( self)
Is 'this' argument of a C++ member function?

◆ is_unknown_width()

bool is_unknown_width ( self)
Do we know the width of the variable?

◆ is_used_byref()

bool is_used_byref ( self)
Was the address of the variable taken?

◆ mreg_done()

bool mreg_done ( self)
Have corresponding microregs been replaced by references to this variable?

◆ set_arg_var()

None set_arg_var ( self)

◆ set_automapped()

None set_automapped ( self)

◆ set_decl_unused()

None set_decl_unused ( self)

◆ set_dummy_arg()

None set_dummy_arg ( self)

◆ set_fake_var()

None set_fake_var ( self)

◆ set_final_lvar_type()

None set_final_lvar_type ( self,
'tinfo_t' t )
Set final variable type.

◆ set_floating_var()

None set_floating_var ( self)

◆ set_lvar_type()

bool set_lvar_type ( self,
'tinfo_t' t,
bool may_fail = False )
Set variable type Note: this function does not modify the idb, only the lvar instance in the memory. For permanent changes see modify_user_lvars() Also, the variable type is not considered as final by the decompiler and may be modified later by the type derivation. In some cases set_final_var_type() may work better, but it does not do persistent changes to the database neither. 

@param t: new type
@param may_fail: if false and type is bad, interr
@returns success

◆ set_mapdst_var()

None set_mapdst_var ( self)

◆ set_mreg_done()

None set_mreg_done ( self)

◆ set_non_typed()

None set_non_typed ( self)

◆ set_noptr_var()

None set_noptr_var ( self)

◆ set_notarg()

None set_notarg ( self)

◆ set_overlapped_var()

None set_overlapped_var ( self)

◆ set_scattered_arg()

None set_scattered_arg ( self)

◆ set_shared()

None set_shared ( self)

◆ set_split_var()

None set_split_var ( self)

◆ set_spoiled_var()

None set_spoiled_var ( self)

◆ set_thisarg()

None set_thisarg ( self)

◆ set_typed()

None set_typed ( self)

◆ set_unknown_width()

None set_unknown_width ( self)

◆ set_used()

None set_used ( self)

◆ set_used_byref()

None set_used_byref ( self)

◆ set_user_name()

None set_user_name ( self)

◆ set_user_type()

None set_user_type ( self)

◆ set_width()

bool set_width ( self,
int w,
int svw_flags = 0 )
Change the variable width. We call the variable size 'width', it is represents the number of bytes. This function may change the variable type using set_lvar_type(). 

@param w: new width
@param svw_flags: combination of SVW_... bits
@returns success

◆ type()

'tinfo_t &' type ( self)
Get variable type.

◆ typed()

bool typed ( self)
Has the variable a type?

◆ used()

bool used ( self)
Is the variable used in the code?

◆ was_scattered_arg()

bool was_scattered_arg ( self)
Was lvar transformed from a scattered argument?

Member Data Documentation

◆ cmt

str cmt
static
Initial value:
= property(_ida_hexrays.lvar_t_cmt_get, _ida_hexrays.
lvar_t_cmt_set)

◆ defblk

str defblk
static
Initial value:
= property(_ida_hexrays.lvar_t_defblk_get, _ida_hexrays.
lvar_t_defblk_set)

◆ divisor

str divisor
static
Initial value:
= property(_ida_hexrays.lvar_t_divisor_get,
_ida_hexrays.lvar_t_divisor_set)

◆ name

str name
static
Initial value:
= property(_ida_hexrays.lvar_t_name_get, _ida_hexrays.
lvar_t_name_set)

◆ tif

str tif
static
Initial value:
= property(_ida_hexrays.lvar_t_tif_get, _ida_hexrays.
lvar_t_tif_set)

◆ width

str width
static
Initial value:
= property(_ida_hexrays.lvar_t_width_get, _ida_hexrays.
lvar_t_width_set)

Property Documentation

◆ thisown

thisown
static
Initial value:
= property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
doc='The membership flag')

The documentation for this class was generated from the following file: