[lldb-dev] Questions about DWARFDebugInfoEntry::Extract and DWARFDebugInfoEntry::FastExtract

Warren.Paul at nokia.com Warren.Paul at nokia.com
Thu Feb 3 12:34:28 PST 2011


I hit an infinite loop in DWARFDebugInfoEntry::FastExtract when consuming some of our sym files containing DW_FORM_indirect attribute forms.  In fixing the problem, I saw DWARFDebugInfoEntry::Extract which does pretty much the same thing (and did not have the bug).  But looking at the call graph, it doesn't look like Extract is called, at least not by any functions that are called themselves (see call graph at the bottom).  It's basically used by Dump and Verify and helpers for those methods.

So the question is, should I get rid of Extract and change everything to use FastExtract, or just fix the problem in FastExtract and leave everything else be?

Thanks,
Warren



DWARFDebugInfoEntry::Extract(SymbolFileDWARF *, const DWARFCompileUnit *, dw_offset_t *)
DWARFDebugInfo::Parse(SymbolFileDWARF *, Callback, void *)
DWARFDebugInfo::Dump(lldb_private::Stream *, SymbolFileDWARF *, unsigned int, unsigned int)
DWARFDebugInfo::Find(const char *, bool, std::vector<unsigned int,std::allocator<unsigned int>> &)
DWARFDebugInfo::Find(lldb_private::RegularExpression &, std::vector<unsigned int,std::allocator<unsigned int>> &)
DWARFDebugInfo::Verify(lldb_private::Stream *, SymbolFileDWARF *)
DWARFDebugInfoEntry::AppendTypeName(SymbolFileDWARF *, const DWARFCompileUnit *, unsigned int, lldb_private::Stream *)
DWARFDebugInfoEntry::AppendTypeName(SymbolFileDWARF *, const DWARFCompileUnit *, unsigned int, lldb_private::Stream *)
DWARFDebugInfoEntry::DumpAttribute(SymbolFileDWARF *, const DWARFCompileUnit *, const lldb_private::DataExtractor &, uint32_t *, lldb_private::Stream *, dw_attr_t, dw_form_t)
DWARFDebugInfoEntry::Dump(SymbolFileDWARF *, const DWARFCompileUnit *, lldb_private::Stream *, uint32_t)
DumpCallback(SymbolFileDWARF *, DWARFCompileUnitSP &, DWARFDebugInfoEntry *, unsigned int, unsigned int, void *) (4 matches)
DWARFDebugInfo::Dump(lldb_private::Stream *, SymbolFileDWARF *, unsigned int, unsigned int)
DWARFDebugInfo::Dump(lldb_private::Stream *, unsigned int, unsigned int)
DWARFDebugInfo::Dump(lldb_private::Stream *, unsigned int, unsigned int)
DWARFDebugInfoEntry::Dump(SymbolFileDWARF *, const DWARFCompileUnit *, lldb_private::Stream *, uint32_t)
DWARFDebugInfoEntry::DumpAncestry(SymbolFileDWARF *, const DWARFCompileUnit *, const DWARFDebugInfoEntry *, lldb_private::Stream *, uint32_t)
DWARFDebugInfoEntry::DumpAncestry(SymbolFileDWARF *, const DWARFCompileUnit *, const DWARFDebugInfoEntry *, lldb_private::Stream *, uint32_t)
DWARFDebugInfoEntry::GetName(SymbolFileDWARF *, const DWARFCompileUnit *, unsigned int, lldb_private::Stream *)
DWARFDebugInfoEntry::DumpAttribute(SymbolFileDWARF *, const DWARFCompileUnit *, const lldb_private::DataExtractor &, uint32_t *, lldb_private::Stream *, dw_attr_t, dw_form_t)
DWARFDebugInfoEntry::Dump(SymbolFileDWARF *, const DWARFCompileUnit *, lldb_private::Stream *, uint32_t)
DumpCallback(SymbolFileDWARF *, DWARFCompileUnitSP &, DWARFDebugInfoEntry *, unsigned int, unsigned int, void *) (4 matches)
DWARFDebugInfo::Dump(lldb_private::Stream *, SymbolFileDWARF *, unsigned int, unsigned int)
DWARFDebugInfo::Dump(lldb_private::Stream *, unsigned int, unsigned int)
DWARFDebugInfo::Dump(lldb_private::Stream *, unsigned int, unsigned int)
DWARFDebugInfoEntry::Dump(SymbolFileDWARF *, const DWARFCompileUnit *, lldb_private::Stream *, uint32_t)
DWARFDebugInfoEntry::DumpAncestry(SymbolFileDWARF *, const DWARFCompileUnit *, const DWARFDebugInfoEntry *, lldb_private::Stream *, uint32_t)
DWARFDebugInfoEntry::DumpAncestry(SymbolFileDWARF *, const DWARFCompileUnit *, const DWARFDebugInfoEntry *, lldb_private::Stream *, uint32_t)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20110203/5f04260f/attachment.html>


More information about the lldb-dev mailing list