}
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;
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;
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);
}
}
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 {