public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 00/14] Share DWARF partial symtabs between objfiles
@ 2020-02-15 16:54 Tom Tromey
  2020-02-15 16:55 ` [PATCH 07/14] Add dwarf2_per_cu_data::index Tom Tromey
                   ` (16 more replies)
  0 siblings, 17 replies; 60+ messages in thread
From: Tom Tromey @ 2020-02-15 16:54 UTC (permalink / raw)
  To: gdb-patches

A long-term goal for multi-inferior debugging has been to "split" an
objfile, so that the bulk of the data can be shared across inferiors.
Although a lot of progress has been made on this front, it has turned
out to be surprisingly difficult to fully implement.

"Recently" (a year or two ago) I realized that we could get most of
the benefits of this split by sharing partial symbol tables.  This is
true because reading partial symbols is the slowest operation that
users see -- in most cases, expanding a full symtab is reasonably
quick.

Implementing this also turned out to be tricky; but unlike the
situation with types and symbols, it was possible to do incrementally.

This series implements this idea for DWARF.  It separates
dwarf2_per_objfile into shareable and unshareable parts; then, when
possible, the object is attached to the BFD.

You can see the difference when timing "add-inferior -exec ./gdb",
after "gdb ./gdb":

Before: Command execution time: 1.667661 (cpu), 1.687607 (wall)
After : Command execution time: 0.150011 (cpu), 0.151292 (wall)

In this series I did not rename dwarf2_per_objfile.  I'd prefer to do
this after landing this series; it seemed like a large, mostly
cosmetic, and yet hard-to-rebase patch.  Also, I wanted to consult
with everyone else about what we ought to call it.

I also didn't attempt to implement this sharing for CTF.  I don't
really know much about CTF; but it seems like it ought to be possible.
(Though I wonder if CTF wouldn't benefit more from simply bypassing
partial symbols entirely.)

Regression tested on x86-64 Fedora 28.  I also did various tests by
hand, and tested it by hand, under valgrind, on a gdb built with
-fdebug-types-section.

Like I mentioned earlier, this is a tricky series, so it would benefit
from careful review.  The main danger is that, if I missed a spot, we
could end up in a situation where gdb will crash in a multi-inferior
scenario.

Tom


^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2020-03-07 20:02 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-15 16:54 [PATCH 00/14] Share DWARF partial symtabs between objfiles Tom Tromey
2020-02-15 16:55 ` [PATCH 07/14] Add dwarf2_per_cu_data::index Tom Tromey
2020-02-18 11:39   ` Luis Machado
2020-02-21 23:36     ` Tom Tromey
2020-02-19  4:36   ` Simon Marchi
2020-02-19  5:31     ` Simon Marchi
2020-02-21 23:41       ` Tom Tromey
2020-02-21 23:41     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 12/14] Fix a memory leak and remove an unused member Tom Tromey
2020-02-15 16:55 ` [PATCH 05/14] Introduce dwarf2_unshareable and move die_type_hash Tom Tromey
2020-02-18 11:23   ` Luis Machado
2020-02-19  4:20   ` Simon Marchi
2020-02-21 22:43     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 01/14] Fix latent bug in dwarf2_find_containing_comp_unit Tom Tromey
2020-02-19  3:42   ` Simon Marchi
2020-02-19 14:08     ` Tom Tromey
2020-02-20  0:11       ` Tom Tromey
2020-02-20  0:12       ` Tom Tromey
2020-02-20 15:44         ` Simon Marchi
2020-02-20 16:50           ` Tom Tromey
2020-03-07 19:12             ` Christian Biesinger
2020-02-15 16:55 ` [PATCH 04/14] Convert IS_TYPE_UNIT_GROUP to method Tom Tromey
2020-02-15 16:55 ` [PATCH 09/14] Add objfile member to DWARF batons Tom Tromey
2020-02-15 16:55 ` [PATCH 14/14] Share DWARF partial symtabs Tom Tromey
2020-02-18 12:26   ` Luis Machado
2020-02-21 23:03     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 13/14] Move signatured_type::type to unshareable object Tom Tromey
2020-02-15 16:55 ` [PATCH 08/14] Remove symtab links from dwarf2_psymtab and dwarf2_per_cu_quick_data Tom Tromey
2020-02-18 11:50   ` Luis Machado
2020-02-19  4:47     ` Simon Marchi
2020-02-22  0:38       ` Tom Tromey
2020-02-22  0:36     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 06/14] Add "objfile" parameter to two partial_symtab methods Tom Tromey
2020-02-18 11:26   ` Luis Machado
2020-02-15 16:55 ` [PATCH 11/14] Split type_unit_group Tom Tromey
2020-02-18 12:08   ` Luis Machado
2020-02-22  0:40     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 10/14] Introduce dwarf2_enter_objfile and use it Tom Tromey
2020-02-18 11:58   ` Luis Machado
2020-02-21 22:54     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 03/14] Introduce dwarf2_per_objfile::obstack Tom Tromey
2020-02-19  4:13   ` Simon Marchi
2020-02-22  0:44     ` Tom Tromey
2020-02-15 16:55 ` [PATCH 02/14] Simplify setting of reading_partial_symbols Tom Tromey
2020-02-17 12:31 ` [PATCH 00/14] Share DWARF partial symtabs between objfiles Luis Machado
2020-02-17 16:59   ` Tom Tromey
2020-02-22 21:50 ` Tom de Vries
2020-02-22 22:01   ` Tom Tromey
2020-02-23  2:37 ` Simon Marchi
2020-02-23 23:58   ` Tom Tromey
2020-02-24  2:52     ` Simon Marchi
2020-02-24  3:07       ` Tom Tromey
2020-02-24  3:22         ` Tom Tromey
2020-02-24 13:42           ` Tom de Vries
2020-02-24 16:00             ` Tom de Vries
2020-02-24 17:29               ` Tom Tromey
2020-02-24 23:15                 ` Tom Tromey
2020-02-24 19:18           ` Simon Marchi
2020-02-24 23:20             ` Tom Tromey
2020-02-24 22:48       ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).