public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "George, Jini Susan" <JiniSusan.George@amd.com>
To: John Baldwin <jhb@FreeBSD.org>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: Felix Willgerodt <felix.willgerodt@intel.com>,
	Felix <felix.willgerodt@intel.com>,
	Simon Marchi <simon.marchi@polymtl.ca>,
	"Balasubrmanian, Vignesh" <Vignesh.Balasubrmanian@amd.com>
Subject: RE: [RFC 00/13] Proposal for a new NT_X86_CPUID core dump note
Date: Tue, 10 Oct 2023 16:30:49 +0000	[thread overview]
Message-ID: <BY5PR12MB496571C5239DB2E749E8BDB290CDA@BY5PR12MB4965.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20231009183617.24862-1-jhb@FreeBSD.org>

[Public]

Thanks for doing this, John. I am yet to go through these patches, but I wanted to let you know that for the Linux kernel, we have a patch for creating the core dump .note section which is being reviewed internally at this point. The patch follows the same structure layout proposed by you here. We would cross check to confirm that the proposed Linux patch modifications are in line with your FreeBSD changes.

Regards,
Jini.

>>-----Original Message-----
>>From: John Baldwin <jhb@FreeBSD.org>
>>Sent: Tuesday, October 10, 2023 12:06 AM
>>To: gdb-patches@sourceware.org
>>Cc: Willgerodt; Felix <felix.willgerodt@intel.com>; George; George, Jini Susan
>><JiniSusan.George@amd.com>; Simon Marchi <simon.marchi@polymtl.ca>
>>Subject: [RFC 00/13] Proposal for a new NT_X86_CPUID core dump note
>>
>>Caution: This message originated from an External Source. Use proper caution
>>when opening attachments, clicking links, or responding.
>>
>>
>>One of the shortcomings of the previous XSAVE patch series is that it depends on
>>heuristics based on the total XSAVE register set size and
>>XCR0 mask to infer layouts of the various register blocks for core dumps.  This
>>series introduces a new x86-specific core dump note intended to supplant these
>>heuristics by storing the raw CPUID leaves describing the XSAVE layout in core
>>dumps.
>>
>>This series proposes a new core dump note, NT_X86_CPUID (0x205), which
>>contains an array of structures.  Each structure describes an invidual CPUID sub-
>>leaf containing both the inputs to CPUID (%eax and %ecx) and the outputs
>>(%eax, %ebx, %ecx, and %edx) in a format roughly matching the follow C
>>structure:
>>
>>struct cpuid_leaf
>>{
>>    uint32_t leaf;
>>    uint32_t subleaf;
>>    uint32_t eax;
>>    uint32_t ebx;
>>    uint32_t ecx;
>>    uint32_t edx;
>>};
>>
>>This format is not XSAVE-specific and implementations could choose to add
>>additional CPUID leaves to this structure if needed in the future.
>>Consumers of this note should lookup the value of required leaves and ignore
>>any unneeded leaves.
>>
>>An alternate approach might be to write out a more XSAVE-specific note that is
>>an array containing the offset and size of each XSAVE region.
>>
>>Note that either approach would enable storing XSAVE notes in the "compact"
>>format at some point in the future.
>>
>>This series adds support for reading/writing the note to binutils as well as suport
>>for parsing and generating the note in GDB.  It also hooks this into both the
>>FreeBSD and Linux x86 architectures in GDB to read the XSAVE layout from this
>>note when present, and to write out a note when generating a core via `gcore'.
>>I've done some limited testing on FreeBSD/amd64 and Linux/x86-64, but it could
>>probably use some more testing on Linux in particular.  (I know Simon has an
>>AMD machine with a layout not handled by the current heuristics for
>>example.)
>>
>>For the gcore side, a new TARGET_OBJECT_X86_CPUID is used to fetch the
>>current note contents from a native target.  There is still one gap even with this
>>patch series which is that if you are connected to a remote target (e.g.
>>gdbserver), we currently do not have a known XSAVE layout to use when writing
>>out a core via `gcore'.  One option that would close this gap would be to extend
>>the remote protocol to permit reading this new object from a debug server.  The
>>remote target could then implement fetching this object and also make use of
>>this object to implement the target::fetch_x86_xsave_layout method which
>>would close that gap.  Another possibility would be to just pick a "known"
>>XSAVE format that matches one of the heuristics.
>>
>>The series is available from git@github.com:bsdjhb/gdb.git on the
>>`nt_x86_cpuid' branch.
>>
>>I also have an implementation of this core dump note available for FreeBSD's
>>kernel, though I won't merge it until we've collectively settled on the format:
>>https://reviews.freebsd.org/D42136
>>
>>Things I have not done and could use help with:
>>
>>- Implementation for the Linux kernel
>>
>>- Coordination with folks from LLDB
>>
>>John Baldwin (13):
>>  binutils: Support for the NT_X86_CPUID core dump note
>>  i387-tdep: Add function to read XSAVE layout from NT_X86_CPUID
>>  gdb: Use NT_X86_CPUID in x86 FreeBSD architectures to read XSAVE
>>    layouts
>>  gdb: Use NT_X86_CPUID in x86 FreeBSD architectures to read XSAVE
>>    layouts
>>  nat/x86-cpuid.h: Remove non-x86 fallbacks
>>  nat/x86-cpuid: Add a function to build the contents of a NT_X86_CPUID
>>    note
>>  x86_elf_make_cpuid_note: Helper routine to build NT_X86_CPUID ELF note
>>  x86-fbsd-nat: Support fetching TARGET_OBJECT_X86_CPUID objects
>>  fbsd-tdep: Export fbsd_make_corefile_notes
>>  {amd64,i386}-fbsd-tdep: Include NT_X86_CPUID notes in core dumps from
>>    gcore
>>  x86-linux-nat: Support fetching TARGET_OBJECT_X86_CPUID objects
>>  linux-tdep: Export linux_make_corefile_notes
>>  {amd64,i386}-linux-tdep: Include NT_X86_CPUID notes in core dumps from
>>    gcore
>>
>> bfd/elf-bfd.h          |   2 +
>> bfd/elf.c              |  35 +++++++++++
>> binutils/readelf.c     |   2 +
>> gdb/amd64-fbsd-tdep.c  |   1 +
>> gdb/amd64-linux-tdep.c |   1 +
>> gdb/configure.nat      |  13 ++--
>> gdb/fbsd-tdep.c        |   5 +-
>> gdb/fbsd-tdep.h        |   7 +++
>> gdb/i386-fbsd-tdep.c   |  18 +++++-
>> gdb/i386-fbsd-tdep.h   |   7 +++
>> gdb/i386-linux-tdep.c  |  18 +++++-
>> gdb/i386-linux-tdep.h  |   7 +++
>> gdb/i387-tdep.c        | 132 +++++++++++++++++++++++++++++++++++++++++
>> gdb/i387-tdep.h        |   8 +++
>> gdb/linux-tdep.c       |   5 +-
>> gdb/linux-tdep.h       |   7 +++
>> gdb/nat/x86-cpuid.c    |  91 ++++++++++++++++++++++++++++
>> gdb/nat/x86-cpuid.h    |  29 +++------
>> gdb/target.h           |   2 +
>> gdb/x86-fbsd-nat.c     |  37 ++++++++++++
>> gdb/x86-fbsd-nat.h     |   9 +++
>> gdb/x86-linux-nat.c    |  37 ++++++++++++
>> gdb/x86-linux-nat.h    |   9 +++
>> gdb/x86-tdep.c         |  22 +++++++
>> gdb/x86-tdep.h         |   9 +++
>> include/elf/common.h   |   2 +
>> 26 files changed, 480 insertions(+), 35 deletions(-)  create mode 100644
>>gdb/nat/x86-cpuid.c
>>
>>--
>>2.41.0


  parent reply	other threads:[~2023-10-10 16:30 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-09 18:36 John Baldwin
2023-10-09 18:36 ` [RFC 01/13] binutils: Support for the " John Baldwin
2023-10-16  9:23   ` Lancelot SIX
2023-10-16 23:23     ` John Baldwin
2023-10-09 18:36 ` [RFC 02/13] i387-tdep: Add function to read XSAVE layout from NT_X86_CPUID John Baldwin
2023-10-12  4:27   ` Simon Marchi
2023-10-16 23:52     ` John Baldwin
2023-10-16  9:17   ` Lancelot SIX
2023-10-17  0:04     ` John Baldwin
2023-10-09 18:36 ` [RFC 03/13] gdb: Use NT_X86_CPUID in x86 FreeBSD architectures to read XSAVE layouts John Baldwin
2023-10-09 18:36 ` [RFC 04/13] " John Baldwin
2023-10-12  4:28   ` Simon Marchi
2023-10-17  0:07     ` John Baldwin
2023-10-09 18:36 ` [RFC 05/13] nat/x86-cpuid.h: Remove non-x86 fallbacks John Baldwin
2023-10-12  4:29   ` Simon Marchi
2023-10-09 18:36 ` [RFC 06/13] nat/x86-cpuid: Add a function to build the contents of a NT_X86_CPUID note John Baldwin
2023-10-12  4:41   ` Simon Marchi
2023-10-17  0:22     ` John Baldwin
2023-10-09 18:36 ` [RFC 07/13] x86_elf_make_cpuid_note: Helper routine to build NT_X86_CPUID ELF note John Baldwin
2023-10-09 18:36 ` [RFC 08/13] x86-fbsd-nat: Support fetching TARGET_OBJECT_X86_CPUID objects John Baldwin
2023-10-09 18:36 ` [RFC 09/13] fbsd-tdep: Export fbsd_make_corefile_notes John Baldwin
2023-10-09 18:36 ` [RFC 10/13] {amd64,i386}-fbsd-tdep: Include NT_X86_CPUID notes in core dumps from gcore John Baldwin
2023-10-16  9:31   ` [RFC 10/13] {amd64, i386}-fbsd-tdep: " Lancelot SIX
2023-10-17  0:26     ` John Baldwin
2023-10-09 18:36 ` [RFC 11/13] x86-linux-nat: Support fetching TARGET_OBJECT_X86_CPUID objects John Baldwin
2023-10-09 18:36 ` [RFC 12/13] linux-tdep: Export linux_make_corefile_notes John Baldwin
2023-10-09 18:36 ` [RFC 13/13] {amd64,i386}-linux-tdep: Include NT_X86_CPUID notes in core dumps from gcore John Baldwin
2023-10-10 16:30 ` George, Jini Susan [this message]
2023-10-12  4:01 ` [RFC 00/13] Proposal for a new NT_X86_CPUID core dump note Simon Marchi
2023-10-12 14:33 ` Simon Marchi
2023-10-12 17:18   ` John Baldwin
2023-10-13  9:38     ` George, Jini Susan
2023-10-17  0:36       ` John Baldwin
2023-10-26 16:18         ` George, Jini Susan
2023-10-27  2:53           ` John Baldwin
2023-10-27 11:11             ` George, Jini Susan
2023-10-31 16:41               ` 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=BY5PR12MB496571C5239DB2E749E8BDB290CDA@BY5PR12MB4965.namprd12.prod.outlook.com \
    --to=jinisusan.george@amd.com \
    --cc=Vignesh.Balasubrmanian@amd.com \
    --cc=felix.willgerodt@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jhb@FreeBSD.org \
    --cc=simon.marchi@polymtl.ca \
    /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).