<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From 3b3932ac16c4ce7d21e0801efef9e1c73d4e0c20 Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
Date: Sat, 17 Jan 2015 09:03:43 -0800
Subject: [PATCH 1/4] Set the Mach-O CPU Subtype to ppc7400 when targeting
 Leopard

http://llvm.org/bugs/show_bug.cgi?id=18463

Signed-off-by: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
---
 lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git llvm_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp macports_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
index a405dd70c30..b1b62146d3b 100644
--- llvm_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
+++ macports_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
@@ -201,16 +201,23 @@ public:
 // FIXME: This should be in a separate file.
 namespace {
   class DarwinPPCAsmBackend : public PPCAsmBackend {
+    Triple TheTriple;
   public:
-    DarwinPPCAsmBackend(const Target &amp;T) : PPCAsmBackend(T, support::big) { }
+    DarwinPPCAsmBackend(const Target &amp;T, const Triple &amp;TT) : PPCAsmBackend(T, support::big), TheTriple(TT) { }
 
     std::unique_ptr&lt;MCObjectTargetWriter&gt;
     createObjectTargetWriter() const override {
       bool is64 = getPointerSize() == 8;
+      MachO::CPUSubTypePowerPC CS = MachO::CPU_SUBTYPE_POWERPC_ALL;
+
+      if (TheTriple.isOSDarwin() &amp;&amp; !TheTriple.isMacOSXVersionLT(10,5)) {
+          CS = MachO::CPU_SUBTYPE_POWERPC_7400;
+      }
+
       return createPPCMachObjectWriter(
           /*Is64Bit=*/is64,
           (is64 ? MachO::CPU_TYPE_POWERPC64 : MachO::CPU_TYPE_POWERPC),
-          MachO::CPU_SUBTYPE_POWERPC_ALL);
+          CS);
     }
   };
 
@@ -236,7 +243,7 @@ MCAsmBackend *llvm::createPPCAsmBackend(const Target &amp;T,
                                         const MCTargetOptions &amp;Options) {
   const Triple &amp;TT = STI.getTargetTriple();
   if (TT.isOSDarwin())
-    return new DarwinPPCAsmBackend(T);
+    return new DarwinPPCAsmBackend(T, TT);
 
   uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(TT.getOS());
   bool IsLittleEndian = TT.getArch() == Triple::ppc64le;
-- 
2.17.1 (Apple Git-112)

</pre></body></html>