Index: src/third_party/libdisasm/x86_insn.c |
diff --git a/src/third_party/libdisasm/x86_insn.c b/src/third_party/libdisasm/x86_insn.c |
deleted file mode 100644 |
index 5649b89fb8eb9fed2f72d3c3ffd200c7faf6749a..0000000000000000000000000000000000000000 |
--- a/src/third_party/libdisasm/x86_insn.c |
+++ /dev/null |
@@ -1,182 +0,0 @@ |
-#include <stdio.h> |
-#include <stdlib.h> |
- |
-#include "libdis.h" |
- |
-#ifdef _MSC_VER |
- #define snprintf _snprintf |
- #define inline __inline |
-#endif |
- |
-int x86_insn_is_valid( x86_insn_t *insn ) { |
- if ( insn && insn->type != insn_invalid && insn->size > 0 ) { |
- return 1; |
- } |
- |
- return 0; |
-} |
- |
-uint32_t x86_get_address( x86_insn_t *insn ) { |
- x86_oplist_t *op_lst; |
- if (! insn || ! insn->operands ) { |
- return 0; |
- } |
- |
- for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) { |
- if ( op_lst->op.type == op_offset ) { |
- return op_lst->op.data.offset; |
- } else if ( op_lst->op.type == op_absolute ) { |
- if ( op_lst->op.datatype == op_descr16 ) { |
- return (uint32_t) |
- op_lst->op.data.absolute.offset.off16; |
- } |
- return op_lst->op.data.absolute.offset.off32; |
- } |
- } |
- |
- return 0; |
-} |
- |
-int32_t x86_get_rel_offset( x86_insn_t *insn ) { |
- x86_oplist_t *op_lst; |
- if (! insn || ! insn->operands ) { |
- return 0; |
- } |
- |
- for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) { |
- if ( op_lst->op.type == op_relative_near ) { |
- return (int32_t) op_lst->op.data.relative_near; |
- } else if ( op_lst->op.type == op_relative_far ) { |
- return op_lst->op.data.relative_far; |
- } |
- } |
- |
- return 0; |
-} |
- |
-x86_op_t * x86_get_branch_target( x86_insn_t *insn ) { |
- x86_oplist_t *op_lst; |
- if (! insn || ! insn->operands ) { |
- return NULL; |
- } |
- |
- for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) { |
- if ( op_lst->op.access & op_execute ) { |
- return &(op_lst->op); |
- } |
- } |
- |
- return NULL; |
-} |
-x86_op_t * x86_get_imm( x86_insn_t *insn ) { |
- x86_oplist_t *op_lst; |
- if (! insn || ! insn->operands ) { |
- return NULL; |
- } |
- |
- for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) { |
- if ( op_lst->op.type == op_immediate ) { |
- return &(op_lst->op); |
- } |
- } |
- |
- return NULL; |
-} |
- |
-#define IS_PROPER_IMM( x ) \ |
- x->op.type == op_immediate && ! (x->op.flags & op_hardcode) |
- |
- |
-/* if there is an immediate value in the instruction, return a pointer to |
- * it */ |
-unsigned char * x86_get_raw_imm( x86_insn_t *insn ) { |
- int size, offset; |
- x86_op_t *op = NULL; |
- |
- if (! insn || ! insn->operands ) { |
- return(NULL); |
- } |
- |
- /* a bit inelegant, but oh well... */ |
- if ( IS_PROPER_IMM( insn->operands ) ) { |
- op = &insn->operands->op; |
- } else if ( insn->operands->next ) { |
- if ( IS_PROPER_IMM( insn->operands->next ) ) { |
- op = &insn->operands->next->op; |
- } else if ( insn->operands->next->next && |
- IS_PROPER_IMM( insn->operands->next->next ) ) { |
- op = &insn->operands->next->next->op; |
- } |
- } |
- |
- if (! op ) { |
- return( NULL ); |
- } |
- |
- /* immediate data is at the end of the insn */ |
- size = x86_operand_size( op ); |
- offset = insn->size - size; |
- return( &insn->bytes[offset] ); |
-} |
- |
- |
-unsigned int x86_operand_size( x86_op_t *op ) { |
- switch (op->datatype ) { |
- case op_byte: return 1; |
- case op_word: return 2; |
- case op_dword: return 4; |
- case op_qword: return 8; |
- case op_dqword: return 16; |
- case op_sreal: return 4; |
- case op_dreal: return 8; |
- case op_extreal: return 10; |
- case op_bcd: return 10; |
- case op_ssimd: return 16; |
- case op_dsimd: return 16; |
- case op_sssimd: return 4; |
- case op_sdsimd: return 8; |
- case op_descr32: return 6; |
- case op_descr16: return 4; |
- case op_pdescr32: return 6; |
- case op_pdescr16: return 6; |
- case op_bounds16: return 4; |
- case op_bounds32: return 8; |
- case op_fpuenv16: return 14; |
- case op_fpuenv32: return 28; |
- case op_fpustate16: return 94; |
- case op_fpustate32: return 108; |
- case op_fpregset: return 512; |
- case op_fpreg: return 10; |
- case op_none: return 0; |
- } |
- return(4); /* default size */ |
-} |
- |
-void x86_set_insn_addr( x86_insn_t *insn, uint32_t addr ) { |
- if ( insn ) insn->addr = addr; |
-} |
- |
-void x86_set_insn_offset( x86_insn_t *insn, unsigned int offset ){ |
- if ( insn ) insn->offset = offset; |
-} |
- |
-void x86_set_insn_function( x86_insn_t *insn, void * func ){ |
- if ( insn ) insn->function = func; |
-} |
- |
-void x86_set_insn_block( x86_insn_t *insn, void * block ){ |
- if ( insn ) insn->block = block; |
-} |
- |
-void x86_tag_insn( x86_insn_t *insn ){ |
- if ( insn ) insn->tag = 1; |
-} |
- |
-void x86_untag_insn( x86_insn_t *insn ){ |
- if ( insn ) insn->tag = 0; |
-} |
- |
-int x86_insn_is_tagged( x86_insn_t *insn ){ |
- return insn->tag; |
-} |
- |