summaryrefslogtreecommitdiffstats
path: root/lldb/source/Utility/ArchSpec.cpp
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2019-10-16 19:14:49 +0000
committerJason Molenda <jmolenda@apple.com>2019-10-16 19:14:49 +0000
commit7dd7a3607596a51044b8706ebf6df2e613ce1e9b (patch)
treeceaacaa39ab7238f81442a520fc67f7c17b7294f /lldb/source/Utility/ArchSpec.cpp
parent930ada91ce8ff9715e2ca7309bc946dbb9162dfb (diff)
downloadbcm5719-llvm-7dd7a3607596a51044b8706ebf6df2e613ce1e9b.tar.gz
bcm5719-llvm-7dd7a3607596a51044b8706ebf6df2e613ce1e9b.zip
Add arm64_32 support to lldb, an ILP32 codegen
that runs on arm64 ISA targets, specifically Apple watches. Differential Revision: https://reviews.llvm.org/D68858 llvm-svn: 375032
Diffstat (limited to 'lldb/source/Utility/ArchSpec.cpp')
-rw-r--r--lldb/source/Utility/ArchSpec.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/lldb/source/Utility/ArchSpec.cpp b/lldb/source/Utility/ArchSpec.cpp
index 9907ca9b240..a71a5dcb3d4 100644
--- a/lldb/source/Utility/ArchSpec.cpp
+++ b/lldb/source/Utility/ArchSpec.cpp
@@ -101,6 +101,8 @@ static const CoreDefinition g_core_definitions[] = {
ArchSpec::eCore_arm_arm64, "arm64"},
{eByteOrderLittle, 8, 4, 4, llvm::Triple::aarch64,
ArchSpec::eCore_arm_armv8, "armv8"},
+ {eByteOrderLittle, 4, 4, 4, llvm::Triple::aarch64_32,
+ ArchSpec::eCore_arm_arm64_32, "arm64_32"},
{eByteOrderLittle, 8, 4, 4, llvm::Triple::aarch64,
ArchSpec::eCore_arm_aarch64, "aarch64"},
@@ -296,6 +298,10 @@ static const ArchDefinitionEntry g_macho_arch_entries[] = {
SUBTYPE_MASK},
{ArchSpec::eCore_arm_arm64, llvm::MachO::CPU_TYPE_ARM64, 13, UINT32_MAX,
SUBTYPE_MASK},
+ {ArchSpec::eCore_arm_arm64_32, llvm::MachO::CPU_TYPE_ARM64_32, 0,
+ UINT32_MAX, SUBTYPE_MASK},
+ {ArchSpec::eCore_arm_arm64_32, llvm::MachO::CPU_TYPE_ARM64_32, 1,
+ UINT32_MAX, SUBTYPE_MASK},
{ArchSpec::eCore_arm_arm64, llvm::MachO::CPU_TYPE_ARM64, CPU_ANY,
UINT32_MAX, SUBTYPE_MASK},
{ArchSpec::eCore_thumb, llvm::MachO::CPU_TYPE_ARM, 0, UINT32_MAX,
@@ -752,6 +758,7 @@ bool ArchSpec::CharIsSignedByDefault() const {
return true;
case llvm::Triple::aarch64:
+ case llvm::Triple::aarch64_32:
case llvm::Triple::aarch64_be:
case llvm::Triple::arm:
case llvm::Triple::armeb:
@@ -1239,6 +1246,14 @@ static bool cores_match(const ArchSpec::Core core1, const ArchSpec::Core core2,
}
break;
+ case ArchSpec::eCore_arm_arm64_32:
+ if (!enforce_exact_match) {
+ if (core2 == ArchSpec::eCore_arm_generic)
+ return true;
+ try_inverse = false;
+ }
+ break;
+
case ArchSpec::eCore_mips32:
if (!enforce_exact_match) {
if (core2 >= ArchSpec::kCore_mips32_first &&
OpenPOWER on IntegriCloud