diff options
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/dsymutil/BinaryHolder.cpp | 11 | ||||
-rw-r--r-- | llvm/tools/dsymutil/BinaryHolder.h | 2 | ||||
-rw-r--r-- | llvm/tools/dsymutil/MachODebugMapParser.cpp | 12 | ||||
-rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 4 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 17 | ||||
-rw-r--r-- | llvm/tools/llvm-size/llvm-size.cpp | 4 |
6 files changed, 21 insertions, 29 deletions
diff --git a/llvm/tools/dsymutil/BinaryHolder.cpp b/llvm/tools/dsymutil/BinaryHolder.cpp index 1f789e1628d..7644f01952f 100644 --- a/llvm/tools/dsymutil/BinaryHolder.cpp +++ b/llvm/tools/dsymutil/BinaryHolder.cpp @@ -19,15 +19,6 @@ namespace llvm { namespace dsymutil { -Triple BinaryHolder::getTriple(const object::MachOObjectFile &Obj) { - // If a ThumbTriple is returned, use it instead of the standard - // one. This is because the thumb triple always allows to create a - // target, whereas the non-thumb one might not. - Triple ThumbTriple; - Triple T = Obj.getArch(nullptr, &ThumbTriple); - return ThumbTriple.getArch() ? ThumbTriple : T; -} - static std::vector<MemoryBufferRef> getMachOFatMemoryBuffers(StringRef Filename, MemoryBuffer &Mem, object::MachOUniversalBinary &Fat) { @@ -175,7 +166,7 @@ ErrorOr<const object::ObjectFile &> BinaryHolder::getObjfileForArch(const Triple &T) { for (const auto &Obj : CurrentObjectFiles) { if (const auto *MachO = dyn_cast<object::MachOObjectFile>(Obj.get())) { - if (getTriple(*MachO).str() == T.str()) + if (MachO->getArchTriple().str() == T.str()) return *MachO; } else if (Obj->getArch() == T.getArch()) return *Obj; diff --git a/llvm/tools/dsymutil/BinaryHolder.h b/llvm/tools/dsymutil/BinaryHolder.h index 9d7b4bd8787..d56a39597c2 100644 --- a/llvm/tools/dsymutil/BinaryHolder.h +++ b/llvm/tools/dsymutil/BinaryHolder.h @@ -128,8 +128,6 @@ public: return Err; return cast<ObjectFileType>(*ErrOrObj); } - - static Triple getTriple(const object::MachOObjectFile &Obj); }; } } diff --git a/llvm/tools/dsymutil/MachODebugMapParser.cpp b/llvm/tools/dsymutil/MachODebugMapParser.cpp index 87577610752..0a8c4783930 100644 --- a/llvm/tools/dsymutil/MachODebugMapParser.cpp +++ b/llvm/tools/dsymutil/MachODebugMapParser.cpp @@ -137,8 +137,7 @@ void MachODebugMapParser::switchToNewDebugMapObject(StringRef Filename, } static std::string getArchName(const object::MachOObjectFile &Obj) { - Triple ThumbTriple; - Triple T = Obj.getArch(nullptr, &ThumbTriple); + Triple T = Obj.getArchTriple(); return T.getArchName(); } @@ -146,8 +145,7 @@ std::unique_ptr<DebugMap> MachODebugMapParser::parseOneBinary(const MachOObjectFile &MainBinary, StringRef BinaryPath) { loadMainBinarySymbols(MainBinary); - Result = - make_unique<DebugMap>(BinaryHolder::getTriple(MainBinary), BinaryPath); + Result = make_unique<DebugMap>(MainBinary.getArchTriple(), BinaryPath); MainBinaryStrings = MainBinary.getStringTableData(); for (const SymbolRef &Symbol : MainBinary.symbols()) { const DataRefImpl &DRI = Symbol.getRawDataRefImpl(); @@ -308,9 +306,8 @@ bool MachODebugMapParser::dumpStab() { return false; } - Triple T; for (const auto *Binary : *MainBinOrError) - if (shouldLinkArch(Archs, Binary->getArch(nullptr, &T).getArchName())) + if (shouldLinkArch(Archs, Binary->getArchTriple().getArchName())) dumpOneBinaryStab(*Binary, BinaryPath); return true; @@ -326,9 +323,8 @@ ErrorOr<std::vector<std::unique_ptr<DebugMap>>> MachODebugMapParser::parse() { return Error; std::vector<std::unique_ptr<DebugMap>> Results; - Triple T; for (const auto *Binary : *MainBinOrError) - if (shouldLinkArch(Archs, Binary->getArch(nullptr, &T).getArchName())) + if (shouldLinkArch(Archs, Binary->getArchTriple().getArchName())) Results.push_back(parseOneBinary(*Binary, BinaryPath)); return std::move(Results); diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index f86e758eb08..05ebc44ff83 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -1005,10 +1005,10 @@ static bool checkMachOAndArchFlags(SymbolicFile *O, std::string &Filename) { Triple T; if (MachO->is64Bit()) { H_64 = MachO->MachOObjectFile::getHeader64(); - T = MachOObjectFile::getArch(H_64.cputype, H_64.cpusubtype); + T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype); } else { H = MachO->MachOObjectFile::getHeader(); - T = MachOObjectFile::getArch(H.cputype, H.cpusubtype); + T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype); } if (std::none_of( ArchFlags.begin(), ArchFlags.end(), diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index ecf6b359146..7f256cb58fe 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -142,11 +142,18 @@ static const Target *GetTarget(const MachOObjectFile *MachOObj, const char **McpuDefault, const Target **ThumbTarget) { // Figure out the target triple. + llvm::Triple TT(TripleName); if (TripleName.empty()) { - llvm::Triple TT("unknown-unknown-unknown"); - llvm::Triple ThumbTriple = Triple(); - TT = MachOObj->getArch(McpuDefault, &ThumbTriple); + TT = MachOObj->getArchTriple(McpuDefault); TripleName = TT.str(); + } + + if (TT.getArch() == Triple::arm) { + // We've inferred a 32-bit ARM target from the object file. All MachO CPUs + // that support ARM are also capable of Thumb mode. + llvm::Triple ThumbTriple = TT; + std::string ThumbName = (Twine("thumb") + TT.getArchName().substr(3)).str(); + ThumbTriple.setArchName(ThumbName); ThumbTripleName = ThumbTriple.str(); } @@ -1157,10 +1164,10 @@ static bool checkMachOAndArchFlags(ObjectFile *O, StringRef Filename) { Triple T; if (MachO->is64Bit()) { H_64 = MachO->MachOObjectFile::getHeader64(); - T = MachOObjectFile::getArch(H_64.cputype, H_64.cpusubtype); + T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype); } else { H = MachO->MachOObjectFile::getHeader(); - T = MachOObjectFile::getArch(H.cputype, H.cpusubtype); + T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype); } unsigned i; for (i = 0; i < ArchFlags.size(); ++i) { diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp index 83e75d3039e..1be173bdf54 100644 --- a/llvm/tools/llvm-size/llvm-size.cpp +++ b/llvm/tools/llvm-size/llvm-size.cpp @@ -438,10 +438,10 @@ static bool checkMachOAndArchFlags(ObjectFile *o, StringRef file) { Triple T; if (MachO->is64Bit()) { H_64 = MachO->MachOObjectFile::getHeader64(); - T = MachOObjectFile::getArch(H_64.cputype, H_64.cpusubtype); + T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype); } else { H = MachO->MachOObjectFile::getHeader(); - T = MachOObjectFile::getArch(H.cputype, H.cpusubtype); + T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype); } unsigned i; for (i = 0; i < ArchFlags.size(); ++i) { |