[llvm] Reapply [MachO] Move getArchTriple implementation..." with fixes. (PR #161949)

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 4 00:08:31 PDT 2025


https://github.com/lhames created https://github.com/llvm/llvm-project/pull/161949

This reapplies cd32b9b6c3b, which was reverted in 25e02a43fe6 due to bot failures.

The failures all appear to be link errors due to the Object library not depending on BinaryFormat. This commit adds the missing dependence.

>From fdf9dd94fd485ba4df360db57ce95985da7174cf Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Sat, 4 Oct 2025 17:02:21 +1000
Subject: [PATCH] Reapply [MachO] Move getArchTriple implementation..." with
 fixes.

This reapplies cd32b9b6c3b, which was reverted in 25e02a43fe6 due to bot
failures.

The failures all appear to be link errors due to the Object library not
depending on BinaryFormat. This commit adds the missing dependence.
---
 llvm/include/llvm/BinaryFormat/MachO.h |   9 +-
 llvm/include/llvm/Object/MachO.h       |   8 +-
 llvm/lib/BinaryFormat/MachO.cpp        | 157 ++++++++++++++++++++++++
 llvm/lib/Object/MachOObjectFile.cpp    | 158 -------------------------
 4 files changed, 169 insertions(+), 163 deletions(-)

diff --git a/llvm/include/llvm/BinaryFormat/MachO.h b/llvm/include/llvm/BinaryFormat/MachO.h
index 5dbdfb13d1a5f..ad6b27f61ec91 100644
--- a/llvm/include/llvm/BinaryFormat/MachO.h
+++ b/llvm/include/llvm/BinaryFormat/MachO.h
@@ -17,11 +17,9 @@
 #include "llvm/Support/DataTypes.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/SwapByteOrder.h"
+#include "llvm/TargetParser/Triple.h"
 
 namespace llvm {
-
-class Triple;
-
 namespace MachO {
 // Enums from <mach-o/loader.h>
 enum : uint32_t {
@@ -1710,6 +1708,11 @@ LLVM_ABI Expected<uint32_t> getCPUSubType(const Triple &T,
                                           unsigned PtrAuthABIVersion,
                                           bool PtrAuthKernelABIVersion);
 
+LLVM_ABI Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType);
+LLVM_ABI Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
+                              const char **McpuDefault = nullptr,
+                              const char **ArchFlag = nullptr);
+
 struct x86_thread_state32_t {
   uint32_t eax;
   uint32_t ebx;
diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h
index 3f4a21d2d1bac..0dfe9802009a2 100644
--- a/llvm/include/llvm/Object/MachO.h
+++ b/llvm/include/llvm/Object/MachO.h
@@ -752,10 +752,14 @@ class LLVM_ABI MachOObjectFile : public ObjectFile {
   static StringRef guessLibraryShortName(StringRef Name, bool &isFramework,
                                          StringRef &Suffix);
 
-  static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType);
+  static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType) {
+    return MachO::getArch(CPUType, CPUSubType);
+  }
   static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
                               const char **McpuDefault = nullptr,
-                              const char **ArchFlag = nullptr);
+                              const char **ArchFlag = nullptr) {
+    return MachO::getArchTriple(CPUType, CPUSubType, McpuDefault, ArchFlag);
+  }
   static bool isValidArch(StringRef ArchFlag);
   static ArrayRef<StringRef> getValidArchs();
   static Triple getHostArch();
diff --git a/llvm/lib/BinaryFormat/MachO.cpp b/llvm/lib/BinaryFormat/MachO.cpp
index f46b9d5147ff1..b2af2434f3518 100644
--- a/llvm/lib/BinaryFormat/MachO.cpp
+++ b/llvm/lib/BinaryFormat/MachO.cpp
@@ -123,3 +123,160 @@ Expected<uint32_t> MachO::getCPUSubType(const Triple &T,
   return CPU_SUBTYPE_ARM64E_WITH_PTRAUTH_VERSION(PtrAuthABIVersion,
                                                  PtrAuthKernelABIVersion);
 }
+
+Triple::ArchType MachO::getArch(uint32_t CPUType, uint32_t CPUSubType) {
+  switch (CPUType) {
+  case MachO::CPU_TYPE_I386:
+    return Triple::x86;
+  case MachO::CPU_TYPE_X86_64:
+    return Triple::x86_64;
+  case MachO::CPU_TYPE_ARM:
+    return Triple::arm;
+  case MachO::CPU_TYPE_ARM64:
+    return Triple::aarch64;
+  case MachO::CPU_TYPE_ARM64_32:
+    return Triple::aarch64_32;
+  case MachO::CPU_TYPE_POWERPC:
+    return Triple::ppc;
+  case MachO::CPU_TYPE_POWERPC64:
+    return Triple::ppc64;
+  default:
+    return Triple::UnknownArch;
+  }
+}
+
+Triple MachO::getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
+                            const char **McpuDefault, const char **ArchFlag) {
+  if (McpuDefault)
+    *McpuDefault = nullptr;
+  if (ArchFlag)
+    *ArchFlag = nullptr;
+
+  switch (CPUType) {
+  case MachO::CPU_TYPE_I386:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_I386_ALL:
+      if (ArchFlag)
+        *ArchFlag = "i386";
+      return Triple("i386-apple-darwin");
+    default:
+      return Triple();
+    }
+  case MachO::CPU_TYPE_X86_64:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_X86_64_ALL:
+      if (ArchFlag)
+        *ArchFlag = "x86_64";
+      return Triple("x86_64-apple-darwin");
+    case MachO::CPU_SUBTYPE_X86_64_H:
+      if (ArchFlag)
+        *ArchFlag = "x86_64h";
+      return Triple("x86_64h-apple-darwin");
+    default:
+      return Triple();
+    }
+  case MachO::CPU_TYPE_ARM:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_ARM_V4T:
+      if (ArchFlag)
+        *ArchFlag = "armv4t";
+      return Triple("armv4t-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM_V5TEJ:
+      if (ArchFlag)
+        *ArchFlag = "armv5e";
+      return Triple("armv5e-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM_XSCALE:
+      if (ArchFlag)
+        *ArchFlag = "xscale";
+      return Triple("xscale-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM_V6:
+      if (ArchFlag)
+        *ArchFlag = "armv6";
+      return Triple("armv6-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM_V6M:
+      if (McpuDefault)
+        *McpuDefault = "cortex-m0";
+      if (ArchFlag)
+        *ArchFlag = "armv6m";
+      return Triple("armv6m-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM_V7:
+      if (ArchFlag)
+        *ArchFlag = "armv7";
+      return Triple("armv7-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM_V7EM:
+      if (McpuDefault)
+        *McpuDefault = "cortex-m4";
+      if (ArchFlag)
+        *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");
+    case MachO::CPU_SUBTYPE_ARM_V7M:
+      if (McpuDefault)
+        *McpuDefault = "cortex-m3";
+      if (ArchFlag)
+        *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");
+    default:
+      return Triple();
+    }
+  case MachO::CPU_TYPE_ARM64:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_ARM64_ALL:
+      if (McpuDefault)
+        *McpuDefault = "cyclone";
+      if (ArchFlag)
+        *ArchFlag = "arm64";
+      return Triple("arm64-apple-darwin");
+    case MachO::CPU_SUBTYPE_ARM64E:
+      if (McpuDefault)
+        *McpuDefault = "apple-a12";
+      if (ArchFlag)
+        *ArchFlag = "arm64e";
+      return Triple("arm64e-apple-darwin");
+    default:
+      return Triple();
+    }
+  case MachO::CPU_TYPE_ARM64_32:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_ARM64_32_V8:
+      if (McpuDefault)
+        *McpuDefault = "cyclone";
+      if (ArchFlag)
+        *ArchFlag = "arm64_32";
+      return Triple("arm64_32-apple-darwin");
+    default:
+      return Triple();
+    }
+  case MachO::CPU_TYPE_POWERPC:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_POWERPC_ALL:
+      if (ArchFlag)
+        *ArchFlag = "ppc";
+      return Triple("ppc-apple-darwin");
+    default:
+      return Triple();
+    }
+  case MachO::CPU_TYPE_POWERPC64:
+    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+    case MachO::CPU_SUBTYPE_POWERPC_ALL:
+      if (ArchFlag)
+        *ArchFlag = "ppc64";
+      return Triple("ppc64-apple-darwin");
+    default:
+      return Triple();
+    }
+  default:
+    return Triple();
+  }
+}
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index e09dc947c2779..abadb047ef521 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -2685,164 +2685,6 @@ StringRef MachOObjectFile::getFileFormatName() const {
   }
 }
 
-Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType, uint32_t CPUSubType) {
-  switch (CPUType) {
-  case MachO::CPU_TYPE_I386:
-    return Triple::x86;
-  case MachO::CPU_TYPE_X86_64:
-    return Triple::x86_64;
-  case MachO::CPU_TYPE_ARM:
-    return Triple::arm;
-  case MachO::CPU_TYPE_ARM64:
-    return Triple::aarch64;
-  case MachO::CPU_TYPE_ARM64_32:
-    return Triple::aarch64_32;
-  case MachO::CPU_TYPE_POWERPC:
-    return Triple::ppc;
-  case MachO::CPU_TYPE_POWERPC64:
-    return Triple::ppc64;
-  default:
-    return Triple::UnknownArch;
-  }
-}
-
-Triple MachOObjectFile::getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
-                                      const char **McpuDefault,
-                                      const char **ArchFlag) {
-  if (McpuDefault)
-    *McpuDefault = nullptr;
-  if (ArchFlag)
-    *ArchFlag = nullptr;
-
-  switch (CPUType) {
-  case MachO::CPU_TYPE_I386:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_I386_ALL:
-      if (ArchFlag)
-        *ArchFlag = "i386";
-      return Triple("i386-apple-darwin");
-    default:
-      return Triple();
-    }
-  case MachO::CPU_TYPE_X86_64:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_X86_64_ALL:
-      if (ArchFlag)
-        *ArchFlag = "x86_64";
-      return Triple("x86_64-apple-darwin");
-    case MachO::CPU_SUBTYPE_X86_64_H:
-      if (ArchFlag)
-        *ArchFlag = "x86_64h";
-      return Triple("x86_64h-apple-darwin");
-    default:
-      return Triple();
-    }
-  case MachO::CPU_TYPE_ARM:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_ARM_V4T:
-      if (ArchFlag)
-        *ArchFlag = "armv4t";
-      return Triple("armv4t-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM_V5TEJ:
-      if (ArchFlag)
-        *ArchFlag = "armv5e";
-      return Triple("armv5e-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM_XSCALE:
-      if (ArchFlag)
-        *ArchFlag = "xscale";
-      return Triple("xscale-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM_V6:
-      if (ArchFlag)
-        *ArchFlag = "armv6";
-      return Triple("armv6-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM_V6M:
-      if (McpuDefault)
-        *McpuDefault = "cortex-m0";
-      if (ArchFlag)
-        *ArchFlag = "armv6m";
-      return Triple("armv6m-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM_V7:
-      if (ArchFlag)
-        *ArchFlag = "armv7";
-      return Triple("armv7-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM_V7EM:
-      if (McpuDefault)
-        *McpuDefault = "cortex-m4";
-      if (ArchFlag)
-        *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");
-    case MachO::CPU_SUBTYPE_ARM_V7M:
-      if (McpuDefault)
-        *McpuDefault = "cortex-m3";
-      if (ArchFlag)
-        *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");
-    default:
-      return Triple();
-    }
-  case MachO::CPU_TYPE_ARM64:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_ARM64_ALL:
-      if (McpuDefault)
-        *McpuDefault = "cyclone";
-      if (ArchFlag)
-        *ArchFlag = "arm64";
-      return Triple("arm64-apple-darwin");
-    case MachO::CPU_SUBTYPE_ARM64E:
-      if (McpuDefault)
-        *McpuDefault = "apple-a12";
-      if (ArchFlag)
-        *ArchFlag = "arm64e";
-      return Triple("arm64e-apple-darwin");
-    default:
-      return Triple();
-    }
-  case MachO::CPU_TYPE_ARM64_32:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_ARM64_32_V8:
-      if (McpuDefault)
-        *McpuDefault = "cyclone";
-      if (ArchFlag)
-        *ArchFlag = "arm64_32";
-      return Triple("arm64_32-apple-darwin");
-    default:
-      return Triple();
-    }
-  case MachO::CPU_TYPE_POWERPC:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_POWERPC_ALL:
-      if (ArchFlag)
-        *ArchFlag = "ppc";
-      return Triple("ppc-apple-darwin");
-    default:
-      return Triple();
-    }
-  case MachO::CPU_TYPE_POWERPC64:
-    switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
-    case MachO::CPU_SUBTYPE_POWERPC_ALL:
-      if (ArchFlag)
-        *ArchFlag = "ppc64";
-      return Triple("ppc64-apple-darwin");
-    default:
-      return Triple();
-    }
-  default:
-    return Triple();
-  }
-}
-
 Triple MachOObjectFile::getHostArch() {
   return Triple(sys::getDefaultTargetTriple());
 }



More information about the llvm-commits mailing list