/// This main parsing routine tries to open the main binary and if /// successful iterates over the STAB entries. The real parsing is /// done in handleStabSymbolTableEntry. ErrorOr<std::vector<std::unique_ptr<DebugMap>>> MachODebugMapParser::parse() { auto MainBinOrError = MainBinaryHolder.GetFilesAs<MachOObjectFile>(BinaryPath); if (auto Error = MainBinOrError.getError()) return Error; std::vector<std::unique_ptr<DebugMap>> Results; for (const auto *Binary : *MainBinOrError) if (shouldLinkArch(Archs, Binary->getArchTriple().getArchName())) Results.push_back(parseOneBinary(*Binary, BinaryPath)); return std::move(Results); }
bool MachODebugMapParser::dumpStab() { auto MainBinOrError = MainBinaryHolder.GetFilesAs<MachOObjectFile>(BinaryPath); if (auto Error = MainBinOrError.getError()) { llvm::errs() << "Cannot get '" << BinaryPath << "' as MachO file: " << Error.message() << "\n"; return false; } Triple T; for (const auto *Binary : *MainBinOrError) if (shouldLinkArch(Archs, Binary->getArch(nullptr, &T).getArchName())) dumpOneBinaryStab(*Binary, BinaryPath); return true; }