Error MinimalSymbolDumper::visitSymbolEnd(CVSymbol &Record) { if (RecordBytes) { AutoIndent Indent(P, 7); P.formatBinary("bytes", Record.content(), 0); } P.Unindent(); return Error::success(); }
Error CVSymbolDumperImpl::visitSymbolEnd(CVSymbol &CVR) { if (PrintRecordBytes && ObjDelegate) ObjDelegate->printBinaryBlockWithRelocs("SymData", CVR.content()); W.unindent(); W.startLine() << "}\n"; return Error::success(); }
StringRef llvm::codeview::getSymbolName(CVSymbol Sym) { if (Sym.kind() == SymbolKind::S_CONSTANT) { // S_CONSTANT is preceded by an APSInt, which has a variable length. So we // have to do a full deserialization. BinaryStreamReader Reader(Sym.content(), llvm::support::little); // The container doesn't matter for single records. SymbolRecordMapping Mapping(Reader, CodeViewContainer::ObjectFile); ConstantSym Const(SymbolKind::S_CONSTANT); cantFail(Mapping.visitSymbolBegin(Sym)); cantFail(Mapping.visitKnownRecord(Sym, Const)); cantFail(Mapping.visitSymbolEnd(Sym)); return Const.Name; } int Offset = getSymbolNameOffset(Sym); if (Offset == -1) return StringRef(); StringRef StringData = toStringRef(Sym.content()).drop_front(Offset); return StringData.split('\0').first; }
bool llvm::codeview::discoverTypeIndices(const CVSymbol &Sym, SmallVectorImpl<TiReference> &Refs) { SymbolKind K = Sym.kind(); return ::discoverTypeIndices(Sym.content(), K, Refs); }