From 27d60c99f70918d4957d0e186e42b224f4ed1d15 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Thu, 4 Jun 2015 22:49:55 +0000 Subject: [PATCH] [Object, MachO] Fixup for r239075: use union to store mach_header and mach_header_64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239110 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/MachO.h | 5 ++++- lib/Object/MachOObjectFile.cpp | 10 ++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/include/llvm/Object/MachO.h b/include/llvm/Object/MachO.h index 2bfde85c21a..6a39e578396 100644 --- a/include/llvm/Object/MachO.h +++ b/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 SectionList; SectionList Sections; typedef SmallVector LibraryList; diff --git a/lib/Object/MachOObjectFile.cpp b/lib/Object/MachOObjectFile.cpp index dc7c56c98ac..075d959be1d 100644 --- a/lib/Object/MachOObjectFile.cpp +++ b/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(&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(&this->Header64); + return Header; } const MachO::mach_header_64 &MachOObjectFile::getHeader64() const {