On Mon, 28 Sep 2020 16:51:02 +0200, Jan Kratochvil wrote:
To make DWZ better consumable it needs to have the partial units
separately
parseable. That way they can be shared at IR level and not just at DWARF level
That means:
* DW_TAG_partial_unit should have DW_AT_language.
* DW_TAG_partial_unit must contain only types (struct/class).
Currently they contain for example also static constant variables but when
you parse such independent DW_TAG_partial_unit into which dictionary you
will register such variable? That makes no sense.
Currently DWZ has benefits only with DWZ common file. Without DWZ common files
DWZ produces 1.6% files bigger than -fdebug-types-section. Therefore if the
DWZ common files saving of 3.3% per Fedora distribution size is worth it then
the existing DWZ tool should be dropped anyway as one can use normal
-fdebug-types-section and one can just write a simple tool moving DW_UT_type
units to the DWZ common file and converting DW_AT_signature declarations to
DW_FORM_ref_sup4 and we are done.
I have measured this "a different common file" for DW_UT_type and it brings
18.14% size reduction of what DWZ does. With additional dropping of dead DIEs
+ dropping -fdebug-types-section type declaratins which achieves about 28%
this makes it together 46% of what DWZ reduces possible without those
overcomplicated constructs of DWZ.
Original comparison of plain -fdebug-types-section DWZ makes the Fedora
distribution 3.3% smaller.
-fdebug-types-section with some simple optimizations (just reusing existng
-fdebug-types-section code in consumers + DWZ common file opening in consumers
together with removal of dead DIEs) DWZ is still slightly smaller but already
only by 1.8% of the Fedora distribution size.
Sure my proposal does not expect that few percents matter. I have checked
further possibilities based on a the mail replies here which seem to insist on
any debuginfo size savings.
Jan