jankratochvil marked 2 inline comments as done.
jankratochvil added a comment.

There is a `_dwarf` -> `_dwarf_type_units` regression for: `-f 
TestCppTypeLookup.test_namespace_only_dwarf_type_units`

  ./bin/clang -o 1 
../llvm-git/tools/lldb/packages/Python/lldbsuite/test/lang/cpp/type_lookup/main.cpp
 -g -fdebug-types-section;./bin/lldb -o 'settings set 
target.experimental.inject-local-vars false' -o 'target create "./1"' -o 'b 66' 
-o r -o 'p *((in_contains_type *)&i)'

Expected:

  (lldb) p *((in_contains_type *)&i)
  error: use of undeclared identifier 'in_contains_type'
  error: expected expression

Actual:

  (lldb) p *((in_contains_type *)&i)
  (in_contains_type) $0 = (aaa = 123)

I will check it more.



================
Comment at: source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h:65
   typedef std::vector<DWARFUnitSP> CompileUnitColl;
+  typedef std::unordered_map<uint64_t, uint32_t> TypeSignatureMap;
 
----------------
clayborg wrote:
> Use llvm::DenseMap here?
Yes, I agree that is a good idea - changed it (BTW this is your part of the 
patch).


================
Comment at: source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp:797
+DWARFCompileUnit *DWARFUnit::GetAsCompileUnit() {
+  if (GetUnitDIEOnly().Tag() == DW_TAG_compile_unit)
+    return static_cast<DWARFCompileUnit *>(this);
----------------
clayborg wrote:
> Should this just be "if (GetUnitDIEOnly().Tag() != DW_TAG_type_unit)"? 
> Partial units and many others can be top level DIEs.
When you ask then I disagree. Currently `GetAsCompileUnit()` is used only for 
checking `DW_TAG_partial_unit::DW_AT_name` (from D11003) which is never present 
in files by DWZ tool. DWZ tool never puts DIEs referencing any code into 
`DW_TAG_partial_unit` so D11003 should not be needed; although DWZ 
intentionally sometimes uses `DW_TAG_partial_unit::DW_AT_stmt_list` but I 
haven't found when/how it could be useful.
//> many others//
Top level DIEs can be according to DWARF-5 7.5 just `DW_TAG_compile_unit`, 
`DW_TAG_partial_unit` or `DW_TAG_type_unit`.
So personally I would keep `GetAsCompileUnit()` to do what its name exactly 
says.



Repository:
  rLLDB LLDB

https://reviews.llvm.org/D51578



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to