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 v4 02/13] core: Support fetching TARGET_OBJECT_X86_XSAVE_LAYOUT from architectures.
Date: Mon, 10 Apr 2023 21:49:01 -0400	[thread overview]
Message-ID: <0a1d7dee-3d2f-787a-133b-64fc3e7e2032@simark.ca> (raw)
In-Reply-To: <7678c952-45bc-2085-ff12-1c36622839fa@FreeBSD.org>



On 4/10/23 16:42, John Baldwin wrote:
> On 4/6/23 12:28 PM, Simon Marchi wrote:
>> On 3/17/23 21:08, John Baldwin wrote:
>>> Add gdbarch_core_xfer_x86_xsave_layout to fetch the x86 XSAVE layout
>>> structure from a core file.
>>>
>>> Current OS's do not export the offsets of XSAVE state components in
>>> core dumps, so provide an i387_set_xsave_layout helper function to set
>>> offsets based on known combinations of XCR0 masks and total state
>>> sizes.  Eventually when core dumps do contain this information this
>>> function should only be used as a fall back for older core dumps.
>>
>> Not a big deal, but it's a bit odd to add the i387_set_xsave_layout
>> function here, but not use it.  I could see it being added with the
>> first patch that uses and, and the current patch just adding the
>> gdbarch_core_xfer_x86_xsave_layout gdbarch method + the call in
>> corelow.c.
> 
> Humm, the reason I added it here is that it is part of OS-independent
> infrastructure that will later be used by OS-specific ABIs.  Adding
> this function (or other infrastructure) as part of the commit adding
> FreeBSD amd64/i386 support seemed a bit odd to me.  I wanted it to be
> clear which parts are OS-specific vs not in the history in part so it
> is easier for other OS's to add XSAVE support in the future.

Perfect, makes sense.

>> You can remove `invalid=True`, following 564cddf8edc7 ("gdbarch: make
>> invalid=True the default for all Components").
>>
>> I have yet to see how this is going to be implemented (in subsequent
>> patches), but I wonder if we really need to pass use readbuf / offset /
>> len in this API.  Wouldn't it be possible to pass a pointer or reference
>> to an x86_xsave_layout object, and have the arch fill it?  I understand
>> that this matches the taret_read interface (we have to shoehorn the
>> x86_xsave_layout through that interface), but I don't think it needs to
>> propagate to the gdbarch method.
> 
> Hmm, passing down the readbuf, offset, len fields is consistent with other
> gdbarch methods called from core_target::xfer_partial such as
> gdbarch_core_xfer_shared_libraries and gdbarch_core_xfer_siginfo.
> 
> That said, it would simplify the implementation in the architectures if
> core_target::xfer_partial handled the partial reads and always read the
> full thing from the gdbarch.  In particular unlike the other above methods,
> the thing being read is a fixed size.  I'll make that change as I think
> it will be nicer, thanks.

I looked at these other methods and came to the same conclusion as you.
For gdbarch_core_xfer_siginfo it doesn't really introduce any extra
complexity, because we just pass down the offset/len parameters to
bfd_get_section_contents.  For gdbarch_core_xfer_shared_libraries,
seeing that the sole implementation (windows_core_xfer_shared_libraries)
just re-generates the whole XML string every time, I think we could
simplify its interface as well, making it return just an std::string,
and handle the partial read case in the target.  Not important for what
you're doing, I'm just thinking out loud.

But now it makes me wonder what really belongs as an object in the
xfer_partial interface, versus what belongs as just a regular target
method.  Clearly, the xfer partial interface is good to transfer some
raw data where the transferred size can be smaller than expected.  Like
when you make a read/write syscall.  But if the goal is to transfer a
structure from one side of GDB to the other (like we do with
x86_xsave_layout), wouldn't it be simpler to have a normal target
method that returns that struct?

Simon

  reply	other threads:[~2023-04-11  1:49 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-18  1:08 [PATCH v4 00/13] Handle variable XSAVE layouts John Baldwin
2023-03-18  1:08 ` [PATCH v4 01/13] x86: Add an x86_xsave_layout structure to handle " John Baldwin
2023-03-28 11:35   ` George, Jini Susan
2023-04-10 19:28     ` John Baldwin
2023-04-06 19:09   ` Simon Marchi
2023-04-10 20:03     ` John Baldwin
2023-04-11  1:19       ` Simon Marchi
2023-04-11 14:23     ` Pedro Alves
2023-04-11 16:02       ` John Baldwin
2023-03-18  1:08 ` [PATCH v4 02/13] core: Support fetching TARGET_OBJECT_X86_XSAVE_LAYOUT from architectures John Baldwin
2023-04-06 19:28   ` Simon Marchi
2023-04-10 20:42     ` John Baldwin
2023-04-11  1:49       ` Simon Marchi [this message]
2023-04-11 16:06         ` John Baldwin
2023-04-11 16:21           ` Simon Marchi
2023-04-11 23:59             ` John Baldwin
2023-03-18  1:08 ` [PATCH v4 03/13] nat/x86-cpuid.h: Add x86_cpuid_count wrapper around __get_cpuid_count John Baldwin
2023-04-06 19:33   ` Simon Marchi
2023-04-10 20:49     ` John Baldwin
2023-04-11  1:49       ` Simon Marchi
2023-03-18  1:08 ` [PATCH v4 04/13] x86 nat: Add helper functions to save the XSAVE layout for the host John Baldwin
2023-04-06 19:40   ` Simon Marchi
2023-04-10 21:00     ` John Baldwin
2023-04-11  1:51       ` Simon Marchi
2023-03-18  1:08 ` [PATCH v4 05/13] gdb: Update x86 FreeBSD architectures to support XSAVE layouts John Baldwin
2023-04-06 19:54   ` Simon Marchi
2023-04-10 21:02     ` John Baldwin
2023-04-11  1:55       ` Simon Marchi
2023-03-18  1:08 ` [PATCH v4 06/13] gdb: Support XSAVE layouts for the current host in the FreeBSD x86 targets John Baldwin
2023-04-06 20:18   ` Simon Marchi
2023-04-10 21:27     ` John Baldwin
2023-04-11  2:23       ` Simon Marchi
2023-04-11 16:19         ` John Baldwin
2023-04-11 16:46           ` Simon Marchi
2023-04-11 21:37             ` John Baldwin
2023-04-11 22:35               ` John Baldwin
2023-04-12 14:35                 ` Simon Marchi
2023-03-18  1:08 ` [PATCH v4 07/13] gdb: Update x86 Linux architectures to support XSAVE layouts John Baldwin
2023-04-07  1:43   ` Simon Marchi
2023-04-10 21:29     ` John Baldwin
2023-03-18  1:09 ` [PATCH v4 08/13] gdb: Support XSAVE layouts for the current host in the Linux x86 targets John Baldwin
2023-04-07  1:54   ` Simon Marchi
2023-03-18  1:09 ` [PATCH v4 09/13] gdb: Use x86_xstate_layout to parse the XSAVE extended state area John Baldwin
2023-04-07  2:13   ` Simon Marchi
2023-04-10 21:40     ` John Baldwin
2023-03-18  1:09 ` [PATCH v4 10/13] gdbserver: Add a function to set the XSAVE mask and size John Baldwin
2023-04-12 15:08   ` Simon Marchi
2023-04-27 17:24     ` John Baldwin
2023-03-18  1:09 ` [PATCH v4 11/13] gdbserver: Refactor the legacy region within the xsave struct John Baldwin
2023-04-12 18:34   ` Simon Marchi
2023-04-27 19:51     ` John Baldwin
2023-03-18  1:09 ` [PATCH v4 12/13] gdbserver: Read offsets of the XSAVE extended region via CPUID John Baldwin
2023-04-11 14:46   ` Pedro Alves
2023-04-11 16:25     ` John Baldwin
2023-04-12 19:11   ` Simon Marchi
2023-04-12 21:07     ` John Baldwin
2023-04-13 15:07       ` Simon Marchi
2023-03-18  1:09 ` [PATCH v4 13/13] x86: Remove X86_XSTATE_SIZE and related constants 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=0a1d7dee-3d2f-787a-133b-64fc3e7e2032@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).