diff options
-rw-r--r-- | llvm/include/llvm/Object/MachO.h | 5 | ||||
-rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 10 |
2 files changed, 6 insertions, 9 deletions
diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h index 2bfde85c21a..6a39e578396 100644 --- a/llvm/include/llvm/Object/MachO.h +++ b/llvm/include/llvm/Object/MachO.h @@ -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; diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index dc7c56c98ac..075d959be1d 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -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 { |