]> granicus.if.org Git - llvm/commitdiff
[MachO] Finish moving fat header swap functions to MachO.h
authorChris Bieneman <beanz@apple.com>
Wed, 22 Jun 2016 22:19:08 +0000 (22:19 +0000)
committerChris Bieneman <beanz@apple.com>
Wed, 22 Jun 2016 22:19:08 +0000 (22:19 +0000)
This is a follow-up to r273479. At the time I wrote r273479 I didn't connect the dots that the functions I was adding had to exist somewhere. Turns out, they do. This finishes moving the functions to MachO.h.

Existing MachO fat header tests like test/tools/llvm-readobj/Inputs/macho-universal-archive.x86_64.i386 execute this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273502 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/MachO.h
lib/Object/MachOUniversal.cpp

index dd885eaf08361aa6636996c4ab62ee2de19a52e0..9a03722d250ff5fff9d67fca9c1432570b87db01 100644 (file)
@@ -973,6 +973,14 @@ namespace llvm {
       sys::swapByteOrder(mh.align);
     }
 
+    inline void swapStruct(fat_arch_64 &mh) {
+      sys::swapByteOrder(mh.cputype);
+      sys::swapByteOrder(mh.cpusubtype);
+      sys::swapByteOrder(mh.offset);
+      sys::swapByteOrder(mh.size);
+      sys::swapByteOrder(mh.align);
+      sys::swapByteOrder(mh.reserved);
+    }
 
     inline void swapStruct(mach_header &mh) {
       sys::swapByteOrder(mh.magic);
index 8ccf4de50e0941229cbb0d1de6f4ce87bcb67222..b3b0c251c1005934227eb2147f39946ff852cd62 100644 (file)
 using namespace llvm;
 using namespace object;
 
-template<typename T>
-static void SwapStruct(T &Value);
-
-template<>
-void SwapStruct(MachO::fat_header &H) {
-  sys::swapByteOrder(H.magic);
-  sys::swapByteOrder(H.nfat_arch);
-}
-
-template<>
-void SwapStruct(MachO::fat_arch &H) {
-  sys::swapByteOrder(H.cputype);
-  sys::swapByteOrder(H.cpusubtype);
-  sys::swapByteOrder(H.offset);
-  sys::swapByteOrder(H.size);
-  sys::swapByteOrder(H.align);
-}
-
-template<>
-void SwapStruct(MachO::fat_arch_64 &H) {
-  sys::swapByteOrder(H.cputype);
-  sys::swapByteOrder(H.cpusubtype);
-  sys::swapByteOrder(H.offset);
-  sys::swapByteOrder(H.size);
-  sys::swapByteOrder(H.align);
-  sys::swapByteOrder(H.reserved);
-}
-
 template<typename T>
 static T getUniversalBinaryStruct(const char *Ptr) {
   T Res;
   memcpy(&Res, Ptr, sizeof(T));
   // Universal binary headers have big-endian byte order.
   if (sys::IsLittleEndianHost)
-    SwapStruct(Res);
+    swapStruct(Res);
   return Res;
 }