[PDB] Support PDB-backed expressions evaluation (+ fix stuck test)
Summary: This patch contains several small fixes, which makes it possible to evaluate expressions on Windows using information from PDB. The changes are: - several sanitize checks; - make IRExecutionUnit::MemoryManager::getSymbolAddress to not return a magic value on a failure, because callers wait 0 in this case; - entry point required to be a file address, not RVA, in the ObjectFilePECOFF; - do not crash on a debuggee second chance exception - it may be an expression evaluation crash. Also fix detection of "crushed" threads in tests; - create parameter declarations for functions in AST to make it possible to call debugee functions from expressions; - relax name searching rules for variables, functions, namespaces and types. Now it works just like in the DWARF plugin; - fix endless recursion in SymbolFilePDB::ParseCompileUnitFunctionForPDBFunc. Reviewers: zturner, asmith, stella.stamenova Reviewed By: stella.stamenova, asmith Tags: #lldb Differential Revision: https://reviews.llvm.org/D53759 llvm-svn: 348136
This commit is contained in:
@@ -817,12 +817,12 @@ lldb_private::Address ObjectFilePECOFF::GetEntryPointAddress() {
|
||||
return m_entry_point_address;
|
||||
|
||||
SectionList *section_list = GetSectionList();
|
||||
addr_t offset = m_coff_header_opt.entry;
|
||||
addr_t file_addr = m_coff_header_opt.entry + m_coff_header_opt.image_base;
|
||||
|
||||
if (!section_list)
|
||||
m_entry_point_address.SetOffset(offset);
|
||||
m_entry_point_address.SetOffset(file_addr);
|
||||
else
|
||||
m_entry_point_address.ResolveAddressUsingFileSections(offset, section_list);
|
||||
m_entry_point_address.ResolveAddressUsingFileSections(file_addr, section_list);
|
||||
return m_entry_point_address;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user