public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: John Baldwin <jhb@FreeBSD.org>, gdb-patches@sourceware.org
Subject: Re: [PATCH 3/5] fbsd-nat: Pass an optional register base to the register set helpers.
Date: Tue, 22 Nov 2022 15:38:30 -0500	[thread overview]
Message-ID: <7fc99741-64d8-f213-ea64-aa401bd42d4c@simark.ca> (raw)
In-Reply-To: <20220708005816.9408-4-jhb@FreeBSD.org>

On 7/7/22 20:58, John Baldwin wrote:
> This is needed to permit using the helpers for register sets with a
> variable base.  In particular regnum needs to be converted into a
> relative register number before passed to regcache_map_supplies.
> ---
>  gdb/fbsd-nat.c | 34 +++++++++++++++++++---------------
>  gdb/fbsd-nat.h | 49 ++++++++++++++++++++++++++++---------------------
>  2 files changed, 47 insertions(+), 36 deletions(-)
> 
> diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
> index 9d7383ac0ab..edcd3fc3ed1 100644
> --- a/gdb/fbsd-nat.c
> +++ b/gdb/fbsd-nat.c
> @@ -1732,14 +1732,15 @@ fbsd_nat_target::supports_disable_randomization ()
>  bool
>  fbsd_nat_target::fetch_register_set (struct regcache *regcache, int regnum,
>  				     int fetch_op, const struct regset *regset,
> -				     void *regs, size_t size)
> +				     int regbase, void *regs, size_t size)
>  {
>    const struct regcache_map_entry *map
>      = (const struct regcache_map_entry *) regset->regmap;
>    pid_t pid = get_ptrace_pid (regcache->ptid ());
>  
> -  if (regnum == -1 || regcache_map_supplies (map, regnum, regcache->arch(),
> -					     size))
> +  if (regnum == -1
> +      || (regnum >= regbase && regcache_map_supplies (map, regnum - regbase,
> +						      regcache->arch(), size)))

My understanding is that it would be an internal error if the caller
passed a regnum that is < regbase.  In order words, should you do:

  gdb_assert (regnum >= regbase);

?

Actually, after reading the following patches, I think the answer is
no.  When requesting a single register, we will still go through all the
fetch functions and we expect them to do nothing if the register is not
theirs.  Leaving the question there in case others wonder about the same
thing.

I was also wondering if it would be better to do the absolute ->
relative conversion in the caller.  All this function knows is the
regset-relative view of things.  In the end it doesn't matter much, it
just moves a condition from here to the callers.  I'm fine with whatever
you prefer.

Approved-By: Simon Marchi <simon.marchi@efficios.com>

Simon

  reply	other threads:[~2022-11-22 20:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-08  0:58 [PATCH 0/5] Improve support for regcache_map_entry with variable register base John Baldwin
2022-07-08  0:58 ` [PATCH 1/5] regcache: Add collect/supply_regset variants that accept a " John Baldwin
2022-11-22 19:56   ` Simon Marchi
2022-11-22 20:18     ` Simon Marchi
2022-11-22 22:32     ` John Baldwin
2022-07-08  0:58 ` [PATCH 2/5] fbsd-nat: Use regset supply/collect methods John Baldwin
2022-11-22 20:20   ` Simon Marchi
2022-07-08  0:58 ` [PATCH 3/5] fbsd-nat: Pass an optional register base to the register set helpers John Baldwin
2022-11-22 20:38   ` Simon Marchi [this message]
2022-11-22 22:16     ` John Baldwin
2022-11-22 22:25       ` John Baldwin
2022-07-08  0:58 ` [PATCH 4/5] arm-fbsd: Use a static regset for the TLS register set John Baldwin
2022-11-22 20:39   ` Simon Marchi
2022-07-08  0:58 ` [PATCH 5/5] aarch64-fbsd: " John Baldwin
2022-11-22 20:40   ` Simon Marchi
2022-07-21 14:53 ` [PATCH 0/5] Improve support for regcache_map_entry with variable register base John Baldwin
2022-08-22 18:11   ` [PING] " John Baldwin
2022-09-20 17:50     ` John Baldwin
2022-10-20 20:26       ` [PING 4] " John Baldwin
2022-11-21 18:21         ` [PING 5] " John Baldwin

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=7fc99741-64d8-f213-ea64-aa401bd42d4c@simark.ca \
    --to=simark@simark.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=jhb@FreeBSD.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).