public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Willgerodt, Felix" <felix.willgerodt@intel.com>
To: Andrew Burgess <aburgess@redhat.com>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: John Baldwin <jhb@FreeBSD.org>
Subject: RE: [PATCHv5 09/11] gdbserver: update target description creation for x86/linux
Date: Mon, 29 Apr 2024 14:35:08 +0000	[thread overview]
Message-ID: <MN2PR11MB4566070607318EE7E669A5E28E1B2@MN2PR11MB4566.namprd11.prod.outlook.com> (raw)
In-Reply-To: <7f0e5aac3e3f52b6119658af5c4e5237811aec56.1714143669.git.aburgess@redhat.com>

> -----Original Message-----
> From: Andrew Burgess <aburgess@redhat.com>
> Sent: Freitag, 26. April 2024 17:02
> To: gdb-patches@sourceware.org
> Cc: Andrew Burgess <aburgess@redhat.com>; Willgerodt, Felix
> <felix.willgerodt@intel.com>; John Baldwin <jhb@FreeBSD.org>
> Subject: [PATCHv5 09/11] gdbserver: update target description creation for
> x86/linux
> 
> This commit is part of a series which aims to share more of the target
> description creation between GDB and gdbserver for x86/Linux.
> 
> After some refactoring earlier in this series the shared
> x86_linux_tdesc_for_tid function was added into nat/x86-linux-tdesc.c.
> However, this function still relies on amd64_linux_read_description
> and i386_linux_read_description which are implemented separately for
> both gdbserver and GDB.  Given that at their core, all these functions
> do is:
> 
>   1. take an xcr0 value as input,
>   2. mask out some feature bits,
>   3. look for a cached pre-generated target description and return it
>      if found,
>   4. if no cached target description is found then call either
>      amd64_create_target_description or
>      i386_create_target_description to create a new target
>      description, which is then added to the cache.  Return the newly
>      created target description.
> 
> The inner functions amd64_create_target_description and
> i386_create_target_description are already shared between GDB and
> gdbserver (in the gdb/arch/ directory), so the only thing that
> the *_read_description functions really do is add the caching layer,
> and it feels like this really could be shared.
> 
> However, we have a small problem.
> 
> On the GDB side we create target descriptions using a different set of
> cpu features than on the gdbserver side!  This means that for the
> exact same target, we might get a different target description when
> using native GDB vs using gdbserver.  This surely feels like a
> mistake, I would expect to get the same target description on each.
> 
> The table below shows the number of possible different target
> descriptions that we can create on the GDB side vs on the gdbserver
> side for each target type:
> 
>         | GDB | gdbserver
>   ------|-----|----------
>   i386  | 64  | 7
>   amd64 | 32  | 7
>   x32   | 16  | 7

I would have somehow expected to have the highest number for 64-bit
CPUs. As it should include 32-bit and x32.
Do you know why that isn't the case and 32-bit has double?
Or is my problem that this is reflecting GDB code, which shares stuff
between amd64 and i386?
Maybe this is also solved with the comments I made in code below.


> So in theory, all I want to do is move the GDB version
> of *_read_description into the arch/ directory and have gdbserver use
> that, then both GDB and gdbserver would be able to create any of the
> possible target descriptions.
> 
> Unfortunately it's a little more complex than that due to the in
> process agent (IPA).
> 
> When the IPA is in use, gdbserver sends a target description index to
> the IPA, and the IPA uses this to find the correct target description
> to use.
> 
> ** START OF AN ASIDE **
> 
> Back in the day I suspect this approach made perfect sense.  However
> since this commit:
> 
>   commit a8806230241d201f808d856eaae4d44088117b0c
>   Date:   Thu Dec 7 17:07:01 2017 +0000
> 
>       Initialize target description early in IPA
> 
> I think passing the index is now more trouble than its worth.
> 
> We used to pass the index, and then use that index to lookup which
> target description to instantiate and use.  However, the above commit
> fixed an issue where we can't call malloc() within (certain parts of)
> the IPA (apparently), so instead we now pre-compute _every_ possible
> target description within the IPA.  The index is now only used to
> lookup which of the (many) pre-computed target descriptions to use.
> 
> It would (I think) have been easier all around if the IPA just
> self-inspected, figured out its own xcr0 value, and used that to
> create the one target description that is required.  So long as the
> xcr0 to target description code is shared (at compile time) with
> gdbserver, then we can be sure that the IPA will derive the same
> target description as gdbserver, and we would avoid all this index
> passing business, which has made this commit so very, very painful.
> 
> ** END OF AN ASIDE **
> 
> Currently then for x86/linux, gdbserver sends a number between 0 and 7
> to the IPA, and the IPA uses this to create a target description.
> 
> However, I am proposing that gdbserver should now create one of (up
> to) 64 different target descriptions for i386, so this 0 to 7 index
> isn't going to be good enough any more (amd64 and x32 have slightly
> fewer possible target descriptions, but still more than 8, so the
> problem is the same).
> 
> For a while I wondered if I was going to have to try and find some
> backward compatible solution for this mess.  But after seeing how
> lightly the IPA is actually documented, I wonder if it is not the case
> that there is a tight coupling between a version of gdbserver and a
> version of the IPA?  At least I'm hoping so.
> 
> In this commit I have thrown out the old IPA target description index
> numbering scheme, and switched to a completely new numbering scheme.
> Instead of the index that is passed being arbitrary, the index is
> instead calculated from the set of cpu features that are present on
> the target.  Within the IPA we can then reverse this logic to recreate
> the xcr0 value based on the index, and from the xcr0 value we can
> choose the correct target description.
> 
> With the gdbserver to IPA numbering scheme issue resolved I have then
> update the gdbserver versions of amd64_linux_read_description and
> i386_linux_read_description so that they create target descriptions
> using the same set of cpu features as GDB itself.
> 
> After this gdbserver should now always come up with the same target
> description as GDB does on any x86/Linux target.
> 
> This commit does not introduce any new code sharing between GDB and
> gdbserver as previous commits in this series have done.  Instead this
> commit is all about bringing GDB and gdbserver into alignment
> functionally so that the next commit(s) can merge the GDB and
> gdbserver versions of these functions.
> 
> Approved-By: John Baldwin <jhb@FreeBSD.org>
> ---
>  gdbserver/linux-amd64-ipa.cc |  43 +----
>  gdbserver/linux-i386-ipa.cc  |  23 +--
>  gdbserver/linux-x86-low.cc   |  15 +-
>  gdbserver/linux-x86-tdesc.cc | 316 +++++++++++++++++++++++++----------
>  gdbserver/linux-x86-tdesc.h  |  49 +++---
>  5 files changed, 278 insertions(+), 168 deletions(-)
> 
> diff --git a/gdbserver/linux-amd64-ipa.cc b/gdbserver/linux-amd64-ipa.cc
> index df5e6aca081..0c80812cc6f 100644
> --- a/gdbserver/linux-amd64-ipa.cc
> +++ b/gdbserver/linux-amd64-ipa.cc
> @@ -164,47 +164,21 @@ supply_static_tracepoint_registers (struct regcache
> *regcache,
> 
>  #endif /* HAVE_UST */
> 
> -#if !defined __ILP32__
> -/* Map the tdesc index to xcr0 mask.  */
> -static uint64_t idx2mask[X86_TDESC_LAST] = {
> -  X86_XSTATE_X87_MASK,
> -  X86_XSTATE_SSE_MASK,
> -  X86_XSTATE_AVX_MASK,
> -  X86_XSTATE_MPX_MASK,
> -  X86_XSTATE_AVX_MPX_MASK,
> -  X86_XSTATE_AVX_AVX512_MASK,
> -  X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
> -};
> -#endif
> -
>  /* Return target_desc to use for IPA, given the tdesc index passed by
>     gdbserver.  */
> 
>  const struct target_desc *
>  get_ipa_tdesc (int idx)
>  {
> -  if (idx >= X86_TDESC_LAST)
> -    {
> -      internal_error ("unknown ipa tdesc index: %d", idx);
> -    }
> +  uint64_t xcr0 = x86_linux_tdesc_idx_to_xcr0 (idx);
> 
>  #if defined __ILP32__
> -  switch (idx)
> -    {
> -    case X86_TDESC_SSE:
> -      return amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
> -    case X86_TDESC_AVX:
> -      return amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
> -    case X86_TDESC_AVX_AVX512:
> -      return amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK,
> true);
> -    default:
> -      break;
> -    }
> +  bool is_x32 = true;
>  #else
> -  return amd64_linux_read_description (idx2mask[idx], false);
> +  bool is_x32 = false;
>  #endif
> 
> -  internal_error ("unknown ipa tdesc index: %d", idx);
> +  return amd64_linux_read_description (xcr0, is_x32);
>  }
> 
>  /* Allocate buffer for the jump pads.  The branch instruction has a
> @@ -272,11 +246,10 @@ void
>  initialize_low_tracepoint (void)
>  {
>  #if defined __ILP32__
> -  amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
> -  amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
> -  amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK, true);
> +  for (auto i = 0; i < x86_linux_x32_tdesc_count (); i++)
> +    amd64_linux_read_description (x86_linux_tdesc_idx_to_xcr0 (i), true);
>  #else
> -  for (auto i = 0; i < X86_TDESC_LAST; i++)
> -    amd64_linux_read_description (idx2mask[i], false);
> +  for (auto i = 0; i < x86_linux_amd64_tdesc_count (); i++)
> +    amd64_linux_read_description (x86_linux_tdesc_idx_to_xcr0 (i), false);

I know this was already here and I know there are different opinions on this.
But to me using auto here (and in similar locations in this patch) is just wrong.
So I would vote for making this a proper type.
But this is a bit of my personal "pet peeve" ;)


>  #endif
>  }
> diff --git a/gdbserver/linux-i386-ipa.cc b/gdbserver/linux-i386-ipa.cc
> index aa346fc9bc3..c1c3152fb04 100644
> --- a/gdbserver/linux-i386-ipa.cc
> +++ b/gdbserver/linux-i386-ipa.cc
> @@ -245,28 +245,15 @@ initialize_fast_tracepoint_trampoline_buffer (void)
>      }
>  }
> 
> -/* Map the tdesc index to xcr0 mask.  */
> -static uint64_t idx2mask[X86_TDESC_LAST] = {
> -  X86_XSTATE_X87_MASK,
> -  X86_XSTATE_SSE_MASK,
> -  X86_XSTATE_AVX_MASK,
> -  X86_XSTATE_MPX_MASK,
> -  X86_XSTATE_AVX_MPX_MASK,
> -  X86_XSTATE_AVX_AVX512_MASK,
> -  X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
> -};
> -
>  /* Return target_desc to use for IPA, given the tdesc index passed by
>     gdbserver.  */
> 
>  const struct target_desc *
>  get_ipa_tdesc (int idx)
>  {
> -  if (idx >= X86_TDESC_LAST)
> -    {
> -      internal_error ("unknown ipa tdesc index: %d", idx);
> -    }
> -  return i386_linux_read_description (idx2mask[idx]);
> +  uint64_t xcr0 = x86_linux_tdesc_idx_to_xcr0 (idx);
> +
> +  return i386_linux_read_description (xcr0);
>  }
> 
>  /* Allocate buffer for the jump pads.  On i386, we can reach an arbitrary
> @@ -288,6 +275,6 @@ void
>  initialize_low_tracepoint (void)
>  {
>    initialize_fast_tracepoint_trampoline_buffer ();
> -  for (auto i = 0; i < X86_TDESC_LAST; i++)
> -    i386_linux_read_description (idx2mask[i]);
> +  for (auto i = 0; i < x86_linux_i386_tdesc_count (); i++)
> +    i386_linux_read_description (x86_linux_tdesc_idx_to_xcr0 (i));
>  }
> diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc
> index 68d2f13537c..6e23a53118b 100644
> --- a/gdbserver/linux-x86-low.cc
> +++ b/gdbserver/linux-x86-low.cc
> @@ -2882,14 +2882,17 @@ x86_target::get_ipa_tdesc_idx ()
>    struct regcache *regcache = get_thread_regcache (current_thread, 0);
>    const struct target_desc *tdesc = regcache->tdesc;
> 
> +  if (!use_xml)
> +    {
> +      if (tdesc == tdesc_i386_linux_no_xml.get ()
>  #ifdef __x86_64__
> -  return amd64_get_ipa_tdesc_idx (tdesc);
> -#endif
> -
> -  if (tdesc == tdesc_i386_linux_no_xml.get ())
> -    return X86_TDESC_SSE;
> +	  || tdesc == tdesc_amd64_linux_no_xml.get ()
> +#endif /* __x86_64__ */
> +	  )
> +	return x86_linux_xcr0_to_tdesc_idx (X86_XSTATE_SSE_MASK);

What happens if neither of the two is true? Do we need to assert this?
Or do we need to just return the X86_XSTATE_SSE_MASK index
without checking, as this can't ever happen?


> +    }
> 
> -  return i386_get_ipa_tdesc_idx (tdesc);
> +  return x86_linux_xcr0_to_tdesc_idx (xcr0_storage);
>  }
> 
>  /* The linux target ops object.  */
> diff --git a/gdbserver/linux-x86-tdesc.cc b/gdbserver/linux-x86-tdesc.cc
> index af3735aa895..5e12526bf17 100644
> --- a/gdbserver/linux-x86-tdesc.cc
> +++ b/gdbserver/linux-x86-tdesc.cc
> @@ -28,96 +28,278 @@
>  #include "x86-tdesc.h"
>  #include "arch/i386-linux-tdesc.h"
> 
> -/* Return the right x86_linux_tdesc index for a given XCR0.  Return
> -   X86_TDESC_LAST if can't find a match.  */
> +/* A structure used to describe a single cpu feature that might, or might
> +   not, be checked for when creating a target description for one of i386,
> +   amd64, or x32.  */
> 
> -static enum x86_linux_tdesc
> -xcr0_to_tdesc_idx (uint64_t xcr0, bool is_x32)
> +struct x86_tdesc_feature {
> +  /* The cpu feature mask.  This is a mask against an xcr0 value.  */
> +  uint64_t feature;

Can we elaborate the comment? Why do we need to mask anything?
Or maybe we can refer to the table below.


> +  /* Is this feature checked when creating an i386 target description.  */
> +  bool is_i386;
> +
> +  /* Is this feature checked when creating an amd64 target description.  */
> +  bool is_amd64;
> +
> +  /* Is this feature checked when creating an x32 target description.  */
> +  bool is_x32;
> +};
> +
> +/* A constant table that describes all of the cpu features that are
> +   checked when building a target description for i386, amd64, or x32.  */
> +

I am missing a bit of elaboration on why we can't only rely on XCR0. And
the table doesn't describe all CPU features that are checked. It just describes
all XSTATE features. There is also segments and orig_rax and in the near future
a new register for CET, which are independent of XSTATE.


> +static constexpr x86_tdesc_feature x86_linux_all_tdesc_features[] = {
> +  /* Feature,           i386,	amd64,	x32.  */
> +  { X86_XSTATE_PKRU,	true,	true, 	true },
> +  { X86_XSTATE_AVX512,	true,	true, 	true },
> +  { X86_XSTATE_AVX,	true,	true, 	true },
> +  { X86_XSTATE_MPX,	true,	true, 	false },
> +  { X86_XSTATE_SSE,	true,	false, 	false },
> +  { X86_XSTATE_X87,	true,	false, 	false }
> +};

I have never looked at IPA code much. But this table looked a bit weird to me.
I get that MPX is not supported for x32. Though MPX is already deprecated and will
be removed once GDB 15 is branched (at least that is the plan).
But why does amd64 not have x87 and SSE? I do see e.g. st0 and xmm0 on amd64.

After digging a bit:
In arch/amd64.c, we call create_feature_i386_64bit_sse() without any check for
SSE in XCR0. And I see that we have st0 in the "core" registers with EAX etc.
But in arch/i386.c it is different, and we add SSE based on X86_XSTATE_SSE.
And while st0 is also in the "core" registers with EAX etc., we only add them based
on X86_XSTATE_X87. To me this looks wrong. Why would CPUs without x87
not add EAX? And even if it isn't for some reason, do we really want to support
such old CPUs? In my view we could just align the two. 

If we would do that, and deprecate MPX, the table looks unnecessary. Or did I miss
something else?

This is a complicated series. Like others I am wondering how many users IPA
really has and if it is worth maintaining. But I have no data. Is it in any distros?


Thanks,
Felix
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  reply	other threads:[~2024-04-29 14:35 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-01 15:28 [PATCH 0/7] x86/Linux Target Description Changes Andrew Burgess
2024-02-01 15:28 ` [PATCH 1/7] gdbserver: convert have_ptrace_getregset to a tribool Andrew Burgess
2024-02-01 15:28 ` [PATCH 2/7] gdb/x86: move reading of cs and ds state into gdb/nat directory Andrew Burgess
2024-02-01 15:28 ` [PATCH 3/7] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-02-01 15:28 ` [PATCH 4/7] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-02-01 15:28 ` [PATCH 5/7] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-02-01 15:28 ` [PATCH 6/7] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-02-01 15:28 ` [PATCH 7/7] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-03-05 17:00 ` [PATCHv2 0/7] x86/Linux Target Description Changes Andrew Burgess
2024-03-05 17:00   ` [PATCHv2 1/7] gdbserver: convert have_ptrace_getregset to a tribool Andrew Burgess
2024-03-05 17:00   ` [PATCHv2 2/7] gdb/x86: move reading of cs and ds state into gdb/nat directory Andrew Burgess
2024-03-05 17:00   ` [PATCHv2 3/7] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-03-05 17:00   ` [PATCHv2 4/7] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-03-05 17:00   ` [PATCHv2 5/7] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-03-05 17:00   ` [PATCHv2 6/7] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-03-19 16:01     ` John Baldwin
2024-03-19 18:34       ` Andrew Burgess
2024-03-21 17:28         ` John Baldwin
2024-03-26 10:01           ` Luis Machado
2024-03-26 15:31             ` Tom Tromey
2024-03-05 17:00   ` [PATCHv2 7/7] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-03-19 16:05   ` [PATCHv2 0/7] x86/Linux Target Description Changes John Baldwin
2024-03-23 16:35   ` [PATCHv3 0/8] " Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 1/8] gdbserver: convert have_ptrace_getregset to a tribool Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 2/8] gdb/x86: move reading of cs and ds state into gdb/nat directory Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 3/8] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 4/8] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 5/8] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 6/8] gdb/arch: assert that X86_XSTATE_MPX is not set for x32 Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 7/8] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-03-23 16:35     ` [PATCHv3 8/8] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-03-26 12:17       ` Andrew Burgess
2024-03-25 17:20     ` [PATCHv3 0/8] x86/Linux Target Description Changes Andrew Burgess
2024-03-25 18:26       ` Simon Marchi
2024-03-26 12:15         ` Andrew Burgess
2024-03-26 13:51           ` H.J. Lu
2024-03-26 14:16             ` H.J. Lu
2024-03-26 16:36       ` Andrew Burgess
2024-03-26 19:03         ` Andrew Burgess
2024-04-05 12:33     ` [PATCHv4 00/10] " Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 01/10] gdbserver/ipa/x86: remove unneeded declarations Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 02/10] gdbserver: convert have_ptrace_getregset to a tribool Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 03/10] gdb/x86: move reading of cs and ds state into gdb/nat directory Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 04/10] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 05/10] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 06/10] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 07/10] gdb/arch: assert that X86_XSTATE_MPX is not set for x32 Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 08/10] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 09/10] gdb: move xcr0 == 0 check into i386_linux_core_read_description Andrew Burgess
2024-04-05 12:33       ` [PATCHv4 10/10] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-04-09 18:37       ` [PATCHv4 00/10] x86/Linux Target Description Changes John Baldwin
2024-04-25 13:35       ` Willgerodt, Felix
2024-04-25 16:06         ` Andrew Burgess
2024-04-26 15:01       ` [PATCHv5 00/11] " Andrew Burgess
2024-04-26 15:01         ` [PATCHv5 01/11] gdbserver/ipa/x86: remove unneeded declarations Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-05-07 15:05             ` Andrew Burgess
2024-05-08  7:49               ` Willgerodt, Felix
2024-04-26 15:01         ` [PATCHv5 02/11] gdbserver: convert have_ptrace_getregset to a tribool Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-05-07 15:28             ` Andrew Burgess
2024-04-26 15:01         ` [PATCHv5 03/11] gdb/x86: move reading of cs and ds state into gdb/nat directory Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-04-26 15:01         ` [PATCHv5 04/11] gdb/x86: move have_ptrace_getfpxregs global " Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-04-26 15:01         ` [PATCHv5 05/11] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-05-07 11:55             ` Luis Machado
2024-05-07 15:43               ` Andrew Burgess
2024-05-07 15:56                 ` Luis Machado
2024-05-08  7:49                 ` Willgerodt, Felix
2024-05-08 13:18                   ` Andrew Burgess
2024-04-26 15:01         ` [PATCHv5 06/11] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-04-26 15:01         ` [PATCHv5 07/11] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-05-07 11:40             ` Andrew Burgess
2024-04-26 15:01         ` [PATCHv5 08/11] gdb/arch: assert that X86_XSTATE_MPX is not set for x32 Andrew Burgess
2024-04-29 14:34           ` Willgerodt, Felix
2024-05-07 16:08             ` Andrew Burgess
2024-04-26 15:01         ` [PATCHv5 09/11] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-04-29 14:35           ` Willgerodt, Felix [this message]
2024-05-07 14:24             ` Andrew Burgess
2024-05-08  7:47               ` Willgerodt, Felix
2024-05-08 13:28                 ` Andrew Burgess
2024-04-26 15:01         ` [PATCHv5 10/11] gdb: move xcr0 == 0 check into i386_linux_core_read_description Andrew Burgess
2024-04-29 14:35           ` Willgerodt, Felix
2024-04-26 15:01         ` [PATCHv5 11/11] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-04-29 14:35           ` Willgerodt, Felix
2024-05-07 14:50             ` Andrew Burgess
2024-05-08  7:49               ` Willgerodt, Felix
2024-05-08 16:09                 ` Andrew Burgess
2024-05-08 16:46         ` [PATCHv6 0/9] x86/Linux Target Description Changes Andrew Burgess
2024-05-08 16:46           ` [PATCHv6 1/9] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-05-08 16:46           ` [PATCHv6 2/9] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-05-08 16:46           ` [PATCHv6 3/9] gdb/x86: move have_ptrace_getfpxregs global into gdb/nat directory Andrew Burgess
2024-05-08 22:52             ` John Baldwin
2024-05-08 16:46           ` [PATCHv6 4/9] gdb/x86: move have_ptrace_getregset " Andrew Burgess
2024-05-08 22:53             ` John Baldwin
2024-05-08 16:46           ` [PATCHv6 5/9] gdb/x86: move reading of cs and ds state " Andrew Burgess
2024-05-08 16:46           ` [PATCHv6 6/9] gdb: move xcr0 == 0 check into i386_linux_core_read_description Andrew Burgess
2024-05-08 22:54             ` John Baldwin
2024-05-08 16:46           ` [PATCHv6 7/9] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-05-08 22:58             ` John Baldwin
2024-05-08 16:46           ` [PATCHv6 8/9] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-05-08 16:46           ` [PATCHv6 9/9] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-05-11 10:08           ` [PATCHv7 0/9] x86/Linux Target Description Changes Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 1/9] gdb/gdbserver: share I386_LINUX_XSAVE_XCR0_OFFSET definition Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 2/9] gdbserver/x86: move no-xml code earlier in x86_linux_read_description Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 3/9] gdb/x86: move have_ptrace_getfpxregs global into gdb/nat directory Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 4/9] gdb: move have_ptrace_getregset declaration " Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 5/9] gdb/x86: move reading of cs and ds state " Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 6/9] gdb: move xcr0 == 0 check into i386_linux_core_read_description Andrew Burgess
2024-05-11 10:08             ` [PATCHv7 7/9] gdb/gdbserver: share some code relating to target description creation Andrew Burgess
2024-05-17 11:59               ` Willgerodt, Felix
2024-05-11 10:08             ` [PATCHv7 8/9] gdbserver: update target description creation for x86/linux Andrew Burgess
2024-05-17 12:00               ` Willgerodt, Felix
2024-05-11 10:08             ` [PATCHv7 9/9] gdb/gdbserver: share x86/linux tdesc caching Andrew Burgess
2024-05-17 12:00               ` Willgerodt, Felix

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=MN2PR11MB4566070607318EE7E669A5E28E1B2@MN2PR11MB4566.namprd11.prod.outlook.com \
    --to=felix.willgerodt@intel.com \
    --cc=aburgess@redhat.com \
    --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).