diff options
| author | Greg Clayton <gclayton@apple.com> | 2012-04-24 21:22:41 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2012-04-24 21:22:41 +0000 |
| commit | a8022fa70de20171d95d54d6921d7a32d7108a77 (patch) | |
| tree | afd27119820040a5e5912a60e2b3f22abd5aa76f /lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h | |
| parent | 7af41ccdc478f8bf27694f3d17fa60df4d534fc9 (diff) | |
| download | bcm5719-llvm-a8022fa70de20171d95d54d6921d7a32d7108a77.tar.gz bcm5719-llvm-a8022fa70de20171d95d54d6921d7a32d7108a77.zip | |
<rdar://problem/11291668>
Fixed an issue that would happen when using debug map with DWARF in the .o files where we wouldn't ever track down the actual definition for a type when things were in namespaces. We now serialize the decl context information into an intermediate format which allows us to track down the correct definition for a type regardless of which DWARF symbol file it comes from. We do this by creating a "DWARFDeclContext" object that contains the DW_TAG + name for each item in a decl context which we can then use to veto potential accelerator table matches. For example, the accelerator tables store the basename of the type, so if you have "std::vector<int>", we would end up with an accelerator table entry for the type that contained "vector<int>", which we would then search for using a DWARFDeclContext object that contained:
[0] DW_TAG_class_type "vector<int>"
[1] DW_TAG_namespace "std"
This is currently used to track down forward declarations for things like "class a::b::Foo;".
llvm-svn: 155488
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h')
| -rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h index caa55857765..b9010cdefaa 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h @@ -46,6 +46,7 @@ public: void AddCompileUnit(DWARFCompileUnitSP& cu); uint32_t GetNumCompileUnits(); + bool ContainsCompileUnit (const DWARFCompileUnit *cu) const; DWARFCompileUnit* GetCompileUnitAtIndex(uint32_t idx); DWARFCompileUnitSP GetCompileUnit(dw_offset_t cu_offset, uint32_t* idx_ptr = NULL); DWARFCompileUnitSP GetCompileUnitContainingDIE(dw_offset_t die_offset); |

