Skip to content

Commit

Permalink
Fix 2572 (#2574)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rot127 authored Dec 15, 2024
1 parent b25aa84 commit 4dc14ba
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 39 deletions.
72 changes: 36 additions & 36 deletions arch/AArch64/AArch64GenCSMappingInsn.inc
Original file line number Diff line number Diff line change
Expand Up @@ -32598,63 +32598,63 @@
/* ldapurb $Rt, [$Rn, $offset] */
AArch64_LDAPURBi /* 4254 */, AARCH64_INS_LDAPURB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapurh $Rt, [$Rn, $offset] */
AArch64_LDAPURHi /* 4255 */, AARCH64_INS_LDAPURH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapursb $Rt, [$Rn, $offset] */
AArch64_LDAPURSBWi /* 4256 */, AARCH64_INS_LDAPURSB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapursb $Rt, [$Rn, $offset] */
AArch64_LDAPURSBXi /* 4257 */, AARCH64_INS_LDAPURSB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapursh $Rt, [$Rn, $offset] */
AArch64_LDAPURSHWi /* 4258 */, AARCH64_INS_LDAPURSH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapursh $Rt, [$Rn, $offset] */
AArch64_LDAPURSHXi /* 4259 */, AARCH64_INS_LDAPURSH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapursw $Rt, [$Rn, $offset] */
AArch64_LDAPURSWi /* 4260 */, AARCH64_INS_LDAPURSW,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldapur $Rt, [$Rn, $offset] */
AArch64_LDAPURXi /* 4261 */, AARCH64_INS_LDAPUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
Expand Down Expand Up @@ -32686,7 +32686,7 @@
/* ldapur $Rt, [$Rn, $offset] */
AArch64_LDAPURi /* 4265 */, AARCH64_INS_LDAPUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
Expand Down Expand Up @@ -35430,111 +35430,111 @@
/* ldurb $Rt, [$Rn, $offset] */
AArch64_LDURBBi /* 4608 */, AARCH64_INS_LDURB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURBi /* 4609 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURDi /* 4610 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldurh $Rt, [$Rn, $offset] */
AArch64_LDURHHi /* 4611 */, AARCH64_INS_LDURH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURHi /* 4612 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURQi /* 4613 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldursb $Rt, [$Rn, $offset] */
AArch64_LDURSBWi /* 4614 */, AARCH64_INS_LDURSB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldursb $Rt, [$Rn, $offset] */
AArch64_LDURSBXi /* 4615 */, AARCH64_INS_LDURSB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldursh $Rt, [$Rn, $offset] */
AArch64_LDURSHWi /* 4616 */, AARCH64_INS_LDURSH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldursh $Rt, [$Rn, $offset] */
AArch64_LDURSHXi /* 4617 */, AARCH64_INS_LDURSH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldursw $Rt, [$Rn, $offset] */
AArch64_LDURSWi /* 4618 */, AARCH64_INS_LDURSW,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURSi /* 4619 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURWi /* 4620 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
{
/* ldur $Rt, [$Rn, $offset] */
AArch64_LDURXi /* 4621 */, AARCH64_INS_LDUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_READ }}

#endif
},
Expand Down Expand Up @@ -52398,31 +52398,31 @@
/* stlurb $Rt, [$Rn, $offset] */
AArch64_STLURBi /* 6729 */, AARCH64_INS_STLURB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stlurh $Rt, [$Rn, $offset] */
AArch64_STLURHi /* 6730 */, AARCH64_INS_STLURH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stlur $Rt, [$Rn, $offset] */
AArch64_STLURWi /* 6731 */, AARCH64_INS_STLUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stlur $Rt, [$Rn, $offset] */
AArch64_STLURXi /* 6732 */, AARCH64_INS_STLUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASRCPC_IMMO, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
Expand Down Expand Up @@ -53478,71 +53478,71 @@
/* sturb $Rt, [$Rn, $offset] */
AArch64_STURBBi /* 6864 */, AARCH64_INS_STURB,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURBi /* 6865 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURDi /* 6866 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* sturh $Rt, [$Rn, $offset] */
AArch64_STURHHi /* 6867 */, AARCH64_INS_STURH,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURHi /* 6868 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURQi /* 6869 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURSi /* 6870 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { AARCH64_FEATURE_HASFPARMV8, 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURWi /* 6871 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
{
/* stur $Rt, [$Rn, $offset] */
AArch64_STURXi /* 6872 */, AARCH64_INS_STUR,
#ifndef CAPSTONE_DIET
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_INVALID }}
{ 0 }, { 0 }, { 0 }, 0, 0, { .aarch64 = { .mem_acc = CS_AC_WRITE }}

#endif
},
Expand Down
4 changes: 2 additions & 2 deletions arch/AArch64/AArch64GenDisassemblerTables.inc
Original file line number Diff line number Diff line change
Expand Up @@ -28341,7 +28341,7 @@ static const uint8_t DecoderTableFallback32[] = {

static bool checkDecoderPredicate(MCInst *Inst, unsigned Idx) {
switch (Idx) {
default: /* llvm_unreachable("Invalid index!"); */
default: CS_ASSERT_RET_VAL(0 && "Invalid index!", false);
case 0:
return (AArch64_getFeatureBits(Inst->csh->mode, AArch64_FeatureAll) || AArch64_getFeatureBits(Inst->csh->mode, AArch64_FeatureSME));
case 1:
Expand Down Expand Up @@ -28552,7 +28552,7 @@ static DecodeStatus fname(DecodeStatus S, unsigned Idx, InsnType insn, MCInst *M
*DecodeComplete = true; \
InsnType tmp; \
switch (Idx) { \
default: /* llvm_unreachable("Invalid index!"); */ \
default: CS_ASSERT_RET_VAL(0 && "Invalid index!", MCDisassembler_Fail); \
case 0: \
tmp = fieldname(insn, 0, 16); \
MCOperand_CreateImm0(MI, tmp); \
Expand Down
9 changes: 8 additions & 1 deletion suite/auto-sync/src/autosync/ASUpdater.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,17 @@ def patch_main_header(self) -> list:
# Save the path. This file should not be moved.
patched.append(file)
if self.arch == "AArch64":
# Update the compatibility header
builder = CompatHeaderBuilder(
v6=main_header,
v5=get_path("{CS_INCLUDE_DIR}").joinpath(f"arm64.h"),
arch="aarch64",
)
builder.generate_v5_compat_header()
elif self.arch == "AArch64":
builder = CompatHeaderBuilder(
v6=main_header,
v5=get_path("{CS_INCLUDE_DIR}").joinpath(f"systemz_compatibility.h"),
arch="systemz",
)
builder.generate_v5_compat_header()
return patched
Expand Down
Loading

0 comments on commit 4dc14ba

Please sign in to comment.