IDAPython 8.4
Loading...
Searching...
No Matches
lvar_t Class Reference

Proxy of C++ lvar_t class.

Inheritance diagram for lvar_t:
lvar_locator_t

Public Member Functions

 __init__ (self, *args, **kwargs)
 init(self) -> lvar_locator_t init(self, loc, ea) -> lvar_locator_t
 
"bool" used (self, *args)
 used(self) -> bool Is the variable used in the code?
 
"bool" typed (self, *args)
 typed(self) -> bool Has the variable a type?
 
"bool" mreg_done (self, *args)
 mreg_done(self) -> bool Have corresponding microregs been replaced by references to this variable?
 
"bool" has_nice_name (self, *args)
 has_nice_name(self) -> bool Does the variable have a nice name?
 
"bool" is_unknown_width (self, *args)
 is_unknown_width(self) -> bool Do we know the width of the variable?
 
"bool" has_user_info (self, *args)
 has_user_info(self) -> bool Has any user-defined information?
 
"bool" has_user_name (self, *args)
 has_user_name(self) -> bool Has user-defined name?
 
"bool" has_user_type (self, *args)
 has_user_type(self) -> bool Has user-defined type?
 
"bool" is_result_var (self, *args)
 is_result_var(self) -> bool Is the function result?
 
"bool" is_arg_var (self, *args)
 is_arg_var(self) -> bool Is the function argument?
 
"bool" is_fake_var (self, *args)
 is_fake_var(self) -> bool Is fake return variable?
 
"bool" is_overlapped_var (self, *args)
 is_overlapped_var(self) -> bool Is overlapped variable?
 
"bool" is_floating_var (self, *args)
 is_floating_var(self) -> bool Used by a fpu insn?
 
"bool" is_spoiled_var (self, *args)
 is_spoiled_var(self) -> bool Is spoiled var? (meaningful only during lvar allocation)
 
"bool" is_noptr_var (self, *args)
 is_noptr_var(self) -> bool Variable type should not be a pointer.
 
"bool" is_mapdst_var (self, *args)
 is_mapdst_var(self) -> bool Other variable(s) map to this var?
 
"bool" is_thisarg (self, *args)
 is_thisarg(self) -> bool Is 'this' argument of a C++ member function?
 
"bool" is_split_var (self, *args)
 is_split_var(self) -> bool Is a split variable?
 
"bool" has_regname (self, *args)
 has_regname(self) -> bool Has a register name? (like _RAX)
 
"bool" in_asm (self, *args)
 in_asm(self) -> bool Is variable used in an instruction translated into __asm?
 
"bool" is_dummy_arg (self, *args)
 is_dummy_arg(self) -> bool Is a dummy argument (added to fill a hole in the argument list)
 
"bool" is_notarg (self, *args)
 is_notarg(self) -> bool Is a local variable? (local variable cannot be an input argument)
 
"bool" is_automapped (self, *args)
 is_automapped(self) -> bool Was the variable automatically mapped to another variable?
 
"bool" is_used_byref (self, *args)
 is_used_byref(self) -> bool Was the address of the variable taken?
 
"bool" is_decl_unused (self, *args)
 is_decl_unused(self) -> bool Was declared as __unused by the user? See CVAR_UNUSED.
 
"bool" is_shared (self, *args)
 is_shared(self) -> bool Is lvar mapped to several chains.
 
"void" set_used (self, *args)
 set_used(self)
 
"void" clear_used (self, *args)
 clear_used(self)
 
"void" set_typed (self, *args)
 set_typed(self)
 
"void" set_non_typed (self, *args)
 set_non_typed(self)
 
"void" clr_user_info (self, *args)
 clr_user_info(self)
 
"void" set_user_name (self, *args)
 set_user_name(self)
 
"void" set_user_type (self, *args)
 set_user_type(self)
 
"void" clr_user_type (self, *args)
 clr_user_type(self)
 
"void" clr_user_name (self, *args)
 clr_user_name(self)
 
"void" set_mreg_done (self, *args)
 set_mreg_done(self)
 
"void" clr_mreg_done (self, *args)
 clr_mreg_done(self)
 
"void" set_unknown_width (self, *args)
 set_unknown_width(self)
 
"void" clr_unknown_width (self, *args)
 clr_unknown_width(self)
 
"void" set_arg_var (self, *args)
 set_arg_var(self)
 
"void" clr_arg_var (self, *args)
 clr_arg_var(self)
 
"void" set_fake_var (self, *args)
 set_fake_var(self)
 
"void" clr_fake_var (self, *args)
 clr_fake_var(self)
 
"void" set_overlapped_var (self, *args)
 set_overlapped_var(self)
 
"void" clr_overlapped_var (self, *args)
 clr_overlapped_var(self)
 
"void" set_floating_var (self, *args)
 set_floating_var(self)
 
"void" clr_floating_var (self, *args)
 clr_floating_var(self)
 
"void" set_spoiled_var (self, *args)
 set_spoiled_var(self)
 
"void" clr_spoiled_var (self, *args)
 clr_spoiled_var(self)
 
"void" set_mapdst_var (self, *args)
 set_mapdst_var(self)
 
"void" clr_mapdst_var (self, *args)
 clr_mapdst_var(self)
 
"void" set_noptr_var (self, *args)
 set_noptr_var(self)
 
"void" clr_noptr_var (self, *args)
 clr_noptr_var(self)
 
"void" set_thisarg (self, *args)
 set_thisarg(self)
 
"void" clr_thisarg (self, *args)
 clr_thisarg(self)
 
"void" set_split_var (self, *args)
 set_split_var(self)
 
"void" clr_split_var (self, *args)
 clr_split_var(self)
 
"void" set_dummy_arg (self, *args)
 set_dummy_arg(self)
 
"void" clr_dummy_arg (self, *args)
 clr_dummy_arg(self)
 
"void" set_notarg (self, *args)
 set_notarg(self)
 
"void" clr_notarg (self, *args)
 clr_notarg(self)
 
"void" set_automapped (self, *args)
 set_automapped(self)
 
"void" clr_automapped (self, *args)
 clr_automapped(self)
 
"void" set_used_byref (self, *args)
 set_used_byref(self)
 
"void" clr_used_byref (self, *args)
 clr_used_byref(self)
 
"void" set_decl_unused (self, *args)
 set_decl_unused(self)
 
"void" clr_decl_unused (self, *args)
 clr_decl_unused(self)
 
"void" set_shared (self, *args)
 set_shared(self)
 
"void" clr_shared (self, *args)
 clr_shared(self)
 
"bool" has_common (self, *args)
 has_common(self, v) -> bool Do variables overlap?
 
"bool" has_common_bit (self, *args)
 has_common_bit(self, loc, width2) -> bool Does the variable overlap with the specified location?
 
"tinfo_t &" type (self, *args)
 type(self) -> tinfo_t
 
"bool" accepts_type (self, *args)
 accepts_type(self, t, may_change_thisarg=False) -> bool Check if the variable accept the specified type.
 
"bool" set_lvar_type (self, *args)
 set_lvar_type(self, t, may_fail=False) -> bool Set variable type Note: this function does not modify the idb, only the lvar instance in the memory.
 
"void" set_final_lvar_type (self, *args)
 set_final_lvar_type(self, t) Set final variable type.
 
"bool" set_width (self, *args)
 set_width(self, w, svw_flags=0) -> bool Change the variable width.
 
"void" append_list (self, *args)
 append_list(self, mba, lst, pad_if_scattered=False) Append local variable to mlist.
 
"bool" is_aliasable (self, *args)
 is_aliasable(self, mba) -> bool Is the variable aliasable?
 
- Public Member Functions inherited from lvar_locator_t
"sval_t" get_stkoff (self, *args)
 get_stkoff(self) -> sval_t Get offset of the varialbe in the stack frame.
 
"bool" is_reg1 (self, *args)
 is_reg1(self) -> bool Is variable located on one register?
 
"bool" is_reg2 (self, *args)
 is_reg2(self) -> bool Is variable located on two registers?
 
"bool" is_reg_var (self, *args)
 is_reg_var(self) -> bool Is variable located on register(s)?
 
"bool" is_stk_var (self, *args)
 is_stk_var(self) -> bool Is variable located on the stack?
 
"bool" is_scattered (self, *args)
 is_scattered(self) -> bool Is variable scattered?
 
"mreg_t" get_reg1 (self, *args)
 get_reg1(self) -> mreg_t Get the register number of the variable.
 
"mreg_t" get_reg2 (self, *args)
 get_reg2(self) -> mreg_t Get the number of the second register (works only for ALOC_REG2 lvars)
 
"scattered_aloc_t &" get_scattered (self, *args)
 get_scattered(self) -> scattered_aloc_t
 
"bool" __eq__ (self, *args)
 eq(self, r) -> bool
 
"bool" __ne__ (self, *args)
 ne(self, r) -> bool
 
"bool" __lt__ (self, *args)
 lt(self, r) -> bool
 
"bool" __gt__ (self, *args)
 gt(self, r) -> bool
 
"bool" __le__ (self, *args)
 le(self, r) -> bool
 
"bool" __ge__ (self, *args)
 ge(self, r) -> bool
 
"int" compare (self, *args)
 compare(self, r) -> int
 

Properties

 thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
 name = property(_ida_hexrays.lvar_t_name_get, _ida_hexrays.lvar_t_name_set, doc=)
 
 cmt = property(_ida_hexrays.lvar_t_cmt_get, _ida_hexrays.lvar_t_cmt_set, doc=)
 
 tif = property(_ida_hexrays.lvar_t_tif_get, _ida_hexrays.lvar_t_tif_set, doc=)
 
 width = property(_ida_hexrays.lvar_t_width_get, _ida_hexrays.lvar_t_width_set, doc=)
 
 defblk = property(_ida_hexrays.lvar_t_defblk_get, _ida_hexrays.lvar_t_defblk_set, doc=)
 
 divisor = property(_ida_hexrays.lvar_t_divisor_get, _ida_hexrays.lvar_t_divisor_set, doc=!)
 
- Properties inherited from lvar_locator_t
 thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
 location = property(_ida_hexrays.lvar_locator_t_location_get, _ida_hexrays.lvar_locator_t_location_set, doc=)
 
 defea = property(_ida_hexrays.lvar_locator_t_defea_get, _ida_hexrays.lvar_locator_t_defea_set, doc=)
 

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* args,
** kwargs )
Parameters
locvdloc_t const &
eaea_t

Reimplemented from lvar_locator_t.

Member Function Documentation

◆ accepts_type()

"bool" accepts_type ( self,
* args )

Some types are forbidden (void, function types, wrong arrays, etc)

Parameters
t(C++: const tinfo_t &) tinfo_t const &
may_change_thisarg(C++: bool)

◆ append_list()

"void" append_list ( self,
* args )
Parameters
mba(C++: const mba_t *) ptr to the current mba_t
lst(C++: mlist_t *) list to append to
pad_if_scattered(C++: bool) if true, append padding bytes in case of scattered lvar

◆ clear_used()

"void" clear_used ( self,
* args )

◆ clr_arg_var()

"void" clr_arg_var ( self,
* args )

◆ clr_automapped()

"void" clr_automapped ( self,
* args )

◆ clr_decl_unused()

"void" clr_decl_unused ( self,
* args )

◆ clr_dummy_arg()

"void" clr_dummy_arg ( self,
* args )

◆ clr_fake_var()

"void" clr_fake_var ( self,
* args )

◆ clr_floating_var()

"void" clr_floating_var ( self,
* args )

◆ clr_mapdst_var()

"void" clr_mapdst_var ( self,
* args )

◆ clr_mreg_done()

"void" clr_mreg_done ( self,
* args )

◆ clr_noptr_var()

"void" clr_noptr_var ( self,
* args )

◆ clr_notarg()

"void" clr_notarg ( self,
* args )

◆ clr_overlapped_var()

"void" clr_overlapped_var ( self,
* args )

◆ clr_shared()

"void" clr_shared ( self,
* args )

◆ clr_split_var()

"void" clr_split_var ( self,
* args )

◆ clr_spoiled_var()

"void" clr_spoiled_var ( self,
* args )

◆ clr_thisarg()

"void" clr_thisarg ( self,
* args )

◆ clr_unknown_width()

"void" clr_unknown_width ( self,
* args )

◆ clr_used_byref()

"void" clr_used_byref ( self,
* args )

◆ clr_user_info()

"void" clr_user_info ( self,
* args )

◆ clr_user_name()

"void" clr_user_name ( self,
* args )

◆ clr_user_type()

"void" clr_user_type ( self,
* args )

◆ has_common()

"bool" has_common ( self,
* args )
Parameters
v(C++: const lvar_t &) lvar_t const &

◆ has_common_bit()

"bool" has_common_bit ( self,
* args )
Parameters
loc(C++: const vdloc_t &) vdloc_t const &
width2(C++: asize_t)

◆ has_nice_name()

"bool" has_nice_name ( self,
* args )

◆ has_regname()

"bool" has_regname ( self,
* args )

◆ has_user_info()

"bool" has_user_info ( self,
* args )

◆ has_user_name()

"bool" has_user_name ( self,
* args )

◆ has_user_type()

"bool" has_user_type ( self,
* args )

◆ in_asm()

"bool" in_asm ( self,
* args )

◆ is_aliasable()

"bool" is_aliasable ( self,
* args )
Parameters
mba(C++: const mba_t *) ptr to the current mba_t Aliasable variables may be modified indirectly (through a pointer)

◆ is_arg_var()

"bool" is_arg_var ( self,
* args )

◆ is_automapped()

"bool" is_automapped ( self,
* args )

◆ is_decl_unused()

"bool" is_decl_unused ( self,
* args )

◆ is_dummy_arg()

"bool" is_dummy_arg ( self,
* args )

◆ is_fake_var()

"bool" is_fake_var ( self,
* args )

◆ is_floating_var()

"bool" is_floating_var ( self,
* args )

◆ is_mapdst_var()

"bool" is_mapdst_var ( self,
* args )

◆ is_noptr_var()

"bool" is_noptr_var ( self,
* args )

◆ is_notarg()

"bool" is_notarg ( self,
* args )

◆ is_overlapped_var()

"bool" is_overlapped_var ( self,
* args )

◆ is_result_var()

"bool" is_result_var ( self,
* args )

◆ is_shared()

"bool" is_shared ( self,
* args )

◆ is_split_var()

"bool" is_split_var ( self,
* args )

◆ is_spoiled_var()

"bool" is_spoiled_var ( self,
* args )

◆ is_thisarg()

"bool" is_thisarg ( self,
* args )

◆ is_unknown_width()

"bool" is_unknown_width ( self,
* args )

◆ is_used_byref()

"bool" is_used_byref ( self,
* args )

◆ mreg_done()

"bool" mreg_done ( self,
* args )

◆ set_arg_var()

"void" set_arg_var ( self,
* args )

◆ set_automapped()

"void" set_automapped ( self,
* args )

◆ set_decl_unused()

"void" set_decl_unused ( self,
* args )

◆ set_dummy_arg()

"void" set_dummy_arg ( self,
* args )

◆ set_fake_var()

"void" set_fake_var ( self,
* args )

◆ set_final_lvar_type()

"void" set_final_lvar_type ( self,
* args )
Parameters
t(C++: const tinfo_t &) tinfo_t const &

◆ set_floating_var()

"void" set_floating_var ( self,
* args )

◆ set_lvar_type()

"bool" set_lvar_type ( self,
* args )

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.

Parameters
t(C++: const tinfo_t &) new type
may_fail(C++: bool) if false and type is bad, interr
Returns
: success

◆ set_mapdst_var()

"void" set_mapdst_var ( self,
* args )

◆ set_mreg_done()

"void" set_mreg_done ( self,
* args )

◆ set_non_typed()

"void" set_non_typed ( self,
* args )

◆ set_noptr_var()

"void" set_noptr_var ( self,
* args )

◆ set_notarg()

"void" set_notarg ( self,
* args )

◆ set_overlapped_var()

"void" set_overlapped_var ( self,
* args )

◆ set_shared()

"void" set_shared ( self,
* args )

◆ set_split_var()

"void" set_split_var ( self,
* args )

◆ set_spoiled_var()

"void" set_spoiled_var ( self,
* args )

◆ set_thisarg()

"void" set_thisarg ( self,
* args )

◆ set_typed()

"void" set_typed ( self,
* args )

◆ set_unknown_width()

"void" set_unknown_width ( self,
* args )

◆ set_used()

"void" set_used ( self,
* args )

◆ set_used_byref()

"void" set_used_byref ( self,
* args )

◆ set_user_name()

"void" set_user_name ( self,
* args )

◆ set_user_type()

"void" set_user_type ( self,
* args )

◆ set_width()

"bool" set_width ( self,
* args )

We call the variable size 'width', it is represents the number of bytes. This function may change the variable type using set_lvar_type().

Parameters
w(C++: int) new width
svw_flags(C++: int) combination of SVW_... bits
Returns
: success

◆ type()

"tinfo_t &" type ( self,
* args )

◆ typed()

"bool" typed ( self,
* args )

◆ used()

"bool" used ( self,
* args )

Property Documentation

◆ cmt

cmt = property(_ida_hexrays.lvar_t_cmt_get, _ida_hexrays.lvar_t_cmt_set, doc=)
static

◆ defblk

defblk = property(_ida_hexrays.lvar_t_defblk_get, _ida_hexrays.lvar_t_defblk_set, doc=)
static

◆ divisor

divisor = property(_ida_hexrays.lvar_t_divisor_get, _ida_hexrays.lvar_t_divisor_set, doc=!)
static

◆ name

name = property(_ida_hexrays.lvar_t_name_get, _ida_hexrays.lvar_t_name_set, doc=)
static

◆ thisown

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

◆ tif

tif = property(_ida_hexrays.lvar_t_tif_get, _ida_hexrays.lvar_t_tif_set, doc=)
static

◆ width

width = property(_ida_hexrays.lvar_t_width_get, _ida_hexrays.lvar_t_width_set, doc=)
static

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