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)
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to