Fix llvm-objdump so it picks a good CPU based for Mach-O files
for CPU_SUBTYPE_ARM_V7S and CPU_SUBTYPE_ARM_V7K.
For these two cpusubtypes they should default to a cortex-a7 CPU
to give proper disassembly without a -mcpu= flag.
rdar://27431703
llvm-svn: 292993
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index ae1ac09..c0a7518 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -2454,6 +2454,8 @@
*ArchFlag = "armv7em";
return Triple("thumbv7em-apple-darwin");
case MachO::CPU_SUBTYPE_ARM_V7K:
+ if (McpuDefault)
+ *McpuDefault = "cortex-a7";
if (ArchFlag)
*ArchFlag = "armv7k";
return Triple("armv7k-apple-darwin");
@@ -2464,6 +2466,8 @@
*ArchFlag = "armv7m";
return Triple("thumbv7m-apple-darwin");
case MachO::CPU_SUBTYPE_ARM_V7S:
+ if (McpuDefault)
+ *McpuDefault = "cortex-a7";
if (ArchFlag)
*ArchFlag = "armv7s";
return Triple("armv7s-apple-darwin");
diff --git a/llvm/test/tools/llvm-objdump/ARM/Inputs/divs.macho-armv7s b/llvm/test/tools/llvm-objdump/ARM/Inputs/divs.macho-armv7s
new file mode 100644
index 0000000..b877d2d
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/ARM/Inputs/divs.macho-armv7s
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/ARM/macho-nomcpu-armv7s.test b/llvm/test/tools/llvm-objdump/ARM/macho-nomcpu-armv7s.test
new file mode 100644
index 0000000..ff7daa8
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/ARM/macho-nomcpu-armv7s.test
@@ -0,0 +1,3 @@
+@ RUN: llvm-objdump -m -d %p/Inputs/divs.macho-armv7s | FileCheck %s
+
+@ CHECK: 10 f0 10 e7 sdiv r0, r0, r0