diff --git a/cstool/cstool.c b/cstool/cstool.c index ded084ac..1b0cf798 100644 --- a/cstool/cstool.c +++ b/cstool/cstool.c @@ -20,6 +20,8 @@ static struct { { "armbe", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_BIG_ENDIAN }, { "arml", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_LITTLE_ENDIAN }, { "armle", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_LITTLE_ENDIAN }, + { "armv8", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_V8 }, + { "thumbv8", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_V8 }, { "cortexm", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_MCLASS }, { "thumb", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB }, { "thumbbe", CS_ARCH_ARM, CS_MODE_ARM | CS_MODE_THUMB | CS_MODE_BIG_ENDIAN }, @@ -27,6 +29,12 @@ static struct { { "arm64", CS_ARCH_ARM64, CS_MODE_LITTLE_ENDIAN }, { "arm64be", CS_ARCH_ARM64, CS_MODE_BIG_ENDIAN }, { "mips", CS_ARCH_MIPS, CS_MODE_MIPS32 | CS_MODE_LITTLE_ENDIAN }, + { "mipsmicro", CS_ARCH_MIPS, CS_MODE_MIPS32 | CS_MODE_MICRO }, + { "mipsbemicro", CS_ARCH_MIPS, CS_MODE_MIPS32 | CS_MODE_MICRO | CS_MODE_BIG_ENDIAN }, + { "mipsbe32r6", CS_ARCH_MIPS, CS_MODE_MIPS32R6 | CS_MODE_BIG_ENDIAN}, + { "mipsbe32r6micro", CS_ARCH_MIPS, CS_MODE_MIPS32R6 | CS_MODE_BIG_ENDIAN | CS_MODE_MICRO }, + { "mips32r6", CS_ARCH_MIPS, CS_MODE_MIPS32R6 }, + { "mips32r6micro", CS_ARCH_MIPS, CS_MODE_MIPS32R6 | CS_MODE_MICRO }, { "mipsbe", CS_ARCH_MIPS, CS_MODE_MIPS32 | CS_MODE_BIG_ENDIAN }, { "mips64", CS_ARCH_MIPS, CS_MODE_MIPS64 | CS_MODE_LITTLE_ENDIAN }, { "mips64be", CS_ARCH_MIPS, CS_MODE_MIPS64 | CS_MODE_BIG_ENDIAN }, @@ -39,6 +47,7 @@ static struct { { "ppc64", CS_ARCH_PPC, CS_MODE_64 | CS_MODE_LITTLE_ENDIAN }, { "ppc64be", CS_ARCH_PPC, CS_MODE_64 | CS_MODE_BIG_ENDIAN }, { "sparc", CS_ARCH_SPARC, CS_MODE_BIG_ENDIAN }, + { "sparcv9", CS_ARCH_SPARC, CS_MODE_BIG_ENDIAN | CS_MODE_V9 }, { "systemz", CS_ARCH_SYSZ, CS_MODE_BIG_ENDIAN }, { "sysz", CS_ARCH_SYSZ, CS_MODE_BIG_ENDIAN }, { "s390x", CS_ARCH_SYSZ, CS_MODE_BIG_ENDIAN }, @@ -46,7 +55,6 @@ static struct { { "m68k", CS_ARCH_M68K, CS_MODE_BIG_ENDIAN }, { "m68k40", CS_ARCH_M68K, CS_MODE_M68K_040 }, { "tms320c64x", CS_ARCH_TMS320C64X, CS_MODE_BIG_ENDIAN }, - { "tms320c64x", CS_ARCH_TMS320C64X, CS_MODE_BIG_ENDIAN }, { "m6800", CS_ARCH_M680X, CS_MODE_M680X_6800 }, { "m6801", CS_ARCH_M680X, CS_MODE_M680X_6801 }, { "m6805", CS_ARCH_M680X, CS_MODE_M680X_6805 }, diff --git a/suite/fuzz/driverbin.c b/suite/fuzz/driverbin.c index c8890bdd..4bdb69a1 100644 --- a/suite/fuzz/driverbin.c +++ b/suite/fuzz/driverbin.c @@ -5,6 +5,7 @@ #include int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size); +const char * cs_fuzz_arch(uint8_t arch); int main(int argc, char** argv) { @@ -14,6 +15,7 @@ int main(int argc, char** argv) DIR *d; struct dirent *dir; int r = 0; + int i; if (argc != 2) { return 1; @@ -35,7 +37,7 @@ int main(int argc, char** argv) if (dir->d_type != DT_REG) { continue; } - printf("Running %s\n", dir->d_name); + printf("Running file %s ", dir->d_name); fflush(stdout); fp = fopen(dir->d_name, "rb"); if (fp == NULL) { @@ -66,6 +68,13 @@ int main(int argc, char** argv) r = 8; break; } + if (Size > 0) { + printf("command cstool %s\n", cs_fuzz_arch(Data[0])); + } + for (i=0; i