diff options
Diffstat (limited to 'llvm/tools/llvm-objdump')
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index b196170d4f7..c43ccc21181 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -1162,15 +1162,19 @@ static bool checkMachOAndArchFlags(ObjectFile *O, StringRef Filename) { MachO::mach_header H; MachO::mach_header_64 H_64; Triple T; + const char *McpuDefault, *ArchFlag; if (MachO->is64Bit()) { H_64 = MachO->MachOObjectFile::getHeader64(); - T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype); + T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype, + &McpuDefault, &ArchFlag); } else { H = MachO->MachOObjectFile::getHeader(); - T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype); + T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype, + &McpuDefault, &ArchFlag); } + const std::string ArchFlagName(ArchFlag); if (none_of(ArchFlags, [&](const std::string &Name) { - return Name == T.getArchName(); + return Name == ArchFlagName; })) { errs() << "llvm-objdump: " + Filename + ": No architecture specified.\n"; return false; @@ -1419,7 +1423,7 @@ static void printMachOUniversalHeaders(const object::MachOUniversalBinary *UB, } } if (verbose) { - outs() << OFA.getArchTypeName() << "\n"; + outs() << OFA.getArchFlagName() << "\n"; printCPUType(cputype, cpusubtype & ~MachO::CPU_SUBTYPE_MASK); } else { outs() << i << "\n"; @@ -1603,13 +1607,13 @@ void llvm::ParseInputMachO(StringRef Filename) { for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { - if (ArchFlags[i] == I->getArchTypeName()) { + if (ArchFlags[i] == I->getArchFlagName()) { ArchFound = true; Expected<std::unique_ptr<ObjectFile>> ObjOrErr = I->getAsObjectFile(); std::string ArchitectureName = ""; if (ArchFlags.size() > 1) - ArchitectureName = I->getArchTypeName(); + ArchitectureName = I->getArchFlagName(); if (ObjOrErr) { ObjectFile &O = *ObjOrErr.get(); if (MachOObjectFile *MachOOF = dyn_cast<MachOObjectFile>(&O)) @@ -1646,7 +1650,7 @@ void llvm::ParseInputMachO(StringRef Filename) { } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + Filename + " for " + - "architecture " + StringRef(I->getArchTypeName()) + + "architecture " + StringRef(I->getArchFlagName()) + " is not a Mach-O file or an archive file"); } } @@ -1666,7 +1670,7 @@ void llvm::ParseInputMachO(StringRef Filename) { E = UB->end_objects(); I != E; ++I) { if (MachOObjectFile::getHostArch().getArchName() == - I->getArchTypeName()) { + I->getArchFlagName()) { Expected<std::unique_ptr<ObjectFile>> ObjOrErr = I->getAsObjectFile(); std::string ArchiveName; ArchiveName.clear(); @@ -1702,7 +1706,7 @@ void llvm::ParseInputMachO(StringRef Filename) { } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + Filename + " for architecture " + - StringRef(I->getArchTypeName()) + + StringRef(I->getArchFlagName()) + " is not a Mach-O file or an archive file"); } return; @@ -1718,7 +1722,7 @@ void llvm::ParseInputMachO(StringRef Filename) { Expected<std::unique_ptr<ObjectFile>> ObjOrErr = I->getAsObjectFile(); std::string ArchitectureName = ""; if (moreThanOneArch) - ArchitectureName = I->getArchTypeName(); + ArchitectureName = I->getArchFlagName(); if (ObjOrErr) { ObjectFile &Obj = *ObjOrErr.get(); if (MachOObjectFile *MachOOF = dyn_cast<MachOObjectFile>(&Obj)) @@ -1757,7 +1761,7 @@ void llvm::ParseInputMachO(StringRef Filename) { } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + Filename + " for architecture " + - StringRef(I->getArchTypeName()) + + StringRef(I->getArchFlagName()) + " is not a Mach-O file or an archive file"); } } |