API 7.0 Porting Guide
clear IDA 7.0 SDK: Porting from IDA 4.9-6.x API to IDA 7.0 API
Introduction
The SDK now only supports the new 7.0 API in x64 mode. The old SDK 6.95 can be used to develop plugins for IDA 7.0-x86 (which is ABI-compatible with IDA 6.95).
While the API has been revamped somewhat, most basic concepts still hold.
There are still two variants of IDA: one supporting 32-bit (ea_t is 32-bit) and the other 64-bit address space (ea_t is 64-bit). IDA database extensions remain correspondingly '.idb' and '.i64'.
Naming of IDA binaries has been unified across all OS variants:
The IDA GUI binary has been renamed from 'idaq[.exe]' to just 'ida[.exe]'.
The IDA text-mode UI has been renamed from 'idaw.exe' (on Windows) and 'idal' (on Linux/Mac OS X) to 'idat[.exe]' on all platforms.
Plugins, loaders, processor modules, and the kernel now use standard OS-specific suffixes ('.dll', '.so', or '.dylib') instead of custom extensions.
General approaches that were taken when cleaning up the APIs:
Try to use descriptive names and drop old, cryptic abbreviations.
Rename functions using camelCase to snake_case (e.g. 'isFlow' -> 'is_flow').
Move output parameters to the front of the argument list.
Change input parameters to const references whenever possible.
Remove obsolete and deprecated functions.
Rename functioname2/3 to just functioname (e.g. 'validate_name3' -> 'validate_name').
Rename functions with 64 suffix to the main name (e.g. 'qfseek64' -> 'qfseek').
File offsets are 64-bit in all functions working with files.
Get rid of global variables (not complete, but we made good progress).
Most functions accepting a buffer and size (or limited to MAXSTR) now use 'qstring' or 'bytevec_t' instead (depending on the nature of the data).
Assume UTF-8 in most functions dealing with text.
Try to get rid of forced struct packing and rearrange fields to avoid unnecessary gaps as needed.
Porting
Common porting steps for plugins/loaders/modules:
Add __X64__ to the list of preprocessor defines. You still need to compile with or without __EA64__ defined to select between 32- and 64-bit address space.
If using custom build system, change output extension to OS-specific suffixes ('.dll', '.so', or '.dylib').
IDA library link path should start with x64 instead of x86.
Renamed/removed header files
Some headers have been renamed and/or removed:
ints.hpp
<removed>
sistack.h
<removed>
area.hpp
range.hpp
queue.hpp
problems.hpp
srarea.hpp
segregs.hpp
Commonly used renamed structs and fields
area_t
range_t
areavec_t
rangevec_t
endEA
end_ea
startEA
start_ea
area-related methods have been renamed too (e.g. 'prev_area' -> 'prev_range').
Porting plugins.
The plugin entry prototype has been changed from:
void idaapi run(int);
to:
bool idaapi run(size_t);
The input parameter is now of type 'size_t', which allows passing a pointer as the argument of run() for extra possibilities.
The rest of the plugin interface is unchanged.
Porting loaders
The prototype for 'accept_file()' has been changed from:
int idaapi accept_file(linput_t *li, char fileformatname[MAX_FILE_FORMAT_NAME], int n);
to:
int idaapi accept_file(qstring *fileformatname, qstring *processor, linput_t *li, const char *filename);
The desired processor may be returned in the 'processor' output parameter.
The return value has been extended with flags 'ACCEPT_ARCHIVE' and 'ACCEPT_CONTINUE'.
Loaders can also process and extract archives now. If you detect an archive, the return value for 'accept_file' should be ORed with the 'ACCEPT_ARCHIVE' flag. After extraction, all loaders are queried again, which means IDA can now handle multiply nested archives.
Non-archive loaders should extend the return value with the 'ACCEPT_CONTINUE' flag.
Porting processor modules
WARNING: The global variables 'cmd' and 'uFlag' are gone.
Most APIs return or accept an 'insn_t' structure with instruction details.
The 'processor_t' structure has had many unused and obsolete fields removed, such as 'flag2', 'rFiles', 'rFnames', 'rFdescs', and 'CPUregs'.
Most callbacks are now handled centrally via the 'notify()' function:
header
ev_out_header
footer
ev_out_footer
segstart
ev_out_segstart
segend
ev_out_segend
assumes
ev_out_assumes
u_ana
ev_ana_insn
u_emu
ev_emu_insn
u_out
ev_out_insn
u_outop
ev_out_operand
d_out
ev_out_data
cmp_opnd
ev_cmp_opnd
can_have_type
ev_can_have_type
is_far_jump
ev_is_far_jump
getreg
ev_getreg
ana.cpp
Change the prototype of 'ana' from:
int idaapi ana(void);
to:
int idaapi ana(insn_t *_insn);
You may then declare an 'insn_t' reference variable to simplify your code:
insn_t &insn = *_insn;
Then replace all uses of 'cmd' by 'insn'. You will likely need to pass 'insn' to other helper functions that used 'cmd'.
emu.cpp
Change the prototype of 'emu' from:
int idaapi emu(void);
to:
int idaapi emu(const insn_t &insn);
Then replace all uses of 'cmd' by 'insn'. You may need to adjust some code if it was relying on cmd being writeable.
out.cpp
The output functions now use a context structure ('outctx_t') instead of operating on a global buffer.
You must declare a class inheriting from 'outctx_t' and override its methods or add new ones for non-standard functions. For example:
Then use one of the two macros from idaidp.hpp:
DECLARE_OUT_FUNCS_WITHOUT_OUTMNEM(out_myproc_t)
or, if you implement 'out_mnem':
DECLARE_OUT_FUNCS(out_myproc_t)
Then prefix old function names with your class and rename them to match methods. For example, from:
to:
Then remove calls to 'init_output_buffer()' and uses of the buffer variable.
Other changes that must be made are:
Replacing references to 'cmd' with 'insn';
Replacing term_output_buffer()/MakeLine() sequence with flush_outbuf().
Most of the other code can remain intact or can be replaced by the new helper functions.
For other output-related callbacks, convert them to take an 'outctx_t &ctx' parameter and use its methods. For example, from:
void idaapi header(void);
to:
void idaapi myproc_header(outctx_t &ctx)
See the changes to 'ua.hpp' below for more information on converting the functions.
Also, see the SDK samples for more ideas.
reg.cpp
Remove the old callbacks from the 'processor_t' structure and call them from the 'notify()' function instead. For example:
For 'ev_out_insn', call 'out_insn()' generated by the macro in out.cpp:
Porting notifications
When hooking notifications, return 0 for "not handled" instead of 1 as before.
Many notifications had their arguments types and/or order changed. Double-check your handlers against the new headers.
Instead of calling ph.notify() or similar, prefer helper inline functions for additional type safety. For example, use 'ph.get_operand_string()' instead of 'ph.notify(processor_t::get_operand_string, ...)'.
Some IDP events have been moved to the IDB event group (see the table class="table table-sm" below), so they should be handled on the HT_IDB level. You will need to move the corresponding code from the IDP notification hooks to the IDB hooks.
closebase
closebase
savebase
savebase
auto_empty
auto_empty
auto_empty_finally
auto_empty_finally
determined_main
determined_main
load_idasgn
idasgn_loaded
kernel_config_loaded
kernel_config_loaded
loader_finished
loader_finished
preprocess_chart
flow_chart_created
setsgr
sgr_changed
set_compiler
compiler_changed
move_segm
segm_moved
extlang_changed
extlang_changed
make_code
make_code
make_data
make_data
renamed
renamed
add_func
func_added
del_func
deleting_func
set_func_start
set_func_start
set_func_end
set_func_end
UI: Porting choosers
Make a new class derived from 'chooser_t' or 'chooser_multi_t'. Its fields are similar to arguments of 'choose2()' from IDA 6.95.
You should implement at least 2 methods:
'get_count()', and
'get_row()'.
The 'get_row()' method combines 3 methods of 6.95's old 'chooser_info_t':
'get_row()'
'get_icon()', and
'get_attrs()'
If you want to show actions Ins/Delete/Edit/Refresh in a popup-menu you should set new bits 'CH_CAN_...' in the 'flags' member.
The header line is stored in a new 'header' member.
All indexes are now 0-based. You can use new constant 'NO_SELECTION' for non-existing rows.
The default value is not stored in the 'chooser_t' structure now and it is passed directly to the 'choose()' function.
You can prepare a specialized version of the 'choose()' method that takes a special default value (e.g. an effective address). For this you should implement a new 'get_item_index()' method.
The 'update()' callback has been renamed to 'refresh()' and it returns the cursor position after refresh. If the data has not changed this callback should return a 'NOTHING_CHANGED' hint.
The returned value of the 'ins()', 'del()', 'edit()' and 'exit()' callbacks are the same as for 'refresh()' callback. E.g. the 'ins()' callback may return the cursor position of the newly inserted item. Or the 'del()' callback may return 'NOTHING_CHANGED' if it asked the user about the removal and he refused.
The 'initializer()' callback has been renamed to 'init()'. Its use allows you to prepare data when it is really needed (i.e., "lazy" populating).
The 'destroyer()' callback has been renamed to 'closed()' and it is called when the chooser window is about to close. To clean up the chooser data you should use the destructor.
The 'CH_MULTI' flag has been removed altogether. If you want to create a chooser with multiple selection, you should derive your class from 'chooser_multi_t'.
While callbacks for the 'chooser_t' class would receive and return a single value specifying the currently-selected row, callbacks of the 'chooser_multi_t' class will receive a vector of such values instead.
In a similar fashion, instead of using the 'NO_SELECTION' constant, 'chooser_multi_t' will use an empty vector.
In contrast to IDA 6.95, the selected items are now all processed at once, in one call to the 'ins()', 'del()', 'edit()' and 'exit()' callbacks (this greatly simplified implementing them.)
Changes per file in the SDK
This section describes in detail the changes to the APIs for each file in the SDK.
auto.hpp
NOTE: global variables 'auto_state', 'auto_display', and 'autoEnabled' have been removed.
[1] output argument moved to beginning of argument list
autoGetName
<removed>
autoStep
<removed>
<added>
auto_apply_tail
<added>
auto_recreate_insn
<added>
enable_auto
to be used instead of 'autoEnabled'
<added>
get_auto_display
to be used instead of 'auto_display'
<added>
get_auto_state
to be used instead of 'auto_state'
<added>
is_auto_enabled
to be used instead of 'autoEnabled'
<added>
set_auto_state
to be used instead of 'auto_state'
analyze_area
plan_and_wait
added 'final_pass' argument (true for analyze_area behaviour)
autoCancel
auto_cancel
autoIsOk
auto_is_ok
autoMark
auto_mark
autoUnmark
auto_unmark
autoWait
auto_wait
auto_get
*
noUsed
plan_ea
(ea_t ea) variant
noUsed
plan_range
(ea_t sEA, ea_t eEA) variant
setStat
set_ida_state
showAddr
show_addr
showAuto
show_auto
bitrange.hpp
bitrange_t::extract
argument type: 'int' changed to 'size_t'
bitrange_t::inject
argument type: 'int' changed to 'size_t'
bytes.hpp
NOTE: The misleading term "ASCII string" has been replaced by "string literal" (strlit).
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
clrFlbits
<removed>
do3byte
<removed>
doASCI
<removed>
doVar
<removed>
do_unknown
<removed>
use 'del_items' instead
do_unknown_range
<removed>
use 'del_items' instead
f_is3byte
<removed>
getRadixEA
<removed>
get_3byte
<removed>
get_many_bytes
<removed>
use 'get_bytes' instead
get_many_bytes_ex
<removed>
use 'get_bytes' instead
is3byte
<removed>
isVar
<removed>
noImmd
<removed>
setFlags
<removed>
setFlbits
<removed>
tribyteflag
<removed>
<added>
add_mapping
<added>
attach_custom_data_format
<added>
del_items
<added>
del_mapping
<added>
detach_custom_data_format
<added>
get_bytes
<added>
get_first_hidden_range
<added>
get_last_hidden_range
<added>
get_mapping
<added>
get_mappings_qty
<added>
is_attached_custom_data_format
<added>
revert_byte
<added>
update_hidden_range
<added>
use_mapping
add_hidden_area
add_hidden_range
alignflag
align_flag
asciflag
strlit_flag
binflag
bin_flag
byteflag
byte_flag
charflag
char_flag
chunksize
chunk_size
chunkstart
chunk_start
codeflag
code_flag
custflag
cust_flag
custfmtflag
custfmt_flag
decflag
dec_flag
delValue
del_value
del_hidden_area
del_hidden_range
do16bit
create_16bit_data
do32bit
create_32bit_data
doAlign
create_align
doByte
create_byte
doCustomData
create_custdata
doDouble
create_double
doDwrd
create_dword
doFloat
create_float
doImmd
set_immd
doOwrd
create_oword
doPackReal
create_packed_real
doQwrd
create_qword
doStruct
create_struct
doTbyt
create_tbyte
doWord
create_word
doYwrd
create_yword
doZwrd
create_zword
do_data_ex
create_data
doubleflag
double_flag
dwrdflag
dword_flag
enumflag
enum_flag
f_hasRef
f_has_xref
f_isASCII
f_is_strlit
f_isAlign
f_is_align
f_isByte
f_is_byte
f_isCode
f_is_code
f_isCustom
f_is_custom
f_isData
f_is_data
f_isDouble
f_is_double
f_isDwrd
f_is_dword
f_isFloat
f_is_float
f_isHead
f_is_head
f_isNotTail
f_is_not_tail
f_isOwrd
f_is_oword
f_isPackReal
f_is_pack_real
f_isQwrd
f_is_qword
f_isStruct
f_is_struct
f_isTail
f_is_tail
f_isTbyt
f_is_tbyte
f_isWord
f_is_word
f_isYwrd
f_is_yword
floatflag
float_flag
fltflag
flt_flag
freechunk
free_chunk
getDefaultRadix
get_default_radix
getFlags
get_full_flags
WARNING: 'getFlags' has not been renamed to 'get_flags'
get_long
get_dword
get_full_byte
get_wide_byte
get_full_word
get_wide_word
get_full_long
get_wide_dword
get_original_long
get_original_dword
put_long
put_dword
patch_long
patch_dword
add_long
add_dword
getRadix
get_radix
get_ascii_contents2
get_strlit_contents
q
*
return type changed from 'bool' to 'ssize_t'; output argument 'usedsize' (in bytes) changed to 'maxcps' (in codepoints)
get_cmt
q
*
get_custom_data_format
removed 'dtid' argument
get_data_value
*
get_enum_id
*
get_flags_novalue
get_flags
WARNING: 'getFlags' has not been renamed to 'get_flags'
get_forced_operand
q
*
get_hidden_area
get_hidden_range
return type: 'hidden_area_t *' has been renamed to 'hidden_range_t *'
get_hidden_area_num
get_hidden_range_num
get_hidden_area_qty
get_hidden_range_qty
get_manual_insn
q
*
return type changed from 'char *' to 'ssize_t';
get_max_ascii_length
get_max_strlit_length
get_next_hidden_range
get_next_hidden_area
return type: 'hidden_area_t *' has been renamed to 'hidden_range_t *'
get_opinfo
*
get_predef_insn_cmt
q
*
moved from ints.hpp
get_prev_hidden_range
get_prev_hidden_area
return type: 'hidden_area_t *' has been renamed to 'hidden_range_t *'
get_stroff_path
*
get_zero_areas
get_zero_ranges
argument type: 'areaset_t' has been renamed to 'rangeset_t'
getn_hidden_area
getn_hidden_range
return type: 'hidden_area_t *' has been renamed to 'hidden_range_t *'
hasExtra
has_extra_cmts
hasRef
has_xref
hasValue
has_value
hexflag
hex_flag
isASCII
is_strlit
isAlign
is_align
isByte
is_byte
isChar
is_char
isChar0
is_char0
isChar1
is_char1
isCode
is_code
isCustFmt
is_custfmt
isCustFmt0
is_custfmt0
isCustFmt1
is_custfmt1
isCustom
is_custom
isData
is_data
isDefArg
is_defarg
isDefArg0
is_defarg0
isDefArg1
is_defarg1
isDouble
is_double
isDwrd
is_dword
isEnabled
is_mapped
isEnum
is_enum
isEnum0
is_enum0
isEnum1
is_enum1
isFloat
is_float
isFloat0
is_float0
isFloat1
is_float1
isFlow
is_flow
isFltnum
is_fltnum
isFop
is_manual
isFunc
is_func
isHead
is_head
isImmd
has_immd
isLoaded
is_loaded
isNotTail
is_not_tail
isNum
is_numop
isNum0
is_numop0
isNum1
is_numop1
isOff
is_off
isOff0
is_off0
isOff1
is_off1
isOwrd
is_oword
isPackReal
is_pack_real
isQwrd
is_qword
isSeg
is_seg
isSeg0
is_seg0
isSeg1
is_seg1
isStkvar
is_stkvar
isStkvar0
is_stkvar0
isStkvar1
is_stkvar1
isStroff
is_stroff
isStroff0
is_stroff0
isStroff1
is_stroff1
isStruct
is_struct
isTail
is_tail
isTbyt
is_tbyte
isUnknown
is_unknown
isVoid
is_suspop
isWord
is_word
isYwrd
is_yword
isZwrd
is_zword
make_ascii_string
create_strlit
nextaddr
next_addr
nextchunk
next_chunk
nextthat
next_that
noType
clr_op_type
numflag
num_flag
octflag
oct_flag
offflag
off_flag
op_stroff
converted input 'ea_t' argument to 'const insn_t &'
owrdflag
oword_flag
packrealflag
packreal_flag
patch_many_bytes
patch_bytes
prevaddr
prev_addr
prevchunk
prev_chunk
prevthat
prev_that
print_ascii_string_type
print_strlit_type
q
*
return type changed from 'char *' to 'bool'; added 'out_tooltip' and 'flags' arguments
put_many_bytes
put_bytes
qwrdflag
qword_flag
register_custom_data_format
removed 'dtid' argument
segflag
seg_flag
set_opinfo
added 'suppress_events' argument
stkvarflag
stkvar_flag
stroffflag
stroff_flag
struflag
stru_flag
tbytflag
tbyte_flag
unregister_custom_data_format
removed 'dtid' argument
wordflag
word_flag
ywrdflag
yword_flag
zwrdflag
zword_flag
compress.hpp
process_zipfile64
process_zipfile
process_zipfile_entry64
process_zipfile_entry
config.hpp (NEW file)
cfg_get_cc_header_path
moved from idp.hpp
cfg_get_cc_parm
moved from idp.hpp
cfg_get_cc_predefined_macros
moved from idp.hpp
cfgopt_t__apply
moved from idp.hpp
parse_config_value
moved from idp.hpp
read_config
moved from idp.hpp
read_config_file
moved from idp.hpp
read_config_string
moved from idp.hpp
dbg.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
get_process_info
<removed>
use 'get_processes' instead
get_process_qty
<removed>
use 'get_processes' instead
getn_process
<removed>
use 'get_processes' instead
<added>
bpt_t::get_cnd_elang_idx
<added>
get_ip_val
<added>
get_sp_val
bpt_location_t::print
*
choose_trace_file
*
create_source_viewer
argument type: 'TWinControl' and 'TCustomControl' changed to 'TWidget'; added 'out_ccv' argument
get_dbg_byte
*
get_trace_file_desc
q
*
internal_get_sreg_base
*
load_trace_file
q
*
source_file_t::open_srcview
argument type: 'TCustomControl' changed to 'TWidget'
source_item_t::get_hint
q
source_item_t::get_kind
source_item_t::get_item_kind
diskio.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] return type changed from '[u]int32' to '[u]int64'/'qoff64_t'
[4] input argument changed from '[u]int32' to '[u]int64'/'qoff64_t'
create_generic_linput
<removed>
echsize64
<removed>
ecreateT
<removed>
eseek64
<removed>
free_ioports
<removed>
qfsize64
<removed>
qlgetz64
<removed>
qlseek64
<removed>
qlsize64
<removed>
qltell64
<removed>
choose_ioport_device
q
*
echsize
*
eseek
*
find_ioport
input argument converted to 'const ioports_t &'
find_ioport_bit
input argument converted to 'const ioports_t &'
get_special_folder
*
getdspace
get_free_disk_space
qfsize
*
qlgetz
*
qlseek
*
*
qlsize
*
qltell
*
read_ioports
return type changed from 'ioport_t *' to 'ssize_t'; output argument converted 'ioports_t'
entry.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] added 'flags' argument
add_entry
*
get_entry_forwarder
q
*
get_entry_name
q
*
rename_entry
*
set_entry_forwarder
*
enum.hpp
NOTE: global variable 'enums' has been removed.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
add_selected_enum
<removed>
get_bmask_node
<removed>
get_selected_enum
<removed>
init_enums
<removed>
save_enums
<removed>
set_enum_flag
<removed>
term_enums
<removed>
unmark_selected_enums
<removed>
get_bmask_cmt
q
*
get_enum_cmt
q
*
get_enum_member_cmt
q
*
get_first_serial_enum_member
*
get_last_serial_enum_member
*
get_next_serial_enum_member
*
get_prev_serial_enum_member
*
err.h
qstrerror
buf argument removed; returns string in static buffer (thread-safe)
expr.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] input argument changed from pointer to reference
ExecuteFile
<removed>
use 'exec_idc_script' instead
ExecuteLine, execute
<removed>
use 'eval_idc_snippet' instead
call_idc_method
<removed>
call_script_method
<removed>
use 'extlang_t::call_method' instead
compile_script_file
<removed>
use 'extlang_t::compile_file' instead
compile_script_func
<removed>
use 'extlang_t::compile_expr' instead
create_idc_object
<removed>
create_script_object
<removed>
use 'extlang_t::create_object' instead
extlang_call_method_exists
<removed>
'extlang_t::call_method' should always exist
extlang_compile_file
<removed>
use 'extlang_t::compile_file' instead
extlang_compile_file_exists
<removed>
'extlang_t::compile_file' should always exist
extlang_create_object_exists
<removed>
'extlang_t::create_object' should always exist
extlang_get_attr_exists
<removed>
'extlang_t::get_attr' should always exist
extlang_run_statements_exists
<removed>
replaced by 'extlang_t::eval_statements', which should always exist
extlang_set_attr_exists
<removed>
'extlang_t::set_attr' should always exist
extlang_unload_procmod
<removed>
use 'extlang_t::unload_procmod' instead
get_extlang_fileext
<removed>
use 'extlang_t::fileext' instead
get_extlangs
<removed>
use 'for_all_extlangs' instead
get_idc_func_body
<removed>
get_script_attr
<removed>
use 'extlang_t::get_attr' instead
run_script_func
<removed>
use 'extlang_t::call_func' instead
run_statements
<removed>
use 'extlang_t::eval_statements' instead
set_idc_func_body
<removed>
set_idc_func_ex
<removed>
use 'add_idc_func'/'del_idc_func' instead
set_script_attr
<removed>
use 'extlang_t::set_attr' instead
<added>
add_idc_func
to be used instead of 'set_idc_func_ex'
<added>
compile_idc_snippet
<added>
del_idc_func
to be used instead of 'set_idc_func_ex'
<added>
eval_idc_snippet
<added>
find_extlang_by_index
<added>
find_idc_func
<added>
for_all_extlangs
<added>
get_extlang
always returns non-NULL
Compile, CompileEx
compile_idc_file
q
*
CompileLine, CompileLineEx
compile_idc_text
*
added 'resolver' argument
Run
call_idc_func
*
*
swapped 'argsnum' and 'args'; argument type: 'int' changed to 'size_t'; added 'resolver' argument
VarAssign
copy_idcv
*
VarCopy
deep_copy_idcv
*
VarDelAttr
del_idcv_attr
VarDeref
deref_idcv
VarFirstAttr
first_idcv_attr
VarFloat
idcv_float
VarFree
free_idcv
VarGetAttr
get_idcv_attr
*
VarGetClassName
get_idcv_class_name
q
VarGetSlice
get_idcv_slice
*
VarInt64
idcv_int64
VarLastAttr
last_idcv_attr
VarLong
idcv_long
VarMove
move_idcv
VarNextAttr
next_idcv_attr
VarNum
idcv_num
VarObject
idcv_object
VarPrevAttr
prev_idcv_attr
VarPrint
print_idcv
*
VarRef
create_idcv_ref
VarSetAttr
set_idcv_attr
*
VarSetSlice
set_idcv_slice
*
VarString2
idcv_string
VarSwap
swap_idcvs
calc_idc_expr
eval_idc_expr
*
*
calcexpr
eval_expr
*
*
calcexpr_long
eval_expr_long
*
*
dosysfile
exec_system_script
argument order has swapped
find_extlang_by_ext
return type changed from 'const extlang_t *' to 'extlang_object_t'
find_extlang_by_name
return type changed from 'const extlang_t *' to 'extlang_object_t'
install_extlang
removed const from 'el' argument; return type changed from 'bool' to 'ssize_t'
remove_extlang
removed const from 'el' argument
select_extlang
removed const from 'el' argument
fixup.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] input argument changed from pointer to reference
get_fixup_base
<removed>
use 'fd.get_base()' instead
get_fixup_extdef_ea
<removed>
use 'fd.get_base() + fd.off' instead
get_fixup_segdef_sel
<removed>
use 'fd.sel' instead
set_custom_fixup
<removed>
use 'set_fixup' instead
set_custom_fixup_ex
<removed>
use 'set_fixup' instead
set_fixup_ex
<removed>
<added>
calc_fixup_size
<added>
exists_fixup
<added>
find_custom_fixup
to be used instead of 'create_custom_fixup' (from idp.hpp)
<added>
get_fixup_handler
<added>
get_fixup_value
<added>
get_fixups
<added>
is_fixup_custom
<added>
patch_fixup_value
get_fixup
*
get_fixup_desc
q
*
*
return type changed from 'char *' to 'const char *'
register_custom_fixup
input argument changed from 'const fixup_handler_t *' to 'const custom_fixup_handler_t *'; return type changed from 'int' to 'fixup_type_t'
set_fixup
*
unregister_custom_fixup
input argument changed from 'int' to 'fixup_type_t'
fpro.h
[1] input argument changed from 'int32' to 'qoff64_t'
[2] return type changed from 'int32' to 'qoff64_t'
<added>
qaccess
<added>
qgetline
qcopyfile64
qcopyfile
qfseek64
qfseek
*
qftell64
qftell
*
frame.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] input argument 'func_t *pfn' made const
add_auto_stkpnt2
add_auto_stkpnt
add_stkvar2
define_stkvar
add_stkvar3
add_stkvar
added 'const insn_t &' input argument
build_stkvar_name
q
*
*
return type changed from 'char *' to 'ssize_t'
calc_stkvar_struc_offset
converted input 'ea_t' argument to 'const insn_t &'
frame_off_args
*
frame_off_lvars
*
frame_off_retaddr
*
frame_off_savregs
*
get_frame_part
*
*
argument type: 'area_t' changed to 'range_t'
get_frame_retsize
*
get_frame_size
*
get_stkvar
*
added 'const insn_t &' input argument
is_funcarg_off
*
lvar_off
*
funcs.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
a2funcoff
<removed>
apply_idasgn
<removed>
clear_func_struct
<removed>
del_func_cmt
<removed>
use 'set_func_cmt("")' instead
std_gen_func_header
<removed>
use 'outctx_base_t::gen_func_header' instead
<added>
is_same_func
<added>
lock_func_range
<added>
reanalyze_noret_flag
add_func
second 'ea_t' argument made optional
add_regarg2
add_regarg
find_func_bounds
*
removed 'ea' argument
func_item_iterator_t::decode_preceding_insn
added 'insn_t *' output argument
func_item_iterator_t::decode_prev_insn
added 'insn_t *' output argument
func_setend
set_func_end
func_setstart
set_func_start
get_func_bits
input argument 'func_t *' made const
get_func_bytes
input argument 'func_t *' made const
get_func_cmt
q
*
return type changed from 'char *' to 'ssize_t'
get_func_limits
get_func_ranges
*
output argument converted from 'area_t *' to 'rangeset_t *'; return type changed from 'bool' to 'ea_t'
get_func_name2
get_func_name
get_idasgn_desc
q
*
get_idasgn_title
q
*
return type changed from 'char *' to 'ssize_t'
set_func_cmt
input argument 'func_t *' made const
gdl.hpp
create_multirange_qflow_chart
argument type: 'areavec_t' has been renamed to 'rangevec_t'
graph.hpp
[1] input argument changed from 'TCustomControl *' to 'graph_viewer_t *'
set_graph_dispatcher
<removed>
use 'hook_to_notification_point(HT_GRAPH, [...])' instead
viewer_add_menu_item
<removed>
use 'viewer_attach_menu_item' instead
viewer_del_menu_item
<removed>
<added>
viewer_get_gli
clr_node_info2
clr_node_info
create_disasm_graph
argument type: 'areavec_t' has been renamed to 'rangevec_t'
create_graph_viewer
added 'title' argument; 'parent' argument made optional and reordered
del_node_info2
del_node_info
get_graph_viewer
input argument changed from 'TForm *' to 'TWidget *'
get_node_info2
get_node_info
get_viewer_graph
*
grentry
'grentry' has been converted from a global variable to an inline function
refresh_viewer
*
set_node_info2
set_node_info
viewer_center_on
*
viewer_create_groups
*
viewer_del_node_info
*
viewer_delete_groups
*
viewer_fit_window
*
viewer_get_curnode
*
viewer_get_node_info
*
viewer_set_gli
*
added 'flags' argument
viewer_set_groups_visibility
*
viewer_set_node_info
*
help.h
askyn
ask_yn
askyn_v
vask_yn
ida.hpp
ansi2idb
<removed>
dto_copy_from_inf
<removed>
dto_copy_to_inf
<removed>
dto_init
<removed>
idb2scr
<removed>
scr2idb
<removed>
showAllComments
show_all_comments
showComments
show_comments
showRepeatable class="table table-sm"s
show_repeatable class="table table-sm"s
toEA
to_ea
idd.hpp
[1] output argument moved to beginning of argument list
dbg_appcall
*
swapped 'argnum' and 'argv'; argument type: 'int' changed to 'size_t'
idp.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
get_reg_info2
get_reg_info
get_reg_name
q
*
invoke_callbacks
moved from loader.hpp
hook_to_notification_point
moved from loader.hpp
unhook_from_notification_point
moved from loader.hpp
set_processor_type
return type changed from 'char' to 'bool'; argument type: 'int' changed to 'setproc_level_t'
parse_reg_name
*
cfg_get_cc_header_path
moved to config.hpp
cfg_get_cc_parm
moved to config.hpp
cfg_get_cc_predefined_macros
moved to config.hpp
cfgopt_t__apply
moved to config.hpp
parse_config_value
moved to config.hpp
read_config
moved to config.hpp
read_config_file
moved to config.hpp
read_config_string
moved to config.hpp
InstrIsSet
has_insn_feature
str2regf
<removed>
create_custom_fixup
<removed>
gen_spcdef
<removed>
use 'outctx_t::out_specea' instead
gen_abssym
<removed>
use 'outctx_t::out_specea' instead
gen_comvar
<removed>
use 'outctx_t::out_specea' instead
gen_extern
<removed>
use 'outctx_t::out_specea' instead
intel_data
<removed>
use 'outctx_t::out_data' instead
is_basic_block_end
added 'const insn_t &' input argument
is_call_insn
converted input 'ea_t' argument to 'const insn_t &'
is_indirect_jump_insn
converted input 'ea_t' argument to 'const insn_t &'
is_ret_insn
converted input 'ea_t' argument to 'const insn_t &'
ieee.h
[1] output argument moved to beginning of argument list
eetol
*
eetol64
*
eetol64u
*
realtoasc
*
ints.hpp (REMOVED)
get_predef_cmt
<removed>
get_vxd_func_name
<removed>
get_predef_insn_cmt
moved to bytes.hpp
kernwin.hpp
NOTE: Please note that in IDA version 6.7 we introduced the Actions API, which deprecated many functions related to augmenting functionality in IDA.
Those previously deprecated functions have been removed. For more details about the Actions API, please visit our old blog post from 2014:
NOTE: 'TForm', 'TCustomControl', and 'TWinControl' have been replaced by 'TWidget'
NOTE: global variable 'dirty_infos' has been removed.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] input argument changed from pointer to reference
[4] return type changed from 'TForm *' to 'TWidget *'
[5] input argument changed from 'TCustomControl *' to 'TWidget *'
askfile_c
<removed>
askfile_cv
<removed>
askstr
<removed>
close_form
<removed>
use 'form_actions_t::close' instead
close_tform
<removed>
use 'close_widget' instead
create_tform
<removed>
use 'find_widget' or 'create_empty_widget' instead
enable_menu_item
<removed>
superseded by the Actions API (see blog post above)
entab
<removed>
find_tform
<removed>
use 'find_widget' instead
get_current_tform
<removed>
use 'get_current_widget' instead
get_highlighted_identifier
<removed>
use 'get_current_viewer' and 'get_highlight' instead
get_tform_idaview
<removed>
use the 'TWidget *' directly instead of obtaining the IDAView
get_tform_title
<removed>
use 'get_widget_title' instead
get_tform_type
<removed>
use 'get_widget_type' instead
get_viewer_name
<removed>
use 'get_widget_title' instead
init_kernel
<removed>
is_chooser_tform
<removed>
use 'is_chooser_widget' instead
print_disp
<removed>
use 'append_disp' instead
set_menu_item_icon
<removed>
superseded by the Actions API (see blog post above)
switchto_tform
<removed>
use 'activate_widget' instead
term_kernel
<removed>
umsg
<removed>
vaskstr
<removed>
vumsg
<removed>
<added>
activate_widget
<added>
append_disp
<added>
close_widget
<added>
create_empty_widget
<added>
find_widget
<added>
get_current_widget
<added>
get_highlight
<added>
get_widget_title
<added>
get_widget_type
<added>
is_buttoncb_t_type
<added>
is_chooser_widget
<added>
is_formchgcb_t_type
<added>
qcleanline
<added>
set_highlight
<added>
unpack_ds_to_buf
AskUsingForm_c
ask_form
AskUsingForm_cv
vask_form
OpenForm_c
open_form
*
OpenForm_cv
vopen_form
*
askaddr
ask_addr
askbuttons_c
ask_buttons
askbuttons_cv
vask_buttons
askfile2_c
ask_file
'filters' argument merged into 'format'
askfile2_cv
vask_file
'filters' argument merged into 'format'
askident
ask_ident
*
return type changed from 'char *' to 'bool'
asklong
ask_long
askqstr
ask_str
added 'hist' argument
askseg
ask_seg
asktext
ask_text
q
*
return type changed from 'char *' to 'bool'
askyn_c
ask_yn
askyn_cv
vask_yn
atob32
*
atob64
*
atoea
*
atos
*
attach_action_to_popup
input argument changed from 'TForm *' to 'TWidget *'
attach_dynamic_action_to_popup
*
input argument changed from 'TForm *' to 'TWidget *'
b2a32
*
b2a64
*
back_char
moved to pro.h
choose, choose2, choose3
choose
choosers should use the new 'chooser_base_t' interface
choose_srcp
return type changed from 'segreg_area_t *' to 'sreg_range_t *'
choose_til
*
clearBreak
clr_cancelled
clear_refresh_request
to be used instead of 'dirty_infos'
create_code_viewer
return type changed from 'TCustomControl *' to 'TWidget *'; 'parent' argument made optional and reordered
create_custom_viewer
return type changed from 'TCustomControl *' to 'TWidget *'; 'parent' argument made optional and reordered
custom_viewer_jump
*
destroy_custom_viewer
*
detach_action_from_popup
input argument changed from 'TForm *' to 'TWidget *'
ea2str
*
ea_viewer_history_push_and_jump
*
gen_disasm_text
*
get_8bit
*
get_action_label
*
get_action_shortcut
*
get_action_tooltip
*
get_chooser_data
argument type: 'uint32' changed to 'int'
get_current_viewer
return type changed from 'TCustomControl *' to 'TWidget *'
get_custom_viewer_curline
*
get_custom_viewer_place
*
get_ea_viewer_history_info
*
get_kernel_version
return type changed from 'bool' to 'ssize_t'
get_output_curline
*
get_output_selected_text
*
get_view_renderer_type
*
get_viewer_place_type
*
get_viewer_user_data
*
is_idaview
*
is_refresh_requested
to be used instead of 'dirty_infos'
jumpto
*
linearray_t::down
return type changed from 'char *' to 'const qstring *'
linearray_t::up
return type changed from 'char *' to 'const qstring *'
open_bpts_window
*
open_bpts_window
*
open_calls_window
*
open_disasm_window
*
input argument changed from 'const areavec_t *' to 'const rangevec_t *'
open_enums_window
*
open_exports_window
*
open_frame_window
*
open_funcs_window
*
open_hexdump_window
*
open_imports_window
*
open_loctypes_window
*
open_modules_window
*
open_names_window
*
open_navband_window
*
open_notepad_window
*
open_problems_window
*
open_segments_window
*
open_segregs_window
*
open_selectors_window
*
open_signatures_window
*
open_stack_window
*
open_strings_window
*
open_structs_window
*
open_tform
display_widget
input argument changed from 'TForm *' to 'TWidget *'
open_threads_window
*
open_tils_window
*
open_trace_window
*
open_xrefs_window
*
qstr2user
moved to pro.h
r50_to_asc
*
read_range_selection
read_selection
*
WARNING: 'read_selection' has changed meaning
read_selection
read_range_selection
WARNING: 'read_selection' has changed meaning; added 'TWidget *' argument
refresh_custom_viewer
*
repaint_custom_viewer
*
request_refresh
added 'cnd' argument
setBreak
set_cancelled
set_code_viewer_handler
*
set_code_viewer_is_source
*
set_code_viewer_line_handlers
*
set_code_viewer_lines_alignment
*
set_code_viewer_lines_icon_margin
*
set_code_viewer_lines_radix
*
set_code_viewer_user_data
*
set_custom_viewer_handler
*
set_custom_viewer_handlers
*
set_custom_viewer_qt_aware
*
set_custom_viewer_range
*
set_view_renderer_type
*
show_hex_file
argument type: 'int32' changed to 'int64'
skipSpaces
skip_spaces
stoa
q
*
str2ea
*
str2ea_ex
*
str2user
moved to pro.h
ui_load_new_file
added 'temp_file' and 'ploaders'; input argument 'filename' changed from 'const char *' to 'qstring *'
user2qstr
moved to pro.h
user2str
moved to pro.h
vaskqstr
vask_str
added 'hist' argument
vasktext
vask_text
q
*
return type changed from 'char *' to 'bool'
vshow_hex_file
argument type: 'int32' changed to 'int64'
wasBreak
user_cancelled
lex.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
lex_define
lex_define_macro
lex_undef
lex_undefine_macro
lxascii
lex_print_token
q
*
lxget
lex_get_token
lxgetserr
lex_get_file_line
lxgetsini
lex_init_file
lxgetstrm
lex_term_file
lxini
lex_init_string
lines.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] return type changed from 'void' to 'bool'
MakeBorder
<removed>
use 'outctx_base_t::gen_border_line(false)' instead
MakeLine
<removed>
use 'outctx_base_t::flush_buf' instead
MakeNull
<removed>
use 'outctx_base_t::gen_empty_line' instead
MakeSolidBorder
<removed>
use 'outctx_base_t::gen_border_line(true)' instead
add_long_cmt_v
<removed>
use 'vadd_extra_line' instead
close_comment
<removed>
use 'outctx_base_t::close_comment' instead
describex
<removed>
use 'vadd_extra_line' instead
finish_makeline
<removed>
use 'outctx_base_t::term_outctx' instead
gen_cmt_line
<removed>
use 'outctx_base_t::gen_cmt_line' instead
gen_cmt_line_v
<removed>
use 'outctx_base_t::gen_cmt_line_v' instead
gen_collapsed_line
<removed>
use 'outctx_base_t::gen_collapsed_line' instead
gen_colored_cmt_line_v
<removed>
use 'outctx_base_t::gen_colored_cmt_line_v' instead
generate_big_comment
<removed>
use 'outctx_base_t::gen_block_cmt' instead
generate_many_lines
<removed>
use 'outctx_base_t::gen_many_lines(-1, NULL, [...])' instead
init_lines
<removed>
init_lines_array
<removed>
use 'outctx_base_t::init_lines_array' instead
printf_line
<removed>
use 'outctx_base_t::gen_printf' instead
printf_line_v
<removed>
use 'outctx_base_t::gen_vprintf' instead
save_line_in_array
<removed>
use 'outctx_base_t::save_buf' instead
save_lines
<removed>
save_sourcefiles
<removed>
setup_makeline
<removed>
use 'outctx_base_t::setup_outctx' instead
tag_addchr
<removed>
tag_addstr
<removed>
tag_off
<removed>
tag_on
<removed>
<added>
get_last_pfxlen
<added>
vadd_extra_line
add_long_cmt
add_extra_cmt
add_pgm_cmt
*
describe
add_extra_line
*
generate_disasm_line
q
*
generate_disassembly
q
*
output argument is 'qstrvec_t'
get_extra_cmt
q
*
get_sourcefile
argument type: 'area_t *' changed to 'range_t *'
tag_addr
q
*
return type changed from 'char *' to 'void'; added 'ins' argument
tag_remove
q
*
added 'init_level' argument
llong.hpp
[1] output argument moved to beginning of argument list
[2] output argument changed from reference to pointer
<removed>
llong_div
*
*
llong_udiv
*
*
loader.hpp
NOTE: global variables 'database_flags', 'command_line_file', 'idb_path', and 'id0_path' have been removed.
NOTE: class 'loader_jump' has been renamed to 'loader_failure_t'
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] input argument changed from 'int32' to 'qoff64_t'
[3] return type changed from 'int32' to 'qoff64_t'
enum_plugins
<removed>
init_loader_options
<removed>
<added>
find_plugin
<added>
process_archive
accept_file
q
*
added 'processor' output argument (optional)
base2file
*
build_loaders_list
added 'filename' argument (name of the input file for archives)
clr_database_flag
to be used instead of 'database_flags'
extract_module_from_archive
*
file2base
*
get_fileregion_ea
*
get_fileregion_offset
*
get_path
to be used instead of 'idb_path'
hook_to_notification_point
moved to idp.hpp
invoke_callbacks
moved to idp.hpp
is_database_flag
to be used instead of 'database_flags'
load_and_run_plugin
argument type: 'int' changed to 'size_t'
load_binary_file
*
argument type: 'uint32' changed to 'uint64'
load_dll_or_say
load_core_module
*
added 'entry' argument (name of plugin 'entrypoint' symbol)
mem2base
*
run_plugin
argument type: 'int' changed to 'size_t'
save_database_ex
save_database
set_database_flag
to be used instead of 'database_flags'
set_path
to be used instead of 'idb_path'
unhook_from_notification_point
moved to idp.hpp
moves.hpp
NOTE: 'curloc_t' and 'location_t' have been replaced by 'lochist_t'.
curloc_get
<removed>
curloc_get_entry
<removed>
curloc_hide_if_necessary
<removed>
curloc_jump
<removed>
curloc_jump_push
<removed>
curloc_linkTo
<removed>
curloc_mark
<removed>
curloc_markdesc
<removed>
curloc_markedpos
<removed>
curloc_pop
<removed>
curloc_unhide_if_necessary
<removed>
location_get
<removed>
location_get_entry
<removed>
location_jump
<removed>
location_linkTo
<removed>
location_mark
<removed>
location_pop
<removed>
location_push_and_jump
<removed>
<added>
graph_location_info_t::deserialize
<added>
graph_location_info_t::serialize
<added>
renderer_info_pos_t::deserialize
<added>
renderer_info_pos_t::serialize
nalt.hpp
NOTE: global variable 'import_node' has been removed.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
_del_item_color
<removed>
_del_strid
<removed>
_set_item_color
<removed>
_set_item_color
<removed>
_set_strid
<removed>
del__segtrans
<removed>
del_enum_id0
<removed>
del_enum_id1
<removed>
del_fop1
<removed>
del_fop2
<removed>
del_fop3
<removed>
del_fop4
<removed>
del_fop5
<removed>
del_fop6
<removed>
del_graph_groups0
<removed>
del_jumptable class="table table-sm"_info
<removed>
del_linnum0
<removed>
del_manual_insn0
<removed>
del_nalt_cmt
<removed>
del_nalt_rptcmt
<removed>
del_stroff0
<removed>
del_stroff1
<removed>
del_wide_value
<removed>
get__segtrans
<removed>
get_auto_plugins
<removed>
get_custom_refinfos
<removed>
use 'get_refinfo_descs' instead
get_enum_id0
<removed>
get_enum_id1
<removed>
get_fop1
<removed>
get_fop2
<removed>
get_fop3
<removed>
get_fop4
<removed>
get_fop5
<removed>
get_fop6
<removed>
get_graph_groups0
<removed>
get_jumptable class="table table-sm"_info
<removed>
get_linnum0
<removed>
get_manual_insn0
<removed>
get_nalt_cmt
<removed>
get_nalt_rptcmt
<removed>
get_stroff0
<removed>
get_stroff1
<removed>
get_wide_value
<removed>
is_unicode
<removed>
use 'get_strtype_bpu' instead
set__segtrans
<removed>
set_auto_plugins
<removed>
set_enum_id0
<removed>
set_enum_id1
<removed>
set_fop1
<removed>
set_fop2
<removed>
set_fop3
<removed>
set_fop4
<removed>
set_fop5
<removed>
set_fop6
<removed>
set_graph_groups0
<removed>
set_jumptable class="table table-sm"_info
<removed>
set_linnum0
<removed>
set_manual_insn0
<removed>
set_nalt_cmt
<removed>
set_nalt_rptcmt
<removed>
set_stroff0
<removed>
set_stroff1
<removed>
set_wide_value
<removed>
<added>
clr_notproc
<added>
delete_imports
to be used instead of 'auto_display'
<added>
ea2node
<added>
find_custom_refinfo
<added>
get_abi_name
<added>
get_archive_path
<added>
get_custom_refinfo
<added>
get_custom_refinfo_handler
<added>
get_encoding_bpu
<added>
get_gotea
<added>
get_refinfo_descs
<added>
get_strtype_bpu
<added>
getnode
<added>
is_notproc
<added>
is_reftype_target_optional
<added>
node2ea
<added>
set_archive_path
<added>
set_gotea
<added>
set_notproc
change_encoding_name
rename_encoding
del_switch_info_ex
del_switch_info
del_tinfo2
del_tinfo
del_tinfo2(,n)
del_op_tinfo
get_array_parameters
*
removed 'bufsize' argument
get_asm_inc_file
*
get_custom_data_type_ids
*
removed 'bufsize' argument
get_default_encoding_idx
argument type: 'int32' changed to 'int'
get_encodings_count
get_encoding_qty
get_import_module_name
q
*
get_op_tinfo2
get_op_tinfo
*
get_refinfo
*
get_str_type_code
return type changed from 'char' to 'uchar'; argument type: 'uval_t' changed to 'int32'
get_strid
return type changed from 'ea_t' to 'tid_t'
get_switch_info_ex
get_switch_info
*
removed 'bufsize' argument
get_tinfo2
get_tinfo
*
get_xrefpos
*
removed 'bufsize' argument
read_struc_path
*
argument type: 'netnode' changed to 'ea_t'
set_default_encoding_idx
argument type: 'int32' changed to 'int'
set_op_tinfo2
set_op_tinfo
set_switch_info_ex
set_switch_info
input argument changed from 'const switch_info_ex_t *' to 'const switch_info_t &'
set_tinfo2
set_tinfo
write_struc_path
argument type: 'netnode' changed to 'ea_t'
name.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] output argument changed from reference to pointer
gen_name_decl
<removed>
use 'outctx_base_t::gen_name_decl' instead
<added>
is_strlit_cp
<added>
is_valid_cp
<added>
set_cp_validity
append_struct_fields2
append_struct_fields
*
demangle_name2
demangle_name
do_name_anyway
force_name
removed 'maxlen' argument
extract_name2
extract_name
get_debug_name2
get_debug_name
get_debug_names
*
*
get_ea_name
removed const from 'gtni' argument
get_name_expr
q
*
get_name_value
*
get_nice_colored_name
q
*
get_struct_operand
*
get_true_name
get_name
is_ident_char
is_ident_cp
is_visible_char
is_visible_cp
isident
is_ident
validate_name3
validate_name
added 'type' and 'flags' arguments
netnode.hpp
<added>
netnode::altdel_ea
to be used instead of 'netnode::altdel' for addresses (ea_t)
<added>
netnode::altset_ea
to be used instead of 'netnode::altset' for addresses (ea_t)
<added>
netnode::altval_ea
to be used instead of 'netnode::altval' for addresses (ea_t)
<added>
netnode::blobsize_ea
to be used instead of 'netnode::blobsize' for addresses (ea_t)
<added>
netnode::chardel_ea
to be used instead of 'netnode::chardel' for addresses (ea_t)
<added>
netnode::charset_ea
to be used instead of 'netnode::charset' for addresses (ea_t)
<added>
netnode::charval_ea
to be used instead of 'netnode::charval' for addresses (ea_t)
<added>
netnode::delblob_ea
to be used instead of 'netnode::delblob' for addresses (ea_t)
<added>
netnode::eadel
<added>
netnode::eadel_idx8
<added>
netnode::eaget
<added>
netnode::eaget_idx8
<added>
netnode::easet
<added>
netnode::easet_idx8
<added>
netnode::getblob_ea
to be used instead of 'netnode::getblob' for addresses (ea_t)
<added>
netnode::setblob_ea
to be used instead of 'netnode::setblob' for addresses (ea_t)
<added>
netnode::supdel_ea
to be used instead of 'netnode::supdel' for addresses (ea_t)
<added>
netnode::supset_ea
to be used instead of 'netnode::supset' for addresses (ea_t)
<added>
netnode::supstr_ea
to be used instead of 'netnode::supstr' for addresses (ea_t)
<added>
netnode::supval_ea
to be used instead of 'netnode::supval' for addresses (ea_t)
netnode::alt1st
netnode::altfirst
netnode::alt1st_idx8
netnode::altfirst_idx8
netnode::altnxt
netnode::altnext
netnode::char1st
netnode::charfirst
netnode::char1st_idx8
netnode::charfirst_idx8
netnode::charnxt
netnode::charnext
netnode::getblob
added variants that work with 'qvector<T> *' and 'qstring *'
netnode::hash1st
netnode::hashfirst
added variant that works with 'qstring *'
netnode::hashlast
added variant that works with 'qstring *'
netnode::hashnxt
netnode::hashnext
added variant that works with 'qstring *'
netnode::hashprev
added variant that works with 'qstring *'
netnode::hashstr
added variant that works with 'qstring *'
netnode::sup1st
netnode::supfirst
netnode::sup1st_idx8
netnode::supfirst_idx8
netnode::supnxt
netnode::supnext
netnode::supstr
added variant that works with 'qstring *'
netnode::valstr
added variant that works with 'qstring *'
offset.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] input argument 'refinfo_t &' made const
calc_reference_basevalue
<removed>
use 'calc_reference_data' instead
calc_reference_target
<removed>
use 'calc_reference_data' instead
set_offset
<removed>
use 'calc_offset_base' and 'op_plain_offset' instead
<added>
add_refinfo_dref
<added>
calc_basevalue
<added>
calc_offset_base
<added>
calc_reference_data
<added>
op_plain_offset
get_offset_expr
q
*
*
get_offset_expression
q
*
problems.h (RENAMED from queue.hpp)
NOTE: 'qtype_t' has been changed to 'problist_id_t'.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
QueueGet
<removed>
get_long_queue_name
<removed>
Use 'get_problem_name(type, true);' instead
get_short_queue_name
<removed>
Use 'get_problem_name(type, false);' instead
mark_ida_decision
<removed>
unmark_ida_decision
<removed>
<added>
get_problem_name
QueueDel
forget_problem
return type changed from 'void' to 'bool'
QueueGetMessage
get_problem_desc
q
*
QueueGetType
get_problem
QueueIsPresent
is_problem_present
QueueSet
remember_problem
prodir.h
qfindclose64
qfindclose
qfindfirst64
qfindfirst
qfindnext64
qfindnext
pro.h
NOTE: global variables 'codepage' and 'oemcodepage' have been removed.
[1] output argument moved to beginning of argument list
c2ustr
<removed>
use 'utf8_utf16' instead
char2oem
<removed>
convert_codepage
<removed>
create_hit_counter
<removed>
expand_argv
<removed>
get_codepages
<removed>
hit_counter_timer
<removed>
oem2char
<removed>
reg_hit_counter
<removed>
u2cstr
<removed>
use 'utf16_utf8' instead
win_utf2idb
<removed>
<added>
acp_utf8
<added>
change_codepage
<added>
idb_utf8
<added>
is_valid_utf8
<added>
put_utf8_char
<added>
qchdir
<added>
qustrlen
<added>
scr_utf8
<added>
skip_utf8
<added>
utf8_scr
<added>
utf8_wchar16
<added>
utf8_wchar32
back_char
moved from kernwin.hpp
convert_encoding
*
return type changed from 'int' to 'ssize_t'
get_nsec_stamp
output argument changed from 'uint64 *' to the 'uint64' return value
parse_command_line3
parse_command_line
*
qchsize64
qchsize
qfileexist64
qfileexist
qfilesize64
qfilesize
qfstat64
qfstat
qseek64
qseek
qstat64
qstat
qstr2user
moved from kernwin.hpp; added 'nsyms' argument
qtell64
qtell
qwait
*
qwait_for_handles
*
qwait_timed
*
search_path
*
str2user
moved from kernwin.hpp
unicode_utf8
utf16_utf8
user2qstr
moved from kernwin.hpp
user2str
moved from kernwin.hpp
utf8_unicode
utf8_utf16
pronet.h
<added>
qhost2addr
range.h (RENAMED from area.hpp)
NOTE: some classes have been renamed: - 'area_t' has been renamed to 'range_t' - 'areavec_t' has been renamed to 'rangevec_t' - 'areaset_t' has been renamed to 'rangeset_t'
NOTE: the classes 'rangecb_t', 'ranges_cache_t', and 'lock_range' have been removed
registry.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
reg_read_strlist
*
reg_read_string
q
*
removed variant with default value
search.hpp
[1] output argument moved to beginning of argument list
user2bin
*
find_imm
argument type: 'sval_t' changed to 'uval_t'
find_void
find_suspop
segment.hpp
NOTE: global variables 'hidden_ranges', 'funcs', and 'segs' have been removed.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] added 'flags' argument
del_segment_cmt
<removed>
use 'set_range_cmt("")' instead
vset_segm_name
<removed>
<added>
get_segm_num
to be used instead of 'segs.get_range_num()'
<added>
lock_segm
to be used instead of 'rangecb_t_unlock_range(&segs)'
add_segm
*
ask_selector
sel2para
correct_address
added 'skip_check' argument
del_segment_translations
return type changed from 'bool' to 'void'
get_segm_class
q
*
get_segm_name
get_visible_segm_name
removed variant with 'ea_t' argument
get_segment_cmt
q
*
return type changed from 'char *' to 'ssize_t'; added 'repeatable class="table table-sm"' argument
get_segment_translations
return type changed from 'ea_t *' to 'ssize_t'; output argument converted 'eavec_t'
get_true_segm_name
get_segm_name
q
*
*
getn_selector
*
set_segm_class
*
set_segm_name
*
arguments converted from printf-style to simple 'const char *'
set_segment_cmt
input argument 'segment_t *' made const
set_segment_translations
input argument converted to 'const eavec_t &'
std_gen_segm_footer
std_out_segm_footer
converted to outctx_t; input argument changed to segment_t*
segregs.hpp (RENAMED from srarea.hpp)
NOTE: type 'segreg_area_t' has been renamed to 'sreg_range_t'
copy_srareas
copy_sreg_ranges
del_srarea
del_sreg_range
WARNING: argument order has swapped
get_prev_srarea
get_prev_sreg_range
argument type: 'segreg_area_t' changed to 'sreg_range_t'
get_segreg
get_sreg
get_srarea2
get_sreg_range
argument type: 'segreg_area_t' changed to 'sreg_range_t'
get_srarea_num
get_sreg_range_num
WARNING: argument order has swapped
get_srareas_qty2
get_sreg_ranges_qty
getn_srarea2
getn_sreg_range
argument type: 'segreg_area_t' changed to 'sreg_range_t'
set_default_segreg_value
set_default_sreg_value
split_srarea
split_sreg_range
sistack.h (REMOVED)
sistack_t_size
<removed>
sistack_t_flush
<removed>
strlist.hpp
[1] output argument moved to beginning of argument list
refresh_strlist
<removed>
set_strlist_options
<removed>
<added>
build_strlist
<added>
clear_strlist
<added>
get_strlist_options
get_strlist_item
*
argument type: 'int' changed to 'size_t'
struct.hpp
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
get_member_by_fullname
*
get_member_cmt
q
*
get_member_name2
get_member_name
get_member_tinfo2
get_member_tinfo
*
get_or_guess_member_tinfo2
get_or_guess_member_tinfo
*
get_struc_cmt
q
*
retrieve_member_info
*
save_struc2
save_struc
set_member_tinfo2
set_member_tinfo
tryblks.hpp (NEW file)
<added>
add_tryblk
<added>
del_tryblks
<added>
get_tryblks
typeinf.hpp
NOTE: global variable 'idati' has been removed.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
based_ptr_name_and_size
<removed>
callregs_init_regs
<removed>
choose_local_type
<removed>
create_numbered_type_reference
<removed>
equal_types
<removed>
get_de
<removed>
get_default_enum_size
<removed>
get_func_cvtarg_map
<removed>
get_named_type_size
<removed>
get_referred_ordinal
<removed>
get_stkarg_offset
<removed>
get_unk_type_bit
<removed>
is_restype_array
<removed>
is_restype_bitfld
<removed>
is_restype_complex
<removed>
is_restype_const
<removed>
is_restype_floating
<removed>
is_restype_func
<removed>
is_restype_ptr
<removed>
is_restype_union
<removed>
max_ptr_size
<removed>
rename_named_type
<removed>
set_named_type
<removed>
use 'tinfo_t::set_named_type' instead
set_named_type64
<removed>
use 'tinfo_t::set_named_type' instead
<added>
append_abi_opts
<added>
gcc_layout
<added>
get_arg_addrs
<added>
get_idati
to be used instead of 'idati'
<added>
remove_abi_opts
<added>
resolve_typedef
<added>
set_compiler_string
add_til2
add_til
append_tinfo_covered
argument type: 'areaset_t' has been renamed to 'rangeset_t'
apply_callee_tinfo
return type changed from 'void' to 'bool'
apply_cdecl2
apply_cdecl
apply_tinfo2
apply_tinfo
apply_tinfo_to_stkarg
added 'insn' argument
build_anon_type_name
*
calc_c_cpp_name4
calc_c_cpp_name
calc_tinfo_gaps
argument type: 'areaset_t' has been renamed to 'rangeset_t'
choose_local_tinfo
added 'def_ord' argument
choose_named_type2
choose_named_type
*
the original 'choose_named_type' has been removed
create_numbered_type_name
q
*
return type changed from 'size_t' to 'ssize_t'
decorate_name3
decorate_name
added 'type' argument
del_tinfo_attr
added 'make_copy' argument
deref_ptr2
deref_ptr
*
extract_argloc
*
find_tinfo_udt_member
*
format_cdata2
format_cdata
gen_decorate_name3
gen_decorate_name
the original 'gen_decorate_name' has been removed; added 'type' argument
get_c_header_path
*
get_c_macros
*
get_enum_member_expr2
get_enum_member_expr
*
get_idainfo_by_type3
get_idainfo_by_type
*
get_int_type_bit
get_scalar_bt
get_tinfo_pdata
*
get_tinfo_size
*
guess_tinfo2
guess_tinfo
*
load_til2
load_til
*
the original 'load_til' has been removed; added 'tildir' argument
load_til_header
*
lower_type2
lower_type
optimize_argloc
argument type: 'areaset_t' has been renamed to 'rangeset_t'
parse_decl2
parse_decl
q
print_type3
print_type
remove_tinfo_pointer
*
save_tinfo
*
set_abi_name
added 'user_level' argument
set_compiler2
set_compiler
set_numbered_type
return type changed from 'bool' to 'tinfo_code_t'
verify_argloc
argument type: 'areaset_t' has been renamed to 'rangeset_t'
ua.hpp
WARNING: The global variables 'cmd' and 'uFlag' are gone.
All functions previously operating on 'cmd' now accept an 'insn_t' pointer or reference. Use get_flags() (or, if you really need it, get_full_flags()) to read the current flags.
NOTE: The maximum number of instruction operands (UA_MAXOP) has increased to 8.
NOTE: class 'outctx_base_t' has been added to replace functions that generate the disassembly text
NOTE: global variable 'lookback' has been removed.
[1] output argument moved to beginning of argument list
q: argument is a qstring
[2] output buffer converted to qstring
[3] added input/output 'insn_t &insn' argument
[4] added input 'const insn_t &insn' argument
[5] added output 'insn_t *out' argument
OutBadInstruction
<removed>
OutChar
<removed>
use 'outctx_base_t::out_char' instead
OutImmChar
<removed>
use 'outctx_base_t::out_immchar_cmts' instead
OutLine
<removed>
use 'outctx_base_t::out_line' instead
OutLong
<removed>
use 'outctx_base_t::out_btoa' instead
OutMnem
<removed>
use 'outctx_base_t::out_mnem' instead
OutValue
<removed>
use 'outctx_base_t::out_value' instead
get_output_ptr
<removed>
init_output_buffer
<removed>
out_addr_tag
<removed>
use 'outctx_base_t::out_addr_tag' instead
out_colored_register_line
<removed>
use 'outctx_base_t::out_colored_register_line' instead
out_insert
<removed>
use 'outctx_base_t::outbuf' directly instead
out_line
<removed>
use 'outctx_base_t::out_line' instead
out_long
<removed>
use 'outctx_base_t::out_long' instead
out_name_expr
<removed>
use 'outctx_base_t::out_name_expr' instead
out_one_operand
<removed>
use 'outctx_base_t::out_one_operand' instead
out_snprintf
<removed>
use 'outctx_base_t::out_printf' instead
out_symbol
<removed>
use 'outctx_base_t::out_symbol' instead
out_tagoff
<removed>
use 'outctx_base_t::out_tagoff' instead
out_tagon
<removed>
use 'outctx_base_t::out_tagon' instead
set_output_ptr
<removed>
term_output_buffer
<removed>
ua_dodata2
<removed>
use 'insn_t::create_op_data' instead
ua_next_byte
<removed>
use 'insn_t::get_next_byte' instead
ua_next_long
<removed>
use 'insn_t::get_next_dword' instead
ua_next_qword
<removed>
use 'insn_t::get_next_qword' instead
ua_next_word
<removed>
use 'insn_t::get_next_word' instead
<added>
can_decode
<added>
create_outctx
<added>
get_lookback
to be used instead of 'lookback'
<added>
map_ea
codeSeg
map_code_ea
*
input arguments changed to either 'const op_t &op' or 'ea_t addr, int opnum'
construct_macro
*
create_insn
*
dataSeg, dataSeg_op
map_data_ea
*
input arguments changed to either 'const op_t &op' or 'ea_t addr, int opnum'
dataSeg_opreg
calc_dataseg
*
decode_insn
*
decode_preceding_insn
*
decode_prev_insn
*
get_dtyp_by_size
get_dtype_by_size
return type changed from 'char' to 'op_dtype_t'
get_dtyp_flag
get_dtype_flag
argument type: 'char' changed to 'op_dtype_t'
get_dtyp_size
get_dtype_size
argument type: 'char' changed to 'op_dtype_t'
get_operand_immvals
get_immvals
*
added 'flags_t' and 'cache' arguments
get_spoiled_reg
*
guess_table class="table table-sm"_address
*
guess_table class="table table-sm"_size
*
out_real
print_fpval
*
showAsChar
print_charlit
*
ua_add_cref
<removed>
use 'insn_t::add_cref' instead
ua_add_dref
<removed>
use 'insn_t::add_dref' instead
ua_add_off_drefs2
<removed>
use 'insn_t::add_off_drefs' instead
ua_mnem
print_insn_mnem
q
*
ua_outop2
print_operand
q
*
added 'printop_t' argument
ua_stkvar2
<removed>
use 'insn_t::create_stkvar' instead
xref.hpp
[1] output argument moved to beginning of argument list
[2] input argument changed from pointer to reference
calc_switch_cases
*
*
create_switch_table class="table table-sm"
*
create_switch_xrefs
*
Last updated