[Object, MachO] Fixup for r239075: use union to store mach_header and mach_header_64.
authorAlexey Samsonov <vonosmas@gmail.com>
Thu, 4 Jun 2015 22:49:55 +0000 (22:49 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Thu, 4 Jun 2015 22:49:55 +0000 (22:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239110 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/MachO.h
lib/Object/MachOObjectFile.cpp

index 2bfde85c21a47ef3fec197389e9b4b9b854ecca6..6a39e578396f90ba2a51109fbdb96e46d91182b7 100644 (file)
@@ -429,7 +429,10 @@ public:
   }
 
 private:
-  MachO::mach_header_64 Header64;
+  union {
+    MachO::mach_header_64 Header64;
+    MachO::mach_header Header;
+  };
   typedef SmallVector<const char*, 1> SectionList;
   SectionList Sections;
   typedef SmallVector<const char*, 1> LibraryList;
index dc7c56c98ac54b364cc30bdfce91beb4e26195f0..075d959be1d71a52752586eaff1d00eb206fbe87 100644 (file)
@@ -234,10 +234,7 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
   if (is64Bit())
     parseHeader(this, Header64, EC);
   else
-    // First fields of MachO::mach_header_64 are the same as
-    // in MachO::mach_header.
-    parseHeader(this, *reinterpret_cast<MachO::mach_header *>(&this->Header64),
-                EC);
+    parseHeader(this, Header, EC);
   if (EC)
     return;
 
@@ -1251,7 +1248,6 @@ unsigned MachOObjectFile::getArch() const {
 
 Triple MachOObjectFile::getArch(const char **McpuDefault,
                                 Triple *ThumbTriple) const {
-  const auto &Header = getHeader();
   *ThumbTriple = getThumbArch(Header.cputype, Header.cpusubtype, McpuDefault);
   return getArch(Header.cputype, Header.cpusubtype, McpuDefault);
 }
@@ -2186,9 +2182,7 @@ MachOObjectFile::getDice(DataRefImpl Rel) const {
 }
 
 const MachO::mach_header &MachOObjectFile::getHeader() const {
-  // First fields of MachO::mach_header_64 are the same as
-  // in MachO::mach_header.
-  return *reinterpret_cast<const MachO::mach_header *>(&this->Header64);
+  return Header;
 }
 
 const MachO::mach_header_64 &MachOObjectFile::getHeader64() const {