From ac437f48cc2a8710c0b9bb79549e011370916e33 Mon Sep 17 00:00:00 2001 From: Artem Dinaburg Date: Wed, 30 Mar 2022 14:56:37 -0400 Subject: [PATCH 1/3] Prepare for eventual thumb2 arch --- include/remill/Arch/Name.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/remill/Arch/Name.h b/include/remill/Arch/Name.h index 3df3ebe5e..0a61ec95d 100644 --- a/include/remill/Arch/Name.h +++ b/include/remill/Arch/Name.h @@ -86,6 +86,8 @@ enum ArchName : uint32_t { kArchSparc32, kArchSparc64, + + kArchThumb2LittleEndian, }; ArchName GetArchName(const llvm::Triple &triple); From 3c9110c74243ca2a846d32cc3a85dc73bbd4be6a Mon Sep 17 00:00:00 2001 From: Artem Dinaburg Date: Wed, 30 Mar 2022 16:44:45 -0400 Subject: [PATCH 2/3] Support in GetArchName --- lib/Arch/Name.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Arch/Name.cpp b/lib/Arch/Name.cpp index ecf3a09b8..e1c752967 100644 --- a/lib/Arch/Name.cpp +++ b/lib/Arch/Name.cpp @@ -26,7 +26,7 @@ ArchName GetArchName(const llvm::Triple &triple) { case llvm::Triple::ArchType::x86_64: return kArchAMD64; case llvm::Triple::ArchType::aarch64: return kArchAArch64LittleEndian; case llvm::Triple::ArchType::arm: return kArchAArch32LittleEndian; - case llvm::Triple::ArchType::thumb: return kArchAArch32LittleEndian; + case llvm::Triple::ArchType::thumb: return kArchThumb2LittleEndian; case llvm::Triple::sparc: return kArchSparc32; case llvm::Triple::sparcv9: return kArchSparc64; default: return kArchInvalid; From 985f17129f6ede0b2c0199d4d6ea1ac794a308cb Mon Sep 17 00:00:00 2001 From: Artem Dinaburg Date: Wed, 30 Mar 2022 17:29:13 -0400 Subject: [PATCH 3/3] More thumb2 support --- lib/Arch/Name.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Arch/Name.cpp b/lib/Arch/Name.cpp index e1c752967..6eb56f583 100644 --- a/lib/Arch/Name.cpp +++ b/lib/Arch/Name.cpp @@ -55,6 +55,9 @@ ArchName GetArchName(std::string_view arch_name) { } else if (arch_name == "aarch32") { return kArchAArch32LittleEndian; + } else if (arch_name == "thumb2") { + return kArchThumb2LittleEndian; + } else if (arch_name == "aarch64") { return kArchAArch64LittleEndian; @@ -80,6 +83,7 @@ static const std::string_view kArchNames[] = { [kArchAMD64_AVX] = "amd64_avx", [kArchAMD64_AVX512] = "amd64_avx512", [kArchAArch32LittleEndian] = "aarch32", + [kArchThumb2LittleEndian] = "thumb2", [kArchAArch64LittleEndian] = "aarch64", [kArchSparc32] = "sparc32", [kArchSparc64] = "sparc64",