mirror of
https://github.com/cemu-project/idapython.git
synced 2024-11-30 21:14:20 +01:00
fbb5bfabd6
What's new: - added the decompiler bindings - Expose simpleline_t type to IDAPython. That lets the user to set the bgcolor & text for each line in the decompilation. - Wrapped new functions from the IDA SDK Various fixes: for non-code locations, idc.GetOpnd() would create instructions instead of returning empty result - idb_event::area_cmt_changed was never received in IDB_Hooks (and descendants) - idb_event::ti_changed, and idb_event::op_ti_changed notifications were not accessible in IDAPython - op_t.value was truncated to 32 bits under IDA64. - print_tinfo() wouldn't return a valid string. - readsel2() was not usable. - read_selection() was buggy for 64-bit programs. - StructMembers() considered holes in structures, and didn't properly iterate through the whole structure definition. - There was no way to call calc_switch_cases() from IDAPython. - when using multi-select/multi-edit choosers, erroneous event codes could be sent at beginning & end of batch deletion of lines. - When, in a PluginForm#OnCreate, the layout of IDA was requested to change (for example by starting a debugging session), that PluginForm could be deleted and create an access violation. - tinfo_t objects created from IDAPython could cause an assertion failure at exit time. - Usage of IDAPython's DropdownListControl was broken.
75 lines
1.3 KiB
OpenEdge ABL
75 lines
1.3 KiB
OpenEdge ABL
// Ignore functions with callbacks
|
|
%ignore enumerate_selectors;
|
|
%ignore enumerate_segments_with_selector;
|
|
|
|
// Kernel-only
|
|
%ignore init_groups;
|
|
%ignore save_groups;
|
|
%ignore term_groups;
|
|
%ignore vset_segm_name;
|
|
%ignore get_segm_expr;
|
|
%ignore get_based_segm_expr;
|
|
%ignore createSegmentation;
|
|
%ignore initSegment;
|
|
%ignore save_segments;
|
|
%ignore termSegment;
|
|
%ignore DeleteAllSegments;
|
|
%ignore delete_debug_segments;
|
|
%ignore is_debugger_segm;
|
|
%ignore is_ephemeral_segm;
|
|
%ignore correct_address;
|
|
|
|
%{
|
|
void segment_t_startEA_set(segment_t *segm, ea_t newea)
|
|
{
|
|
if ( getseg(segm->startEA) == segm )
|
|
{
|
|
PyErr_SetString(PyExc_AttributeError, "Can't modify startEA, please use set_segm_start() instead");
|
|
}
|
|
else
|
|
{
|
|
segm->startEA = newea;
|
|
}
|
|
}
|
|
|
|
ea_t segment_t_startEA_get(segment_t *segm)
|
|
{
|
|
return segm->startEA;
|
|
}
|
|
|
|
void segment_t_endEA_set(segment_t *segm, ea_t newea)
|
|
{
|
|
if ( getseg(segm->startEA) == segm )
|
|
{
|
|
PyErr_SetString(PyExc_AttributeError, "Can't modify endEA, please use set_segm_end() instead");
|
|
}
|
|
else
|
|
{
|
|
segm->endEA = newea;
|
|
}
|
|
}
|
|
|
|
ea_t segment_t_endEA_get(segment_t *segm)
|
|
{
|
|
return segm->endEA;
|
|
}
|
|
%}
|
|
%extend segment_t
|
|
{
|
|
ea_t startEA;
|
|
ea_t endEA;
|
|
}
|
|
|
|
%include "segment.hpp"
|
|
|
|
%inline %{
|
|
sel_t get_defsr(segment_t *s, int reg)
|
|
{
|
|
return s->defsr[reg];
|
|
}
|
|
void set_defsr(segment_t *s, int reg, sel_t value)
|
|
{
|
|
s->defsr[reg] = value;
|
|
}
|
|
%}
|