Change AArch64 GRP_JUMP to use a static table implementation
Added support for GRP_CALL and GRP_RETURN to AArch64
diff --git a/arch/AArch64/AArch64Mapping.c b/arch/AArch64/AArch64Mapping.c
index b5eed13..b31c958 100644
--- a/arch/AArch64/AArch64Mapping.c
+++ b/arch/AArch64/AArch64Mapping.c
@@ -332,12 +332,6 @@
insn->detail->groups_count = (uint8_t)count_positive(insns[i].groups);
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->detail->groups[insn->detail->groups_count] = ARM64_GRP_JUMP;
- insn->detail->groups_count++;
- }
#endif
}
}
@@ -844,6 +838,8 @@
// generic groups
{ ARM64_GRP_INVALID, NULL },
{ ARM64_GRP_JUMP, "jump" },
+ { ARM64_GRP_CALL, "call" },
+ { ARM64_GRP_RET, "return" },
// architecture-specific groups
{ ARM64_GRP_CRYPTO, "crypto" },
@@ -858,12 +854,12 @@
{
#ifndef CAPSTONE_DIET
// verify group id
- if (id >= ARM64_GRP_ENDING || (id > ARM64_GRP_JUMP && id < ARM64_GRP_CRYPTO))
+ if (id >= ARM64_GRP_ENDING || (id > ARM64_GRP_RET && id < ARM64_GRP_CRYPTO))
return NULL;
// NOTE: when new generic groups are added, 2 must be changed accordingly
if (id >= 128)
- return group_name_maps[id - 128 + 2].name;
+ return group_name_maps[id - 128 + 4].name;
else
return group_name_maps[id].name;
#else