From: Simon Marchi <simon.marchi@efficios.com>
To: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>,
gdb-patches@sourceware.org
Subject: Re: [PATCH v2 02/11] gdbserver: use inheritance to define tracepoint contexts
Date: Mon, 6 Jan 2025 16:46:47 -0500 [thread overview]
Message-ID: <f5fd16bf-1a2c-44d2-b777-73757fd8e6cd@efficios.com> (raw)
In-Reply-To: <20241230-upstream-gdbserver-regcache-v2-2-020a9514fcf0@intel.com>
On 2024-12-30 05:49, Tankut Baris Aktemur wrote:
> Use inheritance in the definition of tracepoint contexts. This is a
> refactoring that aims to improve the code. No behavior should be
> altered.
> ---
> gdbserver/tracepoint.cc | 107 ++++++++++++++++++++++--------------------------
> 1 file changed, 48 insertions(+), 59 deletions(-)
>
> diff --git a/gdbserver/tracepoint.cc b/gdbserver/tracepoint.cc
> index 81104b02c8321fcb4cb247a6166be10ba04aea8c..fc0586a5c5ace6edc1fc72d24511c6f36e97f759 100644
> --- a/gdbserver/tracepoint.cc
> +++ b/gdbserver/tracepoint.cc
> @@ -1274,7 +1274,7 @@ static char *tracing_stop_note;
>
> /* Functions local to this file. */
>
> -/* Base "class" for tracepoint type specific data to be passed down to
> +/* Base class for tracepoint type specific data to be passed down to
> collect_data_at_tracepoint. */
> struct tracepoint_hit_ctx
> {
> @@ -1285,23 +1285,13 @@ struct tracepoint_hit_ctx
>
> /* Fast/jump tracepoint specific data to be passed down to
> collect_data_at_tracepoint. */
> -struct fast_tracepoint_ctx
> +struct fast_tracepoint_ctx : public tracepoint_hit_ctx
> {
> - struct tracepoint_hit_ctx base;
> -
> - struct regcache regcache;
> - int regcache_initted;
> - unsigned char *regspace;
> -
> - unsigned char *regs;
> - struct tracepoint *tpoint;
> -};
> -
> -/* Static tracepoint specific data to be passed down to
> - collect_data_at_tracepoint. */
> -struct static_tracepoint_ctx
> -{
> - struct tracepoint_hit_ctx base;
> + fast_tracepoint_ctx (unsigned char *_regs)
> + : regcache_initted (0), regs (_regs)
- explicit
- It's fine to name the parameter `regs` too
- Initialize `regcache_initted` inline
- I think that `tracepoint_hit_ctx` should have a constructor that
takes the type, instead of each variant initializing the `type`
member
> + {
> + type = fast_tracepoint;
> + }
>
> /* The regcache corresponding to the registers state at the time of
> the tracepoint hit. Initialized lazily, from REGS. */
> @@ -1314,25 +1304,41 @@ struct static_tracepoint_ctx
> unsigned char *regspace;
>
> /* The register buffer as passed on by lttng/ust. */
> - struct registers *regs;
Something seems wrong, this field just disappears in the refactor. It
is only used if HAVE_UST is defined, which never happens nowadays
because it used a version of lttng-ust that has been deprecated for a
loooong time (the 0.x series). So everything in HAVE_UST just bitrots.
It might be possible to update all this code to use lttng-ust 2.x (1.x
never existed), but I don't think it's going to happen unless somebody
specifically asks for it.
I would suggest starting with removing support for UST from gdbserver
and rebasing you series, it will end up making this patch simpler. If
we ever want to resurrect support for UST support and port to 2.x, we
can get the code from the git history.
> + unsigned char *regs;
> +
> + /* The GDB tracepoint matching the probed marker that was "hit". */
> + struct tracepoint *tpoint;
> +};
> +
> +/* Static tracepoint specific data to be passed down to
> + collect_data_at_tracepoint. */
> +struct static_tracepoint_ctx : public fast_tracepoint_ctx
I will have to dig deeper, but I'm not sure it conceptually makes sense
for static_tracepoint_ctx to inherit fast_tracepoint_ctx. Are static
tracepoints always based on fast tracepoints?
(I have to stop here for now.)
Simon
next prev parent reply other threads:[~2025-01-06 21:47 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-28 11:27 [PATCH 00/26] gdbserver: refactor regcache and allow gradually populating Tankut Baris Aktemur via Gdb-patches
2023-02-28 11:27 ` [PATCH 01/26] gdbserver: convert init_register_cache into regcache::initialize Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:12 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 02/26] gdbserver: convert new_register_cache into a regcache constructor Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:19 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 03/26] gdbserver: by-pass regcache to access tdesc only Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:22 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 04/26] gdbserver: boolify and defaultize the 'fetch' parameter of get_thread_regcache Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:24 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 05/26] gdbserver: add a pointer to the owner thread in regcache Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:28 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 06/26] gdbserver: turn part of get_thread_regcache into regcache::fetch Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:48 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 07/26] gdbserver: convert regcache_cpy into regcache::copy_from Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:50 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 08/26] gdbserver: convert free_register_cache into a destructor of regcache Tankut Baris Aktemur via Gdb-patches
2023-12-21 20:57 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 09/26] gdbserver: extract out regcache::invalidate and regcache::discard Tankut Baris Aktemur via Gdb-patches
2023-12-21 21:08 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 10/26] gdbserver: convert registers_to_string into regcache::registers_to_string Tankut Baris Aktemur via Gdb-patches
2023-12-21 21:13 ` Simon Marchi
2023-12-21 21:19 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 11/26] gdbserver: convert registers_from_string into regcache::registers_from_string Tankut Baris Aktemur via Gdb-patches
2023-02-28 11:28 ` [PATCH 12/26] gdbserver: convert supply_regblock to regcache::supply_regblock Tankut Baris Aktemur via Gdb-patches
2023-12-21 21:23 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 13/26] gdbserver: convert register_data into regcache::register_data Tankut Baris Aktemur via Gdb-patches
2023-12-21 21:26 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 14/26] gdbserver: introduce and use regcache::set_register_status Tankut Baris Aktemur via Gdb-patches
2023-12-21 21:30 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 15/26] gdbserver: check for nullptr condition in regcache::get_register_status Tankut Baris Aktemur via Gdb-patches
2023-12-21 21:32 ` Simon Marchi
2023-12-21 21:34 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 16/26] gdbserver: boolify regcache fields Tankut Baris Aktemur via Gdb-patches
2023-12-22 3:20 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 17/26] gdbserver: rename regcache's registers_valid to registers_fetched Tankut Baris Aktemur via Gdb-patches
2023-12-22 3:23 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 18/26] gdbsupport: fix a typo in a comment in common-regcache.h Tankut Baris Aktemur via Gdb-patches
2023-12-22 3:24 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 19/26] gdbserver: fix the declared type of register_status in regcache Tankut Baris Aktemur via Gdb-patches
2023-12-22 3:35 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 20/26] gdbserver: make some regcache fields private Tankut Baris Aktemur via Gdb-patches
2023-12-22 3:39 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 21/26] gdbserver: use REG_UNKNOWN for a regcache's register statuses Tankut Baris Aktemur via Gdb-patches
2023-12-22 4:32 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 22/26] gdbserver: zero-out register values in regcache-discard Tankut Baris Aktemur via Gdb-patches
2023-12-22 4:36 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 23/26] gdbserver: set register statuses in registers_from_string Tankut Baris Aktemur via Gdb-patches
2023-12-22 4:40 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 24/26] gdbserver: return tracked register status in regcache_raw_read_unsigned Tankut Baris Aktemur via Gdb-patches
2023-12-22 4:42 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 25/26] gdbserver: refuse null argument in regcache::supply_regblock Tankut Baris Aktemur via Gdb-patches
2023-12-22 4:54 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 26/26] gdbserver: allow gradually populating and selectively storing a regcache Tankut Baris Aktemur via Gdb-patches
2023-12-22 16:25 ` Simon Marchi
2024-06-28 12:17 ` Aktemur, Tankut Baris
2023-03-07 20:39 ` [PATCH 00/26] gdbserver: refactor regcache and allow gradually populating Tom Tromey
2023-03-13 14:33 ` Aktemur, Tankut Baris via Gdb-patches
2023-03-28 13:42 ` Aktemur, Tankut Baris via Gdb-patches
2023-06-20 12:58 ` Aktemur, Tankut Baris via Gdb-patches
2024-12-17 8:18 ` [PUSHED 0/8] Some gdbserver regcache cleanup Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 1/8] gdbserver: by-pass regcache to access tdesc only Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 2/8] gdbserver: boolify and defaultize the 'fetch' parameter of get_thread_regcache Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 3/8] gdbserver: convert regcache_cpy into regcache::copy_from Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 4/8] gdbserver: check for nullptr condition in regcache::get_register_status Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 5/8] gdbserver: boolify regcache fields Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 6/8] gdbserver: rename regcache's registers_valid to registers_fetched Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 7/8] gdbsupport: fix a typo in a comment in common-regcache.h Tankut Baris Aktemur
2024-12-17 8:18 ` [PUSHED 8/8] gdbserver: return tracked register status in regcache_raw_read_unsigned Tankut Baris Aktemur
2024-12-30 10:49 ` [PATCH v2 00/11] gdbserver: refactor regcache Tankut Baris Aktemur
2024-12-30 10:49 ` [PATCH v2 01/11] gdbserver: dump 'xx...x' in collect_register_as_string for unavailable register Tankut Baris Aktemur
2025-01-06 21:28 ` Simon Marchi
2025-01-09 8:35 ` Aktemur, Tankut Baris
2024-12-30 10:49 ` [PATCH v2 02/11] gdbserver: use inheritance to define tracepoint contexts Tankut Baris Aktemur
2025-01-06 21:46 ` Simon Marchi [this message]
2024-12-30 10:49 ` [PATCH v2 03/11] gdbserver: use inheritance more " Tankut Baris Aktemur
2025-01-07 4:40 ` Simon Marchi
2024-12-30 10:49 ` [PATCH v2 04/11] gdbserver: convert init_register_cache and new_register_cache into constructors Tankut Baris Aktemur
2025-01-07 4:51 ` Simon Marchi
2024-12-30 10:49 ` [PATCH v2 05/11] gdbserver: convert free_register_cache into a destructor of regcache Tankut Baris Aktemur
2025-01-07 4:53 ` Simon Marchi
2025-01-07 4:54 ` Simon Marchi
2024-12-30 10:49 ` [PATCH v2 06/11] gdbserver: use unique_ptr for thread_info's regcache Tankut Baris Aktemur
2024-12-30 10:49 ` [PATCH v2 07/11] gdbserver: introduce and use regcache::set_register_status Tankut Baris Aktemur
2025-01-07 5:01 ` Simon Marchi
2025-01-09 12:49 ` Aktemur, Tankut Baris
2024-12-30 10:49 ` [PATCH v2 08/11] gdbserver: use REG_UNKNOWN for a regcache's register statuses Tankut Baris Aktemur
2025-01-07 5:17 ` Simon Marchi
2024-12-30 10:49 ` [PATCH v2 09/11] gdbserver: define and use regcache::reset Tankut Baris Aktemur
2025-01-07 5:27 ` Simon Marchi
2024-12-30 10:49 ` [PATCH v2 10/11] gdbserver: refactor the definition and uses of supply_regblock Tankut Baris Aktemur
2025-01-07 5:34 ` Simon Marchi
2024-12-30 10:49 ` [PATCH v2 11/11] gdbserver: fix the declared type of register_status in regcache Tankut Baris Aktemur
2025-01-07 5:40 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f5fd16bf-1a2c-44d2-b777-73757fd8e6cd@efficios.com \
--to=simon.marchi@efficios.com \
--cc=gdb-patches@sourceware.org \
--cc=tankut.baris.aktemur@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox