std::unique_ptr<DebugMap> MachODebugMapParser::parseOneBinary(const MachOObjectFile &MainBinary, StringRef BinaryPath) { loadMainBinarySymbols(MainBinary); Result = make_unique<DebugMap>(MainBinary.getArchTriple(), BinaryPath); MainBinaryStrings = MainBinary.getStringTableData(); for (const SymbolRef &Symbol : MainBinary.symbols()) { const DataRefImpl &DRI = Symbol.getRawDataRefImpl(); if (MainBinary.is64Bit()) handleStabDebugMapEntry(MainBinary.getSymbol64TableEntry(DRI)); else handleStabDebugMapEntry(MainBinary.getSymbolTableEntry(DRI)); } resetParserState(); return std::move(Result); }
void MachODebugMapParser::dumpOneBinaryStab(const MachOObjectFile &MainBinary, StringRef BinaryPath) { loadMainBinarySymbols(MainBinary); MainBinaryStrings = MainBinary.getStringTableData(); raw_ostream &OS(llvm::outs()); dumpSymTabHeader(OS, getArchName(MainBinary)); uint64_t Idx = 0; for (const SymbolRef &Symbol : MainBinary.symbols()) { const DataRefImpl &DRI = Symbol.getRawDataRefImpl(); if (MainBinary.is64Bit()) dumpSymTabEntry(OS, Idx, MainBinary.getSymbol64TableEntry(DRI)); else dumpSymTabEntry(OS, Idx, MainBinary.getSymbolTableEntry(DRI)); Idx++; } OS << "\n\n"; resetParserState(); }