diff options
| author | Zachary Turner <zturner@google.com> | 2019-01-02 18:32:50 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2019-01-02 18:32:50 +0000 |
| commit | b3130b4fdf5824ec9b33eaac580a57fa8edd1147 (patch) | |
| tree | 12f719ab52931b2358688f4b7648686c100dc001 /lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h | |
| parent | 8dd7bd2cd7575e125307b2d392d45ecfbe0ac1f4 (diff) | |
| download | bcm5719-llvm-b3130b4fdf5824ec9b33eaac580a57fa8edd1147.tar.gz bcm5719-llvm-b3130b4fdf5824ec9b33eaac580a57fa8edd1147.zip | |
[NativePDB] Fix setting breakpoint by file and line.
There were several problems preventing this from working. The
first is that when the PDB had an absolute path to the main
source file, we would construct an invalid path by prepending the
compilation directory to it anyway. So we needed to check if the
path is already absolute first.
Second, LLDB assumes that the zero'th item in the support file list
is the main compilation unit. We were respecting this requirement,
but LLDB *also* requires that file to appear somewhere in the list
starting from index 1 as well. So the main compilation file should
appear in the support file list twice. And when parsing a line
table, it expects the LineEntry records to be constructed using
the 1-based index. With these two fixes we can now set breakpoints
by file and line using the native PDB reader.
llvm-svn: 350240
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h')
| -rw-r--r-- | lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h index 39abb9ca633..dece19dbb71 100644 --- a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h +++ b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h @@ -104,6 +104,8 @@ public: size_t ParseTypes(const SymbolContext &sc) override; size_t ParseVariablesForContext(const SymbolContext &sc) override; + void AddSymbols(Symtab &symtab) override; + CompilerDecl GetDeclForUID(lldb::user_id_t uid) override; CompilerDeclContext GetDeclContextForUID(lldb::user_id_t uid) override; CompilerDeclContext GetDeclContextContainingUID(lldb::user_id_t uid) override; @@ -116,6 +118,10 @@ public: uint32_t ResolveSymbolContext(const Address &so_addr, lldb::SymbolContextItem resolve_scope, SymbolContext &sc) override; + uint32_t ResolveSymbolContext(const FileSpec &file_spec, uint32_t line, + bool check_inlines, + lldb::SymbolContextItem resolve_scope, + SymbolContextList &sc_list) override; size_t GetTypes(SymbolContextScope *sc_scope, lldb::TypeClass type_mask, TypeList &type_list) override; |

