jankratochvil added a comment.

In D96778#2576927 <https://reviews.llvm.org/D96778#2576927>, @dblaikie wrote:

> What part of DWZ is specified by DWARFv5?

`DW_*_sup` being used by DWZ with DWARF-4 as `DW_*_GNU_*_alt` (and dwarfstd.org 
proposal 
<https://webcache.googleusercontent.com/search?q=cache:qSMqeKD7ej0J:www.dwarfstd.org/ShowIssue.php%3Fissue%3D120604.1+&cd=2&hl=en&ct=clnk&gl=cz&lr=lang_en>
 having it as `DW_*_alt`) for DWZ common files located in 
`/usr/lib/debug/.dwz/` where each file is for one rpm package sharing DIEs to 
multiple *.debug files of the same rpm package.
That is probably all but I cannot check more as www.dwarfstd.org 
<http://www.dwarfstd.org> is down now.

> (perhaps the original creation of partial units was motivated by DWZ?

Rather DWZ was motivated by partial units IMO.

> Which extensions would those be?

Those `DW_*_alt`/`DW_*_sup` ones.

> At a glance when looking at the small dwz example earlier I didn't notice any 
> DWARF extensions.

This example is not using the DWZ common file (that makes sense only for >=2 
`*.debug` files). Still `DW_TAG_partial_unit`, `DW_AT_import` etc. is used only 
by DWZ and AFAIK no other tool so it needs extra implementation in all the 
tools incl. LLDB.

> I'm not sure I follow the description here - when generating Clang ASTs from 
> some DIE in LLDB, one would still have to potentially pass through multiple 
> CUs to retrieve all the relevant types, especially under any form of LTO - 
> are there particular features of DWZ that make this more/differently 
> problematic?

If you have a reference to DIE then LLDB tries to ask for `DW_AT_language` of 
its CU. But if the DIE is in `DW_TAG_partial_unit` (PU) there is no 
`DW_AT_language` and you do not know which CU did use 
`DW_TAG_imported_unit->DW_AT_import` for that PU. Moreover the 
`DW_TAG_partial_unit` can be imported by two different CUs one having 
`DW_AT_language` as C and the other as C++. That is IMO a bug, each PU should 
have its `DW_AT_language` and then PU with different language would be separate.

Still such format change would not help much as `DWARFASTParser`, 
`CompilerDeclContext` and similar stuff needs to come from the parent CU as 
otherwise LLDB all breaks down when some DIEs (from `DW_AT_partial_unit` 
possibly even from DWZ common file) come from a different AST.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96778/new/

https://reviews.llvm.org/D96778

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

Reply via email to