Re: [PATCH 00/14] Share DWARF partial symtabs between objfiles

Simon Marchi
2020-02-24T19:18:50Z

On 2020-02-23 10:22 p.m., Tom Tromey wrote:
> Tom> Take a look at my branch, t/reorganize-dwarf-code-sharing-3.
> Tom> I rearranged it to move all the "unshared" stuff to the end, so there
> Tom> should be less to fix up (though I see now I neglected to move the baton
> Tom> patch earlier).
>
> I made this change, so now the branch looks like (order is reversed from
> how git send-email would send it):
>
> 0 eeeb07c1120 Share DWARF partial symtabs
> 1 597fab7df48 Move signatured_type::type to unshareable object
> 2 9ec85b37d88 Split type_unit_group
> 3 f4d2c85a250 Introduce dwarf2_enter_objfile and use it
> 4 afcc2a6d028 Remove symtab links from dwarf2_psymtab and dwarf2_per_cu_quick_data
> 5 11fad00951b Introduce dwarf2_unshareable and move die_type_hash
> 6 49fe37ffefb Add objfile member to DWARF batons
> 7 842794fd4d9 Add dwarf2_per_cu_data::index
> 8 cbf63c32179 Fix a memory leak and remove an unused member
> 9 fe38cf467e1 Add "objfile" parameter to two partial_symtab methods
> 10 e0e096e6956 Convert IS_TYPE_UNIT_GROUP to method
> 11 ad71f2eb272 Introduce dwarf2_per_objfile::obstack
> 12 4a127c55a71 Simplify setting of reading_partial_symbols
>
>
> Basically I think switching the sharing would start at patch #5, and
> then parts of patch #0 would be salvaged, but not most of the rest of
> patches #1-#5.

Ok, thanks for doing this.

I don't undersatnd why you say that patches #1-#5 won't be salvaged, I think
they will still be necessary. For example, #1 and #2 are still necessary to
take out objfile-specific parts from dwarf2_per_cu_data, aren't they?

I would just replace patch #4 (with probably a few consecutive patches), and
probably alter patch #5 to maybe change the naming.

Naming-wise, I'm planning to use:

objfile -> dwarf2_per_objfile -> dwarf2_shared_between_objfiles

I find the last one a bit long, although it's clear. I'm open to any suggestions.

I am also thinking of renaming dwarf2_per_cu_data to just dwarf2_per_cu. I think it
would be coherent with dwarf2_per_objfile.

> Also I have another patch here that adds a subclass of partial_symtab
> for DWARF includes. I *think* this solves the need to wrap the
> compunit_symtab pointer in an optional<>, though it remains hard to be
> completely certain. I'll send that sometime soon, I think it could go
> in separately.

I don't really know about that and the current work uses enough of my brain
cycles, so I could take a look, but only once we are done with the current
series (unless you think it impacts the current series).

Simon