public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2 00/13] Make frame_info_ptr automatic
@ 2022-12-14  3:34 Simon Marchi
  2022-12-14  3:34 ` [PATCH v2 01/13] gdb: move type_map_instance to compile/compile.c Simon Marchi
                   ` (15 more replies)
  0 siblings, 16 replies; 28+ messages in thread
From: Simon Marchi @ 2022-12-14  3:34 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

This is v2 of:

  https://inbox.sourceware.org/gdb-patches/20221202180052.212745-1-simon.marchi@polymtl.ca/

The first main change is that I dropped the patch removing the user of
frame_info_ptr at many places, following Tom's comment.  If we end up
trying to reinflate a frame at a moment where it's not possible (because
the frame's id is being computed), we'll hit an assert in
frame_info_ptr.  This is fine, because it indicates some logic problem
in GDB.

The second main change, found after doing the first one, is to fix a bug
with the user-created frame reinflation.  In v1, if we had two
frame_info_ptr wrapping the same user-created frame_info object, they
would each create their own frame_info instance on reinflation.  And
that confused GDB down the line.  There are a few new patches to deal
with that, by adding user-created frames to the frame stash, so they can
be found by frame_info_ptr when reinflating.

At the end of the series, frame_info_ptr::frame_info_ptr (at the end of
the series) accesses some frame_info internals (the frame's id, without
calling get_frame_id), so I decided to move frame_info_ptr to
frame.{c,h} (patch 6).  I think that makes sense anyway, as the logic in
the implementation of frame_info_ptr is tightly coupled to the rest of
the frame stuff.  However, to do so, we need to break some inclusion
cycles.  This is done in the few patches before.  Patches 1 and 2 are
not strictly necessary, but fix oddities I found along the way.

Regression-tested on Ubuntu 22.04 x86-64.

Simon Marchi (13):
  gdb: move type_map_instance to compile/compile.c
  gdb: move compile_instance to compile/compile.h
  gdb: remove language.h include from frame.h
  gdb: move sect_offset and cu_offset to dwarf2/types.h
  gdb: move call site types to call-site.h
  gdb: move frame_info_ptr to frame.{c,h}
  gdb: add frame_id::user_created_p
  gdb: add user-created frames to stash
  gdb: add create_new_frame(frame_id) overload
  gdb: make it possible to restore selected user-created frames
  gdb: make user-created frames reinflatable
  gdb: make frame_info_ptr grab frame level and id on construction
  gdb: make frame_info_ptr auto-reinflatable

 gdb/Makefile.in                          |   2 +-
 gdb/aarch64-tdep.c                       |   1 +
 gdb/amd64-tdep.c                         |   1 +
 gdb/arm-tdep.c                           |   1 +
 gdb/c-lang.c                             |   1 -
 gdb/c-lang.h                             |   2 +
 gdb/compile/compile-c.h                  |   1 +
 gdb/compile/compile-cplus.h              |   1 +
 gdb/compile/compile-internal.h           | 129 ------------
 gdb/compile/compile.c                    |  13 ++
 gdb/compile/compile.h                    | 116 +++++++++++
 gdb/cp-abi.c                             |   1 +
 gdb/cp-support.c                         |   1 +
 gdb/dwarf2/abbrev-cache.h                |   1 -
 gdb/dwarf2/attribute.h                   |   2 +-
 gdb/dwarf2/call-site.h                   | 244 +++++++++++++++++++++++
 gdb/dwarf2/comp-unit-head.h              |   5 +-
 gdb/dwarf2/cooked-index.h                |   2 +-
 gdb/dwarf2/expr.h                        |   2 +-
 gdb/dwarf2/line-header.h                 |   2 -
 gdb/dwarf2/types.h                       |  40 ++++
 gdb/expop.h                              |   1 +
 gdb/f-lang.h                             |   1 +
 gdb/frame-id.h                           |   4 +
 gdb/frame-info.c                         |  65 ------
 gdb/frame-info.h                         | 211 --------------------
 gdb/frame.c                              | 127 ++++++++++--
 gdb/frame.h                              | 206 ++++++++++++++++++-
 gdb/gdbtypes.h                           | 229 ---------------------
 gdb/gnu-v3-abi.c                         |   1 +
 gdb/go-lang.h                            |   1 +
 gdb/infcmd.c                             |   2 -
 gdb/language.c                           |   1 -
 gdb/m2-typeprint.c                       |   1 +
 gdb/mi/mi-cmd-stack.c                    |   2 -
 gdb/ppc-sysv-tdep.c                      |   1 +
 gdb/python/py-disasm.c                   |   1 +
 gdb/python/py-frame.c                    |   1 +
 gdb/stack.c                              |  16 --
 gdb/symtab.c                             |   1 +
 gdb/symtab.h                             |   1 +
 gdb/testsuite/gdb.base/frame-view.c      |  80 ++++++++
 gdb/testsuite/gdb.base/frame-view.exp    | 109 ++++++++++
 gdb/testsuite/gdb.base/frame-view.py     |  41 ++++
 gdb/thread.c                             |   1 +
 gdb/unittests/frame_info_ptr-selftests.c |  76 +++++++
 46 files changed, 1065 insertions(+), 683 deletions(-)
 create mode 100644 gdb/dwarf2/call-site.h
 create mode 100644 gdb/dwarf2/types.h
 delete mode 100644 gdb/frame-info.c
 delete mode 100644 gdb/frame-info.h
 create mode 100644 gdb/testsuite/gdb.base/frame-view.c
 create mode 100644 gdb/testsuite/gdb.base/frame-view.exp
 create mode 100644 gdb/testsuite/gdb.base/frame-view.py
 create mode 100644 gdb/unittests/frame_info_ptr-selftests.c


base-commit: a4b83845ded201e7d46220213d3e38950c30dbb5
-- 
2.38.1


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

end of thread, other threads:[~2023-01-30 16:20 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-14  3:34 [PATCH v2 00/13] Make frame_info_ptr automatic Simon Marchi
2022-12-14  3:34 ` [PATCH v2 01/13] gdb: move type_map_instance to compile/compile.c Simon Marchi
2022-12-14  3:34 ` [PATCH v2 02/13] gdb: move compile_instance to compile/compile.h Simon Marchi
2022-12-14  3:34 ` [PATCH v2 03/13] gdb: remove language.h include from frame.h Simon Marchi
2022-12-14  3:34 ` [PATCH v2 04/13] gdb: move sect_offset and cu_offset to dwarf2/types.h Simon Marchi
2022-12-14  3:34 ` [PATCH v2 05/13] gdb: move call site types to call-site.h Simon Marchi
2022-12-14  3:34 ` [PATCH v2 06/13] gdb: move frame_info_ptr to frame.{c,h} Simon Marchi
2022-12-20 17:01   ` Bruno Larsen
2023-01-03 18:59     ` Simon Marchi
2022-12-14  3:34 ` [PATCH v2 07/13] gdb: add frame_id::user_created_p Simon Marchi
2022-12-14  3:34 ` [PATCH v2 08/13] gdb: add user-created frames to stash Simon Marchi
2022-12-14  3:34 ` [PATCH v2 09/13] gdb: add create_new_frame(frame_id) overload Simon Marchi
2022-12-14  3:34 ` [PATCH v2 10/13] gdb: make it possible to restore selected user-created frames Simon Marchi
2022-12-14  3:34 ` [PATCH v2 11/13] gdb: make user-created frames reinflatable Simon Marchi
2023-01-23 12:57   ` Tom de Vries
2023-01-23 14:34     ` Luis Machado
2023-01-24  3:55       ` Simon Marchi
2023-01-24  8:22         ` Luis Machado
2023-01-25  3:45           ` Simon Marchi
2023-01-30  8:49             ` Luis Machado
2023-01-30 16:20               ` Simon Marchi
2022-12-14  3:34 ` [PATCH v2 12/13] gdb: make frame_info_ptr grab frame level and id on construction Simon Marchi
2022-12-14  3:34 ` [PATCH v2 13/13] gdb: make frame_info_ptr auto-reinflatable Simon Marchi
2022-12-20 16:57 ` [PATCH v2 00/13] Make frame_info_ptr automatic Bruno Larsen
2023-01-03 19:00   ` Simon Marchi
2023-01-03 19:09 ` Simon Marchi
2023-01-18 18:10 ` Tom Tromey
2023-01-19  3:40   ` Simon Marchi

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).