Skip to content

Commit

Permalink
switch statements are now supported on both IDA 7.0 and 7.2
Browse files Browse the repository at this point in the history
added ev_may_be_func callback
added stack spill vars
  • Loading branch information
n-o-o-n committed Jul 16, 2020
1 parent 43b2c71 commit 7c48563
Show file tree
Hide file tree
Showing 5 changed files with 507 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Build SDK, the resulting binary will be in $SDK/bin/procs/hexagon.dll.

Binary download
---------------
Binaries for Windows can be found under [releases](https://github.com/n-o-o-n/idp_hexagon/releases)
Binaries for Windows can be found under [releases](https://github.com/n-o-o-n/idp_hexagon/releases).


Installation
Expand All @@ -39,7 +39,6 @@ Otherwise IDA would still sucessfully load binary, but will complain about unkno

Issues
------
* Switches are not recognized yet.
* In case of mixed code and data the former may have incorrect packet boundaries.
* Some rare relocation types are not properly recognized.
* Does not distinguish between different Hexagon versions; will disassemble instructions not supported by a particular version.
Expand Down Expand Up @@ -72,3 +71,4 @@ History
2020-07-02 added function arguments locations
2020-07-10 trace SP modification at the end of a packet
2020-07-13 added automatic comments for function arguments
2020-07-16 added switch support; version 2.0 released
1 change: 1 addition & 0 deletions hexagon/ana.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ static void add_reg( op_t **ops, uint32_t reg, uint32_t flags = 0 )
op->type = o_reg;
op->reg = reg;
op->specval = flags; // REG_XXX, REG_PRE_XXX, REG_POST_XXX
op->dtype = dt_dword;
(*ops)++;
}

Expand Down
1 change: 1 addition & 0 deletions hexagon/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ ssize_t ana( insn_t &insn );
ssize_t emu( const insn_t &insn );
bool hex_is_call_insn( const insn_t &insn );
bool hex_is_ret_insn( const insn_t &insn, bool strict );
ssize_t hex_may_be_func( const insn_t &insn, int state );
ssize_t hex_is_align_insn( ea_t ea );
bool hex_is_jump_func( func_t &pfn, ea_t *jump_target, ea_t *func_pointer );
void out_header( outctx_t &ctx );
Expand Down
Loading

0 comments on commit 7c48563

Please sign in to comment.