[PDB] Support PDB-backed expressions evaluation
authorAleksandr Urakov <aleksandr.urakov@jetbrains.com>
Fri, 30 Nov 2018 07:12:22 +0000 (07:12 +0000)
committerAleksandr Urakov <aleksandr.urakov@jetbrains.com>
Fri, 30 Nov 2018 07:12:22 +0000 (07:12 +0000)
commite0366d1db51d3f8cc5caf13db12532d0a721b027
tree20b85f4998928f6900472cd77949bc42e61a979e
parentb1d014883ccd66659ccf4b8099bf33cbb4853de6
[PDB] Support PDB-backed expressions evaluation

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;
- 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: 347962
12 files changed:
lldb/lit/SymbolFile/PDB/Inputs/ExpressionsTest.cpp [new file with mode: 0644]
lldb/lit/SymbolFile/PDB/Inputs/ExpressionsTest0.script [new file with mode: 0644]
lldb/lit/SymbolFile/PDB/Inputs/ExpressionsTest1.script [new file with mode: 0644]
lldb/lit/SymbolFile/PDB/Inputs/ExpressionsTest2.script [new file with mode: 0644]
lldb/lit/SymbolFile/PDB/expressions.test [new file with mode: 0644]
lldb/source/Expression/IRExecutionUnit.cpp
lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
lldb/source/Plugins/Process/Windows/Common/RegisterContextWindows.cpp
lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp
lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.h
lldb/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp