diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h --- a/llvm/include/llvm/Object/MachO.h +++ b/llvm/include/llvm/Object/MachO.h @@ -567,7 +567,7 @@ static StringRef guessLibraryShortName(StringRef Name, bool &isFramework, StringRef &Suffix); - static Triple::ArchType getArch(uint32_t CPUType); + static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType); static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType, const char **McpuDefault = nullptr, const char **ArchFlag = nullptr); diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -128,6 +128,10 @@ return O.getHeader().cputype; } +static unsigned getCPUSubType(const MachOObjectFile &O) { + return O.getHeader().cpusubtype; +} + static uint32_t getPlainRelocationAddress(const MachO::any_relocation_info &RE) { return RE.r_word0; @@ -2565,7 +2569,7 @@ } } -Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType) { +Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType, uint32_t CPUSubType) { switch (CPUType) { case MachO::CPU_TYPE_I386: return Triple::x86; @@ -2737,7 +2741,7 @@ } Triple::ArchType MachOObjectFile::getArch() const { - return getArch(getCPUType(*this)); + return getArch(getCPUType(*this), getCPUSubType(*this)); } Triple MachOObjectFile::getArchTriple(const char **McpuDefault) const {