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

via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 4 00:09:07 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-binary-utilities

Author: Lang Hames (lhames)

<details>
<summary>Changes</summary>

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.

---
Full diff: https://github.com/llvm/llvm-project/pull/161949.diff


4 Files Affected:

- (modified) llvm/include/llvm/BinaryFormat/MachO.h (+6-3) 
- (modified) llvm/include/llvm/Object/MachO.h (+6-2) 
- (modified) llvm/lib/BinaryFormat/MachO.cpp (+157) 
- (modified) llvm/lib/Object/MachOObjectFile.cpp (-158) 


``````````diff
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());
 }

``````````

</details>


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


More information about the llvm-commits mailing list