arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

API 7.0 Porting Guide

clear IDA 7.0 SDK: Porting from IDA 4.9-6.x API to IDA 7.0 API

hashtag
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.

hashtag
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.

hashtag
Renamed/removed header files

Some headers have been renamed and/or removed:

original name
new name

hashtag
Commonly used renamed structs and fields

original name
new name

area-related methods have been renamed too (e.g. 'prev_area' -> 'prev_range').

hashtag
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.

hashtag
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.

hashtag
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:

original name
new name

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:

hashtag
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, ...)'.

original IDP event
new IDB notification

hashtag
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

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.

hashtag
Changes per file in the SDK

This section describes in detail the changes to the APIs for each file in the SDK.

hashtag
auto.hpp

NOTE: global variables 'auto_state', 'auto_display', and 'autoEnabled' have been removed.

  • [1] output argument moved to beginning of argument list

original name
new name
[1]
Notes

hashtag
bitrange.hpp

original name
Notes

hashtag
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

original name
new name
[1]
[2]
Notes

hashtag
compress.hpp

original name
new name

hashtag
config.hpp (NEW file)

original name
Notes

hashtag
dbg.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
Notes

hashtag
diskio.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
[4]
Notes

hashtag
entry.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
[1]
[2]
[3]

hashtag
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

original name
new name
[1]
[2]

hashtag
err.h

original name
Notes

hashtag
expr.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
Notes

hashtag
fixup.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
Notes

hashtag
fpro.h

  • [1] input argument changed from 'int32' to 'qoff64_t'

  • [2] return type changed from 'int32' to 'qoff64_t'

original name
new name

hashtag
frame.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
Notes

hashtag
funcs.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
Notes

hashtag
gdl.hpp

original name
Notes

hashtag
graph.hpp

  • [1] input argument changed from 'TCustomControl *' to 'graph_viewer_t *'

original name
new name
[1]
Notes

hashtag
help.h

original name
new name

hashtag
ida.hpp

original name
new name

hashtag
idd.hpp

  • [1] output argument moved to beginning of argument list

original name
[1]
Notes

hashtag
idp.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
Notes

hashtag
ieee.h

  • [1] output argument moved to beginning of argument list

original name
[1]

hashtag
ints.hpp (REMOVED)

original name
new name
Notes

hashtag
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

original name
new name
[1]
[2]
[3]
[4]
[5]
Notes

hashtag
lex.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]

hashtag
lines.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
Notes

hashtag
llong.hpp

  • [1] output argument moved to beginning of argument list

  • [2] output argument changed from reference to pointer

original name
new name
[1]
[2]

hashtag
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'

original name
new name
[1]
[2]
[3]
Notes

hashtag
moves.hpp

NOTE: 'curloc_t' and 'location_t' have been replaced by 'lochist_t'.

original name
new name

hashtag
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

original name
new name
[1]
[2]
Notes

hashtag
name.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
Notes

hashtag
netnode.hpp

original name
new name
Notes

hashtag
offset.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]
[3]
Notes

hashtag
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

original name
new name
[1]
[2]
Notes

hashtag
prodir.h

original name
new name

hashtag
pro.h

NOTE: global variables 'codepage' and 'oemcodepage' have been removed.

  • [1] output argument moved to beginning of argument list

original name
new name
[1]
Notes

hashtag
pronet.h

original name
new name

hashtag
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

hashtag
registry.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
[1]
[2]
Notes

hashtag
search.hpp

  • [1] output argument moved to beginning of argument list

original name
new name
[1]
Notes

hashtag
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

original name
[1]
[2]
[3]
Notes

hashtag
segregs.hpp (RENAMED from srarea.hpp)

NOTE: type 'segreg_area_t' has been renamed to 'sreg_range_t'

original name
new name
Notes

hashtag
sistack.h (REMOVED)

original name
new name

hashtag
strlist.hpp

  • [1] output argument moved to beginning of argument list

original name
new name
[1]
Notes

hashtag
struct.hpp

  • [1] output argument moved to beginning of argument list

    • q: argument is a qstring

  • [2] output buffer converted to qstring

original name
new name
[1]
[2]

hashtag
tryblks.hpp (NEW file)

original name
new name

hashtag
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

original name
new name
[1]
[2]
Notes

hashtag
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

original name
new name
[1]
[2]
[3]
[4]
[5]
Notes

hashtag
xref.hpp

  • [1] output argument moved to beginning of argument list

  • [2] input argument changed from pointer to reference

original name
[1]
[2]
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.

  • 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

    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.

    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

    'get_row()'.
  • 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.)

  • <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

    <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

    read_config_file

    moved from idp.hpp

    read_config_string

    moved from idp.hpp

    <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

    [3] return type changed from '[u]int32' to '[u]int64'/'qoff64_t'
  • [4] input argument changed from '[u]int32' to '[u]int64'/'qoff64_t'

  • 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'

    [3] added 'flags' argument

    rename_entry

    *

    set_entry_forwarder

    *

    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

    *

    [3] input argument changed from pointer to reference

    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

    [3] input argument changed from pointer to reference

    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'

    qfseek64

    qfseek

    *

    qftell64

    qftell

    *

    [3] input argument 'func_t *pfn' made const

    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

    *

    <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

    <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

    *

    showAllComments

    show_all_comments

    showComments

    show_comments

    showRepeatable class="table table-sm"s

    show_repeatable class="table table-sm"s

    toEA

    to_ea

    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 &'

    [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_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

    lxget

    lex_get_token

    lxgetserr

    lex_get_file_line

    lxgetsini

    lex_init_file

    lxgetstrm

    lex_term_file

    lxini

    lex_init_string

    [3] return type changed from 'void' to 'bool'

    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

    [3] return type changed from 'int32' to 'qoff64_t'

    <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

    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

    <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'

    [3] output argument changed from reference to pointer

    <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

    <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 *'

    [3] input argument 'refinfo_t &' made const

    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

    *

    <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

    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

    [3] added 'flags' argument

    <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*

    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

    <added>

    clear_strlist

    <added>

    get_strlist_options

    get_strlist_item

    *

    argument type: 'int' changed to 'size_t'

    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

    <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'

    [3] added input/output 'insn_t &insn' argument
  • [4] added input 'const insn_t &insn' argument

  • [5] added output 'insn_t *out' argument

  • 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

    ints.hpp

    <removed>

    sistack.h

    <removed>

    area.hpp

    range.hpp

    queue.hpp

    problems.hpp

    srarea.hpp

    segregs.hpp

    area_t

    range_t

    areavec_t

    rangevec_t

    endEA

    end_ea

    startEA

    start_ea

    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

    closebase

    closebase

    savebase

    savebase

    auto_empty

    auto_empty

    auto_empty_finally

    auto_empty_finally

    determined_main

    determined_main

    load_idasgn

    idasgn_loaded

    autoGetName

    <removed>

    autoStep

    <removed>

    <added>

    auto_apply_tail

    bitrange_t::extract

    argument type: 'int' changed to 'size_t'

    bitrange_t::inject

    argument type: 'int' changed to 'size_t'

    clrFlbits

    <removed>

    do3byte

    <removed>

    process_zipfile64

    process_zipfile

    process_zipfile_entry64

    process_zipfile_entry

    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

    get_process_info

    <removed>

    use 'get_processes' instead

    get_process_qty

    <removed>

    use 'get_processes' instead

    create_generic_linput

    <removed>

    echsize64

    add_entry

    *

    get_entry_forwarder

    q

    *

    get_entry_name

    q

    *

    add_selected_enum

    <removed>

    get_bmask_node

    <removed>

    get_selected_enum

    <removed>

    qstrerror

    buf argument removed; returns string in static buffer (thread-safe)

    ExecuteFile

    <removed>

    use 'exec_idc_script' instead

    ExecuteLine, execute

    <removed>

    get_fixup_base

    <removed>

    use 'fd.get_base()' instead

    get_fixup_extdef_ea

    <removed>

    <added>

    qaccess

    <added>

    qgetline

    qcopyfile64

    qcopyfile

    add_auto_stkpnt2

    add_auto_stkpnt

    add_stkvar2

    define_stkvar

    a2funcoff

    <removed>

    apply_idasgn

    <removed>

    create_multirange_qflow_chart

    argument type: 'areavec_t' has been renamed to 'rangevec_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>

    askyn

    ask_yn

    askyn_v

    vask_yn

    ansi2idb

    <removed>

    dto_copy_from_inf

    <removed>

    dto_copy_to_inf

    <removed>

    dto_init

    <removed>

    idb2scr

    <removed>

    scr2idb

    <removed>

    dbg_appcall

    *

    swapped 'argnum' and 'argv'; argument type: 'int' changed to 'size_t'

    get_reg_info2

    get_reg_info

    get_reg_name

    q

    *

    eetol

    *

    eetol64

    *

    eetol64u

    *

    realtoasc

    *

    get_predef_cmt

    <removed>

    get_vxd_func_name

    <removed>

    get_predef_insn_cmt

    moved to bytes.hpp

    askfile_c

    <removed>

    lex_define

    lex_define_macro

    lex_undef

    lex_undefine_macro

    lxascii

    lex_print_token

    q

    MakeBorder

    <removed>

    use 'outctx_base_t::gen_border_line(false)' instead

    MakeLine

    <removed>

    print

    <removed>

    llong_div

    *

    *

    llong_udiv

    *

    enum_plugins

    <removed>

    init_loader_options

    <removed>

    curloc_get

    <removed>

    curloc_get_entry

    <removed>

    curloc_hide_if_necessary

    <removed>

    curloc_jump

    <removed>

    curloc_jump_push

    <removed>

    curloc_linkTo

    <removed>

    _del_item_color

    <removed>

    _del_strid

    <removed>

    gen_name_decl

    <removed>

    use 'outctx_base_t::gen_name_decl' instead

    <added>

    is_strlit_cp

    <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)

    calc_reference_basevalue

    <removed>

    use 'calc_reference_data' instead

    calc_reference_target

    <removed>

    QueueGet

    <removed>

    get_long_queue_name

    <removed>

    Use 'get_problem_name(type, true);' instead

    qfindclose64

    qfindclose

    qfindfirst64

    qfindfirst

    qfindnext64

    qfindnext

    c2ustr

    <removed>

    use 'utf8_utf16' instead

    char2oem

    <removed>

    convert_codepage

    <removed>

    <added>

    qhost2addr

    reg_read_strlist

    *

    reg_read_string

    q

    *

    removed variant with default value

    user2bin

    *

    find_imm

    argument type: 'sval_t' changed to 'uval_t'

    find_void

    find_suspop

    del_segment_cmt

    <removed>

    use 'set_range_cmt("")' instead

    vset_segm_name

    <removed>

    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

    sistack_t_size

    <removed>

    sistack_t_flush

    <removed>

    refresh_strlist

    <removed>

    set_strlist_options

    <removed>

    <added>

    build_strlist

    get_member_by_fullname

    *

    get_member_cmt

    q

    *

    get_member_name2

    get_member_name

    <added>

    add_tryblk

    <added>

    del_tryblks

    <added>

    get_tryblks

    based_ptr_name_and_size

    <removed>

    callregs_init_regs

    <removed>

    OutBadInstruction

    <removed>

    calc_switch_cases

    *

    *

    create_switch_table class="table table-sm"

    *

    create_switch_xrefs

    *

    http://www.hexblog.com/?p=886arrow-up-right

    doASCI

    getn_process

    <removed>

    clear_func_struct

    invoke_callbacks

    *

    *

    _set_item_color

    get_short_queue_name

    choose_local_type

    class out_myproc_t : public outctx_t
    {
      void outreg(int r) { out_register(ph.reg_names[r]); }
      void outmem(const op_t &x, ea_t ea);
      bool outbit(ea_t ea, int bit);
    
      bool out_operand(const op_t &x);
      void out_insn(void);
      void out_mnem(void);
    }
      void idaapi out(void);
      void out_myproc_t::out(void);
      bool idaapi outop(op_t &x);
      bool out_myproc_t::out_operand(const op_t &x);
        case processor_t::ev_ana_insn:
          {
            insn_t *out = va_arg(va, insn_t *);
            return myproc_ana(out);
          }
        case processor_t::ev_out_insn:
          {
            outctx_t *ctx = va_arg(va, outctx_t *);
            out_insn(*ctx);
            return 1;
          }