change API cs_disasm_dyn(): break cs_insn into 2 structures, and put all details into new structure cs_detail. this break API compatibility
diff --git a/arch/AArch64/mapping.c b/arch/AArch64/mapping.c
index d4eb255..cf8c8f0 100644
--- a/arch/AArch64/mapping.c
+++ b/arch/AArch64/mapping.c
@@ -6,6 +6,7 @@
#include "../../include/arm64.h"
#include "../../utils.h"
+#include "../../cs_priv.h"
#include "mapping.h"
@@ -2996,23 +2997,23 @@
insn->id = insns[i].mapid;
if (detail) {
- memcpy(insn->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
- insn->regs_read_count = count_positive(insns[i].regs_use);
+ cs_struct handle;
+ handle.detail = detail;
+ memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
+ insn->detail->regs_read_count = count_positive(insns[i].regs_use);
- memcpy(insn->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
- insn->regs_write_count = count_positive(insns[i].regs_mod);
+ memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
+ insn->detail->regs_write_count = count_positive(insns[i].regs_mod);
- memcpy(insn->groups, insns[i].groups, sizeof(insns[i].groups));
- insn->groups_count = count_positive(insns[i].groups);
+ memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
+ insn->detail->groups_count = count_positive(insns[i].groups);
- // call cs_reg_write() with handle = 1 to bypass handle check
- // we only need to find if this insn modifies ARM64_REG_NZCV
- insn->arm64.update_flags = cs_reg_write(1, insn, ARM64_REG_NZCV);
+ insn->detail->arm64.update_flags = cs_reg_write((csh)&handle, insn, ARM64_REG_NZCV);
if (insns[i].branch || insns[i].indirect_branch) {
// this insn also belongs to JUMP group. add JUMP group
- insn->groups[insn->groups_count] = ARM64_GRP_JUMP;
- insn->groups_count++;
+ insn->detail->groups[insn->detail->groups_count] = ARM64_GRP_JUMP;
+ insn->detail->groups_count++;
}
}
}