diff options
author | Takashi Kokubun <[email protected]> | 2022-12-20 23:48:12 -0800 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2023-03-05 22:11:20 -0800 |
commit | e750e1e3ee81105cbc59a45cf016e51a1c42932c (patch) | |
tree | 2672724a69ed6bf97a76a86982d77fc75dbd58dd | |
parent | dfa19a16586b0760d1644170a5096ec6bf4831fd (diff) |
Fix build without libcapstone
-rw-r--r-- | mjit_c.c | 12 |
1 files changed, 4 insertions, 8 deletions
@@ -43,11 +43,14 @@ // Fedora: dnf -y install capstone-devel #ifdef HAVE_LIBCAPSTONE #include <capstone/capstone.h> +#endif // Return an array of [address, mnemonic, op_str] static VALUE dump_disasm(rb_execution_context_t *ec, VALUE self, VALUE from, VALUE to) { + VALUE result = rb_ary_new(); +#ifdef HAVE_LIBCAPSTONE // Prepare for calling cs_disasm static csh handle; if (cs_open(CS_ARCH_X86, CS_MODE_64, &handle) != CS_ERR_OK) { @@ -59,7 +62,6 @@ dump_disasm(rb_execution_context_t *ec, VALUE self, VALUE from, VALUE to) // Call cs_disasm and convert results to a Ruby array cs_insn *insns; size_t count = cs_disasm(handle, (const uint8_t *)from_addr, to_addr - from_addr, from_addr, 0, &insns); - VALUE result = rb_ary_new_capa(count); for (size_t i = 0; i < count; i++) { VALUE vals = rb_ary_new_from_args(3, LONG2NUM(insns[i].address), rb_str_new2(insns[i].mnemonic), rb_str_new2(insns[i].op_str)); rb_ary_push(result, vals); @@ -68,15 +70,9 @@ dump_disasm(rb_execution_context_t *ec, VALUE self, VALUE from, VALUE to) // Free memory used by capstone cs_free(insns, count); cs_close(&handle); +#endif return result; } -#else -static VALUE -mjit_disasm(VALUE self, VALUE from, VALUE to) -{ - return rb_ary_new(); -} -#endif #include "mjit_c.rbinc" |