Lines Matching full:record
37 LineIterator(ObjectFile &obj, Record::Kind section_type)
44 LineIterator(ObjectFile &obj, Record::Kind section_type, Bookmark bookmark);
91 Record::Kind section_type,
133 SymbolFileBreakpad::lines(Record::Kind section_type) {
204 // first LINE record.
205 LineIterator It(*m_objfile_sp, Record::Func, data.bookmark),
207 assert(Record::classify(*It) == Record::Func);
208 ++It; // Skip FUNC record.
210 while (It != End && Record::classify(*It) == Record::Inline)
214 auto record = LineRecord::parse(*It);
215 if (record && record->FileNum < m_files->size())
216 spec = (*m_files)[record->FileNum];
245 LineIterator It(*m_objfile_sp, Record::Func, data.bookmark);
246 assert(Record::classify(*It) == Record::Func);
248 if (auto record = FuncRecord::parse(*It)) {
250 func_name.SetValue(ConstString(record->Name));
251 addr_t address = record->Address + base;
258 AddressRanges{AddressRange(func_addr, record->Size)});
307 LineIterator It(*m_objfile_sp, Record::Func, data.bookmark),
309 ++It; // Skip the FUNC record.
311 while (It != End && Record::classify(*It) == Record::Inline) {
312 if (auto record = InlineRecord::parse(*It)) {
313 if (record->InlineNestLevel == 0 ||
314 record->InlineNestLevel <= last_added_nest_level + 1) {
315 last_added_nest_level = record->InlineNestLevel;
316 BlockSP block_sp = blocks[record->InlineNestLevel]->CreateChild(
319 if (record->CallSiteFileNum < m_files->size())
320 callsite_file = (*m_files)[record->CallSiteFileNum];
322 if (record->OriginNum < m_inline_origins->size())
323 name = (*m_inline_origins)[record->OriginNum];
325 Declaration callsite(callsite_file, record->CallSiteLineNum);
329 for (const auto &range : record->Ranges) {
335 if (record->InlineNestLevel + 1 >= blocks.size()) {
338 blocks[record->InlineNestLevel + 1] = block_sp.get();
353 for (llvm::StringRef line : lines(Record::InlineOrigin)) {
354 auto record = InlineOriginRecord::parse(line);
355 if (!record) {
356 LLDB_LOG(log, "Failed to parse: {0}. Skipping record.", line);
360 if (record->Number >= m_inline_origins->size())
361 m_inline_origins->resize(record->Number + 1);
362 (*m_inline_origins)[record->Number] = record->Name;
488 for (llvm::StringRef line : lines(Record::Public)) {
489 if (auto record = PublicRecord::parse(line))
490 add_symbol(record->Address, std::nullopt, record->Name);
492 LLDB_LOG(log, "Failed to parse: {0}. Skipping record.", line);
505 auto record = StackWinRecord::parse(
506 *LineIterator(*m_objfile_sp, Record::StackWin, entry->data));
507 assert(record);
508 return record->ParameterSize;
648 LineIterator It(*m_objfile_sp, Record::StackCFI, bookmark),
652 "Record already parsed successfully in ParseUnwindData!");
669 std::optional<StackCFIRecord> record = StackCFIRecord::parse(*It);
670 if (!record)
672 if (record->Size)
676 row_sp->SetOffset(record->Address - init_record->Address);
677 if (!ParseCFIUnwindRow(record->UnwindRules, resolver, *row_sp))
692 LineIterator It(*m_objfile_sp, Record::StackWin, bookmark);
693 std::optional<StackWinRecord> record = StackWinRecord::parse(*It);
694 assert(record && "Record already parsed successfully in ParseUnwindData!");
702 AddressRange(base + record->RVA, record->CodeSize,
710 postfix::ParseFPOProgram(record->ProgramString, node_alloc);
713 LLDB_LOG(log, "Invalid unwind rule: {0}.", record->ProgramString);
735 row_sp->GetCFAValue().SetRaSearch(record->LocalSize +
736 record->SavedRegisterSize);
740 record->ProgramString);
762 record->ProgramString);
791 for (llvm::StringRef line : lines(Record::File)) {
792 auto record = FileRecord::parse(line);
793 if (!record) {
794 LLDB_LOG(log, "Failed to parse: {0}. Skipping record.", line);
798 if (record->Number >= m_files->size())
799 m_files->resize(record->Number + 1);
800 FileSpec::Style style = FileSpec::GuessPathStyle(record->Name)
802 (*m_files)[record->Number] = FileSpec(record->Name, style);
818 // We shall create one compile unit for each FUNC record. So, count the number
820 for (LineIterator It(*m_objfile_sp, Record::Func), End(*m_objfile_sp);
822 if (auto record = FuncRecord::parse(*It)) {
823 m_cu_data->Append(CompUnitMap::Entry(base + record->Address, record->Size,
826 LLDB_LOG(log, "Failed to parse: {0}. Skipping record.", *It);
854 LineIterator It(*m_objfile_sp, Record::Func, data.bookmark),
856 assert(Record::classify(*It) == Record::Func);
859 if (Record::classify(*It) == Record::Inline)
862 auto record = LineRecord::parse(*It);
863 if (!record)
866 record->Address += base;
868 if (next_addr && *next_addr != record->Address) {
873 line_seq_up.get(), record->Address, record->LineNum, /*column=*/0,
874 map[record->FileNum], /*is_start_of_statement=*/true,
877 next_addr = record->Address + record->Size;
897 for (LineIterator It(*m_objfile_sp, Record::StackCFI), End(*m_objfile_sp);
899 if (auto record = StackCFIRecord::parse(*It)) {
900 if (record->Size)
902 base + record->Address, *record->Size, It.GetBookmark()));
904 LLDB_LOG(log, "Failed to parse: {0}. Skipping record.", *It);
908 for (LineIterator It(*m_objfile_sp, Record::StackWin), End(*m_objfile_sp);
910 if (auto record = StackWinRecord::parse(*It)) {
912 base + record->RVA, record->CodeSize, It.GetBookmark()));
914 LLDB_LOG(log, "Failed to parse: {0}. Skipping record.", *It);