Make thumb, v8 and m-class positional cstool arguments. (#2557)

Don't allow disabling options for now.
Will be addresses separately. Because it needs API documentation.

Co-authored-by: Wu ChenXu <kabeor00@gmail.com>
This commit is contained in:
Rot127 2024-12-05 15:08:32 +00:00 committed by GitHub
parent 89aee40003
commit b42e09033d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 10 deletions

View File

@ -37,7 +37,7 @@ cs_err ARM_option(cs_struct *handle, cs_opt_type type, size_t value)
{
switch (type) {
case CS_OPT_MODE:
handle->mode = (cs_mode)value;
handle->mode |= (cs_mode)value;
break;
case CS_OPT_SYNTAX:
handle->syntax |= (int)value;

View File

@ -47,6 +47,12 @@ static struct {
CS_ARCH_MIPS, CS_ARCH_MAX }, 0, CS_MODE_MIPS_NOFLOAT },
{ "+ptr64", "Enables 64-bit pointers support", {
CS_ARCH_MIPS, CS_ARCH_MAX }, 0, CS_MODE_MIPS_PTR64 },
{ "+thumb", "Enables Thumb mode for ARM.", {
CS_ARCH_ARM, CS_ARCH_MAX }, 0, CS_MODE_THUMB },
{ "+m", "Enables the M extension for ARM.", {
CS_ARCH_ARM, CS_ARCH_MAX }, 0, CS_MODE_MCLASS },
{ "+v8", "Sets the ARM version to v8+", {
CS_ARCH_ARM, CS_ARCH_MAX }, 0, CS_MODE_V8 },
{ "+aix", "Enables AIX OS assembly", {
CS_ARCH_PPC, CS_ARCH_MAX }, 0, CS_MODE_AIX_OS },
{ "+booke", "Enables BOOKE extension", {
@ -73,15 +79,6 @@ static struct {
{ "arm", "ARM, little endian", CS_ARCH_ARM, CS_MODE_ARM },
{ "armle", "ARM, little endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_LITTLE_ENDIAN },
{ "armbe", "ARM, big endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_BIG_ENDIAN },
{ "armv8", "ARM v8", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_V8 },
{ "armv8be", "ARM v8, big endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_V8 | CS_MODE_BIG_ENDIAN },
{ "cortexm", "ARM Cortex-M Thumb", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_MCLASS },
{ "cortexmv8", "ARM Cortex-M Thumb, v8", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_MCLASS | CS_MODE_V8 },
{ "thumb", "ARM Thumb mode, little endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB },
{ "thumble", "ARM Thumb mode, little endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_LITTLE_ENDIAN },
{ "thumbbe", "ARM Thumb mode, big endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_BIG_ENDIAN },
{ "thumbv8", "ARM Thumb v8", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_V8 },
{ "thumbv8be", "ARM Thumb v8, big endian", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_V8 | CS_MODE_BIG_ENDIAN },
{ "aarch64", "AArch64", CS_ARCH_AARCH64, CS_MODE_LITTLE_ENDIAN },
{ "aarch64be", "AArch64, big endian", CS_ARCH_AARCH64, CS_MODE_BIG_ENDIAN },