IDAPython 9.0
Loading...
Searching...
No Matches
processor_t Class Reference
Inheritance diagram for processor_t:
IDP_Hooks

Public Member Functions

 __init__ (self)
 
 get_idpdesc (self)
 
 get_auxpref (self, insn)
 
 ev_newprc (self, *args)
 
 ev_newfile (self, *args)
 
 ev_oldfile (self, *args)
 
 ev_newbinary (self, *args)
 
 ev_endbinary (self, *args)
 
 ev_set_idp_options (self, keyword, value_type, value, idb_loaded)
 
 ev_set_proc_options (self, *args)
 
 ev_ana_insn (self, *args)
 
 ev_emu_insn (self, *args)
 
 ev_out_header (self, *args)
 
 ev_out_footer (self, *args)
 
 ev_out_segstart (self, ctx, s)
 
 ev_out_segend (self, ctx, s)
 
 ev_out_assumes (self, *args)
 
 ev_out_insn (self, *args)
 
 ev_out_mnem (self, *args)
 
 ev_out_operand (self, *args)
 
 ev_out_data (self, *args)
 
 ev_out_label (self, *args)
 
 ev_out_special_item (self, *args)
 
 ev_gen_regvar_def (self, ctx, v)
 
 ev_gen_src_file_lnnum (self, *args)
 
 ev_creating_segm (self, s)
 
 ev_moving_segm (self, s, to_ea, flags)
 
 ev_coagulate (self, *args)
 
 ev_undefine (self, *args)
 
 ev_treat_hindering_item (self, *args)
 
 ev_rename (self, *args)
 
 ev_is_far_jump (self, *args)
 
 ev_is_sane_insn (self, *args)
 
 ev_is_call_insn (self, *args)
 
 ev_is_ret_insn (self, *args)
 
 ev_may_be_func (self, *args)
 
 ev_is_basic_block_end (self, *args)
 
 ev_is_indirect_jump (self, *args)
 
 ev_is_insn_table_jump (self, *args)
 
 ev_is_switch (self, *args)
 
 ev_create_switch_xrefs (self, *args)
 
 ev_is_align_insn (self, *args)
 
 ev_is_alloca_probe (self, *args)
 
 ev_is_sp_based (self, mode, insn, op)
 
 ev_can_have_type (self, *args)
 
 ev_cmp_operands (self, *args)
 
 ev_get_operand_string (self, buf, insn, opnum)
 
 ev_str2reg (self, *args)
 
 ev_get_autocmt (self, *args)
 
 ev_func_bounds (self, _possible_return_code, pfn, max_func_end_ea)
 
 ev_verify_sp (self, pfn)
 
 ev_verify_noreturn (self, pfn)
 
 ev_create_func_frame (self, pfn)
 
 ev_get_frame_retsize (self, frsize, pfn)
 
 ev_coagulate_dref (self, from_ea, to_ea, may_define, _code_ea)
 
 ev_may_show_sreg (self, *args)
 
 ev_auto_queue_empty (self, *args)
 
 ev_validate_flirt_func (self, *args)
 
 ev_assemble (self, *args)
 
 ev_gen_map_file (self, nlines, fp)
 
 ev_calc_step_over (self, target, ip)
 
 closebase (self, *args)
 
 savebase (self, *args)
 
 auto_empty (self, *args)
 
 auto_empty_finally (self, *args)
 
 determined_main (self, *args)
 
 idasgn_loaded (self, *args)
 
 kernel_config_loaded (self, *args)
 
 compiler_changed (self, *args)
 
 segm_moved (self, from_ea, to_ea, size, changed_netmap)
 
 func_added (self, pfn)
 
 set_func_start (self, *args)
 
 set_func_end (self, *args)
 
 deleting_func (self, pfn)
 
 sgr_changed (self, *args)
 
 make_code (self, *args)
 
 make_data (self, *args)
 
 renamed (self, *args)
 
- Public Member Functions inherited from IDP_Hooks
bool hook (self)
 
bool unhook (self)
 
int ev_init (self, str idp_modname)
 
int ev_term (self)
 
int ev_newasm (self, int asmnum)
 
int ev_is_cond_insn (self, 'insn_t const *' insn)
 
int ev_calc_switch_cases (self, 'casevec_t *' casevec, 'eavec_t *' targets, ida_idaapi.ea_t insn_ea, 'switch_info_t' si)
 
'PyObject *' ev_delay_slot_insn (self, ida_idaapi.ea_t ea, bool bexec, bool fexec)
 
int ev_adjust_refinfo (self, 'refinfo_t' ri, ida_idaapi.ea_t ea, int n, 'fixup_data_t const *' fd)
 
'PyObject *' ev_get_reg_name (self, int reg, 'size_t' width, int reghi)
 
int ev_get_bg_color (self, 'bgcolor_t *' color, ida_idaapi.ea_t ea)
 
int ev_is_jump_func (self, 'func_t *' pfn, 'ea_t *' jump_target, 'ea_t *' func_pointer)
 
int ev_get_stkvar_scale_factor (self)
 
'PyObject *' ev_demangle_name (self, str name, int disable_mask, int demreq)
 
int ev_add_cref (self, ida_idaapi.ea_t _from, ida_idaapi.ea_t to, 'cref_t' type)
 
int ev_add_dref (self, ida_idaapi.ea_t _from, ida_idaapi.ea_t to, 'dref_t' type)
 
int ev_del_cref (self, ida_idaapi.ea_t _from, ida_idaapi.ea_t to, bool expand)
 
int ev_del_dref (self, ida_idaapi.ea_t _from, ida_idaapi.ea_t to)
 
int ev_adjust_libfunc_ea (self, 'idasgn_t const *' sig, 'libfunc_t const *' libfun, 'ea_t *' ea)
 
int ev_extract_address (self, 'ea_t *' out_ea, ida_idaapi.ea_t screen_ea, str string, 'size_t' position)
 
int ev_realcvt (self, 'void *' m, 'fpvalue_t *' e, 'uint16' swt)
 
int ev_gen_asm_or_lst (self, bool starting, 'FILE *' fp, bool is_asm, int flags, 'html_line_cb_t **' outline)
 
int ev_create_flat_group (self, ida_idaapi.ea_t image_base, int bitness, 'sel_t' dataseg_sel)
 
int ev_getreg (self, 'uval_t *' regval, int regnum)
 
int ev_analyze_prolog (self, ida_idaapi.ea_t ea)
 
int ev_calc_spdelta (self, 'sval_t *' spdelta, 'insn_t const *' insn)
 
int ev_calcrel (self)
 
'PyObject *' ev_find_reg_value (self, 'insn_t const *' pinsn, int reg)
 
'PyObject *' ev_find_op_value (self, 'insn_t const *' pinsn, int opn)
 
int ev_replaying_undo (self, str action_name, 'undo_records_t const *' vec, bool is_undo)
 
int ev_ending_undo (self, str action_name, bool is_undo)
 
int ev_set_code16_mode (self, ida_idaapi.ea_t ea, bool code16)
 
int ev_get_code16_mode (self, ida_idaapi.ea_t ea)
 
int ev_get_procmod (self)
 
int ev_asm_installed (self, int asmnum)
 
int ev_get_reg_accesses (self, 'reg_accesses_t' accvec, 'insn_t const *' insn, int flags)
 
int ev_is_control_flow_guard (self, 'int *' p_reg, 'insn_t const *' insn)
 
int ev_create_merge_handlers (self, 'merge_data_t *' md)
 
int ev_privrange_changed (self, 'range_t' old_privrange, 'adiff_t' delta)
 
int ev_cvt64_supval (self, 'nodeidx_t' node, 'uchar' tag, 'nodeidx_t' idx, 'uchar const *' data)
 
int ev_cvt64_hashval (self, 'nodeidx_t' node, 'uchar' tag, str name, 'uchar const *' data)
 
int ev_gen_stkvar_def (self, 'outctx_t *' outctx, 'udm_t' stkvar, int v, 'tid_t' tid)
 
int ev_next_exec_insn (self, 'ea_t *' target, ida_idaapi.ea_t ea, int tid, 'processor_t::regval_getter_t *' getreg, 'regval_t' regvalues)
 
int ev_calc_next_eas (self, 'eavec_t *' res, 'insn_t const *' insn, bool over)
 
int ev_get_macro_insn_head (self, 'ea_t *' head, ida_idaapi.ea_t ip)
 
int ev_get_dbr_opnum (self, 'int *' opnum, 'insn_t const *' insn)
 
int ev_insn_reads_tbit (self, 'insn_t const *' insn, 'processor_t::regval_getter_t *' getreg, 'regval_t' regvalues)
 
int ev_clean_tbit (self, ida_idaapi.ea_t ea, 'processor_t::regval_getter_t *' getreg, 'regval_t' regvalues)
 
int ev_get_reg_info (self, 'char const **' main_regname, 'bitrange_t' bitrange, str regname)
 
int ev_update_call_stack (self, 'call_stack_t' stack, int tid, 'processor_t::regval_getter_t *' getreg, 'regval_t' regvalues)
 
int ev_setup_til (self)
 
int ev_get_abi_info (self, 'comp_t' comp)
 
int ev_max_ptr_size (self)
 
int ev_get_default_enum_size (self)
 
int ev_get_cc_regs (self, 'callregs_t' regs, 'cm_t' cc)
 
int ev_get_simd_types (self, 'simd_info_vec_t *' out, 'simd_info_t' simd_attrs, 'argloc_t' argloc, bool create_tifs)
 
int ev_calc_cdecl_purged_bytes (self, ida_idaapi.ea_t ea)
 
int ev_calc_purged_bytes (self, 'int *' p_purged_bytes, 'func_type_data_t' fti)
 
int ev_calc_retloc (self, 'argloc_t' retloc, 'tinfo_t' rettype, 'cm_t' cc)
 
int ev_calc_arglocs (self, 'func_type_data_t' fti)
 
int ev_calc_varglocs (self, 'func_type_data_t' ftd, 'regobjs_t' aux_regs, 'relobj_t' aux_stkargs, int nfixed)
 
int ev_adjust_argloc (self, 'argloc_t' argloc, 'tinfo_t' optional_type, int size)
 
int ev_lower_func_type (self, 'intvec_t *' argnums, 'func_type_data_t' fti)
 
int ev_equal_reglocs (self, 'argloc_t' a1, 'argloc_t' a2)
 
int ev_use_stkarg_type (self, ida_idaapi.ea_t ea, 'funcarg_t' arg)
 
'PyObject *' ev_use_regarg_type (self, ida_idaapi.ea_t ea, 'funcargvec_t const *' rargs)
 
int ev_use_arg_types (self, ida_idaapi.ea_t ea, 'func_type_data_t' fti, 'funcargvec_t *' rargs)
 
int ev_arg_addrs_ready (self, ida_idaapi.ea_t caller, int n, 'tinfo_t' tif, 'ea_t *' addrs)
 
'PyObject *' ev_decorate_name (self, str name, bool mangle, int cc, 'tinfo_t' optional_type)
 
int ev_arch_changed (self)
 
int ev_get_stkarg_area_info (self, 'stkarg_area_info_t' out, 'cm_t' cc)
 
int ev_last_cb_before_loader (self)
 
int ev_loader (self)
 
 __disown__ (self)
 

Public Attributes

 idb_hooks = _processor_t_Trampoline_IDB_Hooks(self)
 
 plnames
 
 psnames
 

Protected Member Functions

 _get_idp_notifier_addr (self)
 
 _get_idp_notifier_ud_addr (self)
 
 _get_idb_notifier_addr (self)
 
 _get_idb_notifier_ud_addr (self)
 
 _make_forced_value_wrapper (self, val, meth=None)
 
 _make_int_returning_wrapper (self, meth, intval=0)
 
 _get_notify (self, what, unimp_val=0, imp_forced_val=None, add_prefix=True, mandatory_impl=None)
 

Additional Inherited Members

- Properties inherited from IDP_Hooks
 thisown
 

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self)

Reimplemented from IDP_Hooks.

Member Function Documentation

◆ _get_idb_notifier_addr()

_get_idb_notifier_addr ( self)
protected

◆ _get_idb_notifier_ud_addr()

_get_idb_notifier_ud_addr ( self)
protected

◆ _get_idp_notifier_addr()

_get_idp_notifier_addr ( self)
protected

◆ _get_idp_notifier_ud_addr()

_get_idp_notifier_ud_addr ( self)
protected

◆ _get_notify()

_get_notify ( self,
what,
unimp_val = 0,
imp_forced_val = None,
add_prefix = True,
mandatory_impl = None )
protected
This helper is used to implement backward-compatibility
of pre IDA 7.3 processor_t interfaces.

◆ _make_forced_value_wrapper()

_make_forced_value_wrapper ( self,
val,
meth = None )
protected

◆ _make_int_returning_wrapper()

_make_int_returning_wrapper ( self,
meth,
intval = 0 )
protected

◆ auto_empty()

auto_empty ( self,
* args )

◆ auto_empty_finally()

auto_empty_finally ( self,
* args )

◆ closebase()

closebase ( self,
* args )

◆ compiler_changed()

compiler_changed ( self,
* args )

◆ deleting_func()

deleting_func ( self,
pfn )

◆ determined_main()

determined_main ( self,
* args )

◆ ev_ana_insn()

ev_ana_insn ( self,
* out )
Analyze one instruction and fill 'out' structure. This function shouldn't change the database, flags or anything else. All these actions should be performed only by emu_insn() function. insn_t::ea contains address of instruction to analyze. 
  
@param out: (insn_t *)
@returns length of the instruction in bytes, 0 if instruction can't be decoded.
@retval 0: if instruction can't be decoded.

Reimplemented from IDP_Hooks.

◆ ev_assemble()

ev_assemble ( self,
* ea )
Assemble an instruction. (display a warning if an error is found). 
  
@param ea: (::ea_t) linear address of instruction
@param cs: (::ea_t) cs of instruction
@param ip: (::ea_t) ip of instruction
@param use32: (bool) is 32bit segment?
@param line: (const char *) line to assemble
@returns size of the instruction in bytes

Reimplemented from IDP_Hooks.

◆ ev_auto_queue_empty()

ev_auto_queue_empty ( self,
* type )
One analysis queue is empty. 
  
@param type: (atype_t)
@retval void: see also idb_event::auto_empty_finally

Reimplemented from IDP_Hooks.

◆ ev_calc_step_over()

ev_calc_step_over ( self,
target,
ip )
Calculate the address of the instruction which will be executed after "step over". The kernel will put a breakpoint there. If the step over is equal to step into or we cannot calculate the address, return BADADDR. 
  
@param target: (::ea_t *) pointer to the answer
@param ip: (::ea_t) instruction address
@retval 0: unimplemented
@retval 1: implemented

Reimplemented from IDP_Hooks.

◆ ev_can_have_type()

ev_can_have_type ( self,
* op )
Can the operand have a type as offset, segment, decimal, etc? (for example, a register AX can't have a type, meaning that the user can't change its representation. see bytes.hpp for information about types and flags) 
  
@param op: (const op_t *)
@retval 0: unknown
@retval <0: no
@retval 1: yes

Reimplemented from IDP_Hooks.

◆ ev_cmp_operands()

ev_cmp_operands ( self,
* op1 )
Compare instruction operands 
  
@param op1: (const op_t*)
@param op2: (const op_t*)
@retval 1: equal
@retval -1: not equal
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_coagulate()

ev_coagulate ( self,
* start_ea )
Try to define some unexplored bytes. This notification will be called if the kernel tried all possibilities and could not find anything more useful than to convert to array of bytes. The module can help the kernel and convert the bytes into something more useful. 
  
@param start_ea: (::ea_t)
@returns number of converted bytes

Reimplemented from IDP_Hooks.

◆ ev_coagulate_dref()

ev_coagulate_dref ( self,
_from,
to,
may_define,
code_ea )
Data reference is being analyzed. plugin may correct 'code_ea' (e.g. for thumb mode refs, we clear the last bit) 
  
@param to: (::ea_t)
@param may_define: (bool)
@param code_ea: (::ea_t *)
@retval <0: failed dref analysis, >0 done dref analysis
@retval 0: not implemented or continue

Reimplemented from IDP_Hooks.

◆ ev_create_func_frame()

ev_create_func_frame ( self,
pfn )
Create a function frame for a newly created function Set up frame size, its attributes etc 
  
@param pfn: (func_t *)
@retval 1: ok
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_create_switch_xrefs()

ev_create_switch_xrefs ( self,
* jumpea )
Create xrefs for a custom jump table. 
  
@param jumpea: (::ea_t) address of the jump insn
@param si: (const switch_info_t *) switch information
@returns must return 1 Must be implemented if module uses custom jump tables, SWI_CUSTOM

Reimplemented from IDP_Hooks.

◆ ev_creating_segm()

ev_creating_segm ( self,
seg )
A new segment is about to be created. 
  
@param seg: (segment_t *)
@retval 1: ok
@retval <0: segment should not be created

Reimplemented from IDP_Hooks.

◆ ev_emu_insn()

ev_emu_insn ( self,
* insn )
Emulate instruction, create cross-references, plan to analyze subsequent instructions, modify flags etc. Upon entrance to this function, all information about the instruction is in 'insn' structure. 
  
@param insn: (const insn_t *)
@retval 1: ok
@retval -1: the kernel will delete the instruction

Reimplemented from IDP_Hooks.

◆ ev_endbinary()

ev_endbinary ( self,
* ok )
IDA has loaded a binary file. 
  
@param ok: (bool) file loaded successfully?

Reimplemented from IDP_Hooks.

◆ ev_func_bounds()

ev_func_bounds ( self,
possible_return_code,
pfn,
max_func_end_ea )
find_func_bounds() finished its work. The module may fine tune the function bounds 
  
@param possible_return_code: (int *), in/out
@param pfn: (func_t *)
@param max_func_end_ea: (::ea_t) (from the kernel's point of view)
@retval void: 

Reimplemented from IDP_Hooks.

◆ ev_gen_map_file()

ev_gen_map_file ( self,
nlines,
fp )
Generate map file. If not implemented the kernel itself will create the map file. 
  
@param nlines: (int *) number of lines in map file (-1 means write error)
@param fp: (FILE *) output file
@retval 0: not implemented
@retval 1: ok
@retval -1: write error

Reimplemented from IDP_Hooks.

◆ ev_gen_regvar_def()

ev_gen_regvar_def ( self,
outctx,
v )
Generate register variable definition line. 
  
@param outctx: (outctx_t *)
@param v: (regvar_t *)
@retval >0: ok, generated the definition text
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_gen_src_file_lnnum()

ev_gen_src_file_lnnum ( self,
* outctx )
Callback: generate analog of: 
#line  123



  
@param outctx: (outctx_t *) output context
@param file: (const char *) source file (may be nullptr)
@param lnnum: (size_t) line number
@retval 1: directive has been generated
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_get_autocmt()

ev_get_autocmt ( self,
* insn )
Callback: get dynamic auto comment. Will be called if the autocomments are enabled and the comment retrieved from ida.int starts with '$!'. 'insn' contains valid info. 
  
@param insn: (const insn_t*) the instruction
@retval 1: new comment has been generated
@retval 0: callback has not been handled. the buffer must not be changed in this case

Reimplemented from IDP_Hooks.

◆ ev_get_frame_retsize()

ev_get_frame_retsize ( self,
frsize,
pfn )
Get size of function return address in bytes If this event is not implemented, the kernel will assume
* 8 bytes for 64-bit function
* 4 bytes for 32-bit function
* 2 bytes otherwise



@param frsize: (int *) frame size (out)
@param pfn: (const func_t *), can't be nullptr
@retval 1: ok
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_get_operand_string()

ev_get_operand_string ( self,
insn,
opnum,
opnum )
Request text string for operand (cli, java, ...). 
  
@param insn: (const insn_t*) the instruction
@param opnum: (int) operand number, -1 means any string operand
@retval 0: no string (or empty string)
@retval >0: original string length without terminating zero

Reimplemented from IDP_Hooks.

◆ ev_is_align_insn()

ev_is_align_insn ( self,
* ea )
Is the instruction created only for alignment purposes?. Do not directly call this function, use is_align_insn() 
  
@param ea: (ea_t) - instruction address
@retval number: of bytes in the instruction

Reimplemented from IDP_Hooks.

◆ ev_is_alloca_probe()

ev_is_alloca_probe ( self,
* ea )
Does the function at 'ea' behave as __alloca_probe? 
  
@param ea: (::ea_t)
@retval 1: yes
@retval 0: no

Reimplemented from IDP_Hooks.

◆ ev_is_basic_block_end()

ev_is_basic_block_end ( self,
* insn )
Is the current instruction end of a basic block?. This function should be defined for processors with delayed jump slots. 
  
@param insn: (const insn_t*) the instruction
@param call_insn_stops_block: (bool)
@retval 0: unknown
@retval <0: no
@retval 1: yes

Reimplemented from IDP_Hooks.

◆ ev_is_call_insn()

ev_is_call_insn ( self,
* insn )
Is the instruction a "call"? 
  
@param insn: (const insn_t *) instruction
@retval 0: unknown
@retval <0: no
@retval 1: yes

Reimplemented from IDP_Hooks.

◆ ev_is_far_jump()

ev_is_far_jump ( self,
* icode )
is indirect far jump or call instruction? meaningful only if the processor has 'near' and 'far' reference types 
  
@param icode: (int)
@retval 0: not implemented
@retval 1: yes
@retval -1: no

Reimplemented from IDP_Hooks.

◆ ev_is_indirect_jump()

ev_is_indirect_jump ( self,
* insn )
Determine if instruction is an indirect jump. If CF_JUMP bit cannot describe all jump types jumps, please define this callback. 
  
@param insn: (const insn_t*) the instruction
@retval 0: use CF_JUMP
@retval 1: no
@retval 2: yes

Reimplemented from IDP_Hooks.

◆ ev_is_insn_table_jump()

ev_is_insn_table_jump ( self,
* args )
Reserved.

Reimplemented from IDP_Hooks.

◆ ev_is_ret_insn()

ev_is_ret_insn ( self,
* insn )
Is the instruction a "return"? 
  
@param insn: (const insn_t *) instruction
@param flags: (uchar), combination of IRI_... flags (see above)
@retval 0: unknown
@retval <0: no
@retval 1: yes

Reimplemented from IDP_Hooks.

◆ ev_is_sane_insn()

ev_is_sane_insn ( self,
* insn )
Is the instruction sane for the current file type?. 
  
@param insn: (const insn_t*) the instruction
@param no_crefs: (int) 1: the instruction has no code refs to it. ida just tries to convert unexplored bytes to an instruction (but there is no other reason to convert them into an instruction) 0: the instruction is created because of some coderef, user request or another weighty reason.
@retval >=0: ok
@retval <0: no, the instruction isn't likely to appear in the program

Reimplemented from IDP_Hooks.

◆ ev_is_sp_based()

ev_is_sp_based ( self,
mode,
insn,
op )
Check whether the operand is relative to stack pointer or frame pointer This event is used to determine how to output a stack variable If not implemented, then all operands are sp based by default. Implement this event only if some stack references use frame pointer instead of stack pointer. 
  
@param mode: (int *) out, combination of SP/FP operand flags
@param insn: (const insn_t *)
@param op: (const op_t *)
@retval 0: not implemented
@retval 1: ok

Reimplemented from IDP_Hooks.

◆ ev_is_switch()

ev_is_switch ( self,
* si )
Find 'switch' idiom or override processor module's decision. It will be called for instructions marked with CF_JUMP. 
  
@param si: (switch_info_t *), out
@param insn: (const insn_t *) instruction possibly belonging to a switch
@retval 1: switch is found, 'si' is filled. IDA will create the switch using the filled 'si'
@retval -1: no switch found. This value forbids switch creation by the processor module
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_may_be_func()

ev_may_be_func ( self,
* insn )
Can a function start here? 
  
@param insn: (const insn_t*) the instruction
@param state: (int) autoanalysis phase 0: creating functions 1: creating chunks
@returns probability 1..100

Reimplemented from IDP_Hooks.

◆ ev_may_show_sreg()

ev_may_show_sreg ( self,
* current_ea )
The kernel wants to display the segment registers in the messages window. 
  
@param current_ea: (::ea_t)
@retval <0: if the kernel should not show the segment registers. (assuming that the module has done it)
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_moving_segm()

ev_moving_segm ( self,
seg,
to,
flags )
May the kernel move the segment? 
  
@param seg: (segment_t *) segment to move
@param to: (::ea_t) new segment start address
@param flags: (int) combination of Move segment flags
@retval 0: yes
@retval <0: the kernel should stop

Reimplemented from IDP_Hooks.

◆ ev_newbinary()

ev_newbinary ( self,
* filename )
IDA is about to load a binary file. 
  
@param filename: (char *) binary file name
@param fileoff: (qoff64_t) offset in the file
@param basepara: (::ea_t) base loading paragraph
@param binoff: (::ea_t) loader offset
@param nbytes: (::uint64) number of bytes to load

Reimplemented from IDP_Hooks.

◆ ev_newfile()

ev_newfile ( self,
* fname )
A new file has been loaded. 
  
@param fname: (char *) input file name

Reimplemented from IDP_Hooks.

◆ ev_newprc()

ev_newprc ( self,
* pnum )
Before changing processor type. 
  
@param pnum: (int) processor number in the array of processor names
@param keep_cfg: (bool) true: do not modify kernel configuration
@retval 1: ok
@retval <0: prohibit

Reimplemented from IDP_Hooks.

◆ ev_oldfile()

ev_oldfile ( self,
* fname )
An old file has been loaded. 
  
@param fname: (char *) input file name

Reimplemented from IDP_Hooks.

◆ ev_out_assumes()

ev_out_assumes ( self,
* outctx )
Function to produce assume directives when segment register value changes. 
  
@param outctx: (outctx_t *)
@retval 1: ok
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_out_data()

ev_out_data ( self,
* outctx )
Generate text representation of data items This function may change the database and create cross-references if analyze_only is set 
  
@param outctx: (outctx_t *)
@param analyze_only: (bool)
@retval 1: ok
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_out_footer()

ev_out_footer ( self,
* outctx )
Function to produce end of disassembled text 
  
@param outctx: (outctx_t *)
@retval void: 

Reimplemented from IDP_Hooks.

◆ ev_out_header()

ev_out_header ( self,
* outctx )
Function to produce start of disassembled text 
  
@param outctx: (outctx_t *)
@retval void: 

Reimplemented from IDP_Hooks.

◆ ev_out_insn()

ev_out_insn ( self,
* outctx )
Generate text representation of an instruction in 'ctx.insn' outctx_t provides functions to output the generated text. This function shouldn't change the database, flags or anything else. All these actions should be performed only by emu_insn() function. 
  
@param outctx: (outctx_t *)
@retval void: 

Reimplemented from IDP_Hooks.

◆ ev_out_label()

ev_out_label ( self,
* outctx )
The kernel is going to generate an instruction label line or a function header. 
  
@param outctx: (outctx_t *)
@param colored_name: (const char *)
@retval <0: if the kernel should not generate the label
@retval 0: not implemented or continue

Reimplemented from IDP_Hooks.

◆ ev_out_mnem()

ev_out_mnem ( self,
* outctx )
Generate instruction mnemonics. This callback should append the colored mnemonics to ctx.outbuf Optional notification, if absent, out_mnem will be called. 
  
@param outctx: (outctx_t *)
@retval 1: if appended the mnemonics
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_out_operand()

ev_out_operand ( self,
* outctx )
Generate text representation of an instruction operand outctx_t provides functions to output the generated text. All these actions should be performed only by emu_insn() function. 
  
@param outctx: (outctx_t *)
@param op: (const op_t *)
@retval 1: ok
@retval -1: operand is hidden

Reimplemented from IDP_Hooks.

◆ ev_out_segend()

ev_out_segend ( self,
outctx,
seg )
Function to produce end of segment 
  
@param outctx: (outctx_t *)
@param seg: (segment_t *)
@retval 1: ok
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_out_segstart()

ev_out_segstart ( self,
outctx,
seg )
Function to produce start of segment 
  
@param outctx: (outctx_t *)
@param seg: (segment_t *)
@retval 1: ok
@retval 0: not implemented

Reimplemented from IDP_Hooks.

◆ ev_out_special_item()

ev_out_special_item ( self,
* outctx )
Generate text representation of an item in a special segment i.e. absolute symbols, externs, communal definitions etc 
  
@param outctx: (outctx_t *)
@param segtype: (uchar)
@retval 1: ok
@retval 0: not implemented
@retval -1: overflow

Reimplemented from IDP_Hooks.

◆ ev_rename()

ev_rename ( self,
* ea )
The kernel is going to rename a byte. 
  
@param ea: (::ea_t)
@param new_name: (const char *)
@retval <0: if the kernel should not rename it.
@retval 2: to inhibit the notification. I.e., the kernel should not rename, but 'set_name()' should return 'true'. also see renamed the return value is ignored when kernel is going to delete name

Reimplemented from IDP_Hooks.

◆ ev_set_idp_options()

ev_set_idp_options ( self,
keyword,
value_type,
value,
idb_loaded )
Set IDP-specific configuration option Also see set_options_t in config.hpp 
  
@param keyword: (const char *)
@param value_type: (int)
@param value: (const void *)
@param idb_loaded: (bool) true if the ev_oldfile/ev_newfile events have been generated
@retval 1: ok
@retval 0: not implemented
@retval -1: error (and message in errbuf)

Reimplemented from IDP_Hooks.

◆ ev_set_proc_options()

ev_set_proc_options ( self,
* options )
Called if the user specified an option string in the command line: -p<processor name>:<options>. Can be used for setting a processor subtype. Also called if option string is passed to set_processor_type() and IDC's SetProcessorType(). 
  
@param options: (const char *)
@param confidence: (int) 0: loader's suggestion 1: user's decision
@retval <0: if bad option string

Reimplemented from IDP_Hooks.

◆ ev_str2reg()

ev_str2reg ( self,
* regname )
Convert a register name to a register number. The register number is the register index in the processor_t::reg_names array Most processor modules do not need to implement this callback It is useful only if processor_t::reg_names[reg] does not provide the correct register names 
  
@param regname: (const char *)
@retval register: number + 1
@retval 0: not implemented or could not be decoded

Reimplemented from IDP_Hooks.

◆ ev_treat_hindering_item()

ev_treat_hindering_item ( self,
* hindering_item_ea )
An item hinders creation of another item. 
  
@param hindering_item_ea: (::ea_t)
@param new_item_flags: (flags64_t) (0 for code)
@param new_item_ea: (::ea_t)
@param new_item_length: (::asize_t)
@retval 0: no reaction
@retval !=0: the kernel may delete the hindering item

Reimplemented from IDP_Hooks.

◆ ev_undefine()

ev_undefine ( self,
* ea )
An item in the database (insn or data) is being deleted. 
  
@param ea: (ea_t)
@retval 1: do not delete srranges at the item end
@retval 0: srranges can be deleted

Reimplemented from IDP_Hooks.

◆ ev_validate_flirt_func()

ev_validate_flirt_func ( self,
* start_ea )
Flirt has recognized a library function. This callback can be used by a plugin or proc module to intercept it and validate such a function. 
  
@param start_ea: (::ea_t)
@param funcname: (const char *)
@retval -1: do not create a function,
@retval 0: function is validated

Reimplemented from IDP_Hooks.

◆ ev_verify_noreturn()

ev_verify_noreturn ( self,
pfn )
The kernel wants to set 'noreturn' flags for a function. 
  
@param pfn: (func_t *)
@retval 0: ok. any other value: do not set 'noreturn' flag

Reimplemented from IDP_Hooks.

◆ ev_verify_sp()

ev_verify_sp ( self,
pfn )
All function instructions have been analyzed. Now the processor module can analyze the stack pointer for the whole function 
  
@param pfn: (func_t *)
@retval 0: ok
@retval <0: bad stack pointer

Reimplemented from IDP_Hooks.

◆ func_added()

func_added ( self,
pfn )

◆ get_auxpref()

get_auxpref ( self,
insn )
This function returns insn.auxpref value

◆ get_idpdesc()

get_idpdesc ( self)
This function must be present and should return the list of
short processor names similar to the one in ph.psnames.
This method can be overridden to return to the kernel a different IDP description.

◆ idasgn_loaded()

idasgn_loaded ( self,
* args )

◆ kernel_config_loaded()

kernel_config_loaded ( self,
* args )

◆ make_code()

make_code ( self,
* args )

◆ make_data()

make_data ( self,
* args )

◆ renamed()

renamed ( self,
* args )

◆ savebase()

savebase ( self,
* args )

◆ segm_moved()

segm_moved ( self,
from_ea,
to_ea,
size,
changed_netmap )

◆ set_func_end()

set_func_end ( self,
* args )

◆ set_func_start()

set_func_start ( self,
* args )

◆ sgr_changed()

sgr_changed ( self,
* args )

Member Data Documentation

◆ idb_hooks

◆ plnames

plnames

◆ psnames

psnames

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