* [PATCH 20/22] [GDBserver] Shorten srv_amd64_linux_xmlfiles
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0 Yao Qi
` (21 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
GDBserver now is able to generate target descriptions from features, so
don't need to remember these target description files.
Note that it should be i386/amd64-avx-avx512-linux.xml instead of
i386/amd64-avx-avx512.xml in $srv_amd64_linux_xmlfiles. This patch
removes it anyway.
gdb/gdbserver:
2017-07-10 Yao Qi <yao.qi@linaro.org>
* configure.srv (srv_amd64_linux_xmlfiles): Remove
i386/amd64-XXX-linux from it.
---
gdb/gdbserver/configure.srv | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index aca11c6..a2c5afe 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -43,7 +43,7 @@ srv_i386_64bit_xmlfiles="i386/64bit-core.xml i386/64bit-segments.xml i386/64bit-
srv_i386_xmlfiles="i386/i386.xml $srv_i386_32bit_xmlfiles"
srv_amd64_xmlfiles="i386/amd64.xml $srv_i386_64bit_xmlfiles"
srv_i386_linux_xmlfiles="i386/32bit-linux.xml $srv_i386_32bit_xmlfiles"
-srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx-avx512.xml i386/amd64-avx-mpx-avx512-pku-linux.xml i386/64bit-linux.xml i386/amd64-mpx-linux.xml i386/amd64-avx-mpx-linux.xml i386/x32-linux.xml i386/x32-avx-linux.xml i386/x32-avx-avx512-linux.xml $srv_i386_64bit_xmlfiles"
+srv_amd64_linux_xmlfiles="i386/64bit-linux.xml $srv_i386_64bit_xmlfiles"
# Linux object files. This is so we don't have to repeat
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
2017-08-21 15:29 ` [PATCH 20/22] [GDBserver] Shorten srv_amd64_linux_xmlfiles Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 16:23 ` John Baldwin
2017-08-21 15:29 ` [PATCH 04/22] Let i386_target_description return tdesc_i386_mmx Yao Qi
` (20 subsequent siblings)
22 siblings, 1 reply; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches; +Cc: jhb
i386fbsd_core_read_xcr0 reads the value of xcr0 from the corefile. If
it fails, returns 0. This makes its caller {i386,amd64}_target_description
has to handle this special value. IMO, i386fbsd_core_read_xcr0 should
return the default xcr0 in case of error.
gdb:
2017-08-21 Yao Qi <yao.qi@linaro.org>
* i386-fbsd-tdep.c (i386fbsd_core_read_xcr0): Return
X86_XSTATE_SSE_MASK instead of 0.
---
gdb/i386-fbsd-tdep.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
index 594b8f6..baca978 100644
--- a/gdb/i386-fbsd-tdep.c
+++ b/gdb/i386-fbsd-tdep.c
@@ -248,14 +248,14 @@ i386fbsd_core_read_xcr0 (bfd *abfd)
{
warning (_("Couldn't read `xcr0' bytes from "
"`.reg-xstate' section in core file."));
- return 0;
+ return X86_XSTATE_SSE_MASK;
}
xcr0 = bfd_get_64 (abfd, contents);
}
}
else
- xcr0 = 0;
+ xcr0 = X86_XSTATE_SSE_MASK;
return xcr0;
}
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0
2017-08-21 15:29 ` [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0 Yao Qi
@ 2017-08-21 16:23 ` John Baldwin
2017-08-21 16:46 ` Yao Qi
0 siblings, 1 reply; 28+ messages in thread
From: John Baldwin @ 2017-08-21 16:23 UTC (permalink / raw)
To: Yao Qi; +Cc: gdb-patches
On Monday, August 21, 2017 04:28:48 PM Yao Qi wrote:
> i386fbsd_core_read_xcr0 reads the value of xcr0 from the corefile. If
> it fails, returns 0. This makes its caller {i386,amd64}_target_description
> has to handle this special value. IMO, i386fbsd_core_read_xcr0 should
> return the default xcr0 in case of error.
>
> gdb:
>
> 2017-08-21 Yao Qi <yao.qi@linaro.org>
>
> * i386-fbsd-tdep.c (i386fbsd_core_read_xcr0): Return
> X86_XSTATE_SSE_MASK instead of 0.
> ---
> gdb/i386-fbsd-tdep.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
> index 594b8f6..baca978 100644
> --- a/gdb/i386-fbsd-tdep.c
> +++ b/gdb/i386-fbsd-tdep.c
> @@ -248,14 +248,14 @@ i386fbsd_core_read_xcr0 (bfd *abfd)
> {
> warning (_("Couldn't read `xcr0' bytes from "
> "`.reg-xstate' section in core file."));
> - return 0;
> + return X86_XSTATE_SSE_MASK;
> }
>
> xcr0 = bfd_get_64 (abfd, contents);
> }
> }
> else
> - xcr0 = 0;
> + xcr0 = X86_XSTATE_SSE_MASK;
>
> return xcr0;
> }
I think this should actually be X86_XSTATE_MMX_MASK. Core dumps on FreeBSD/i386
only include the original 387 FPU state in .reg2, they do not write out SSE state
in a separate note as Linux does.
For i386 native FreeBSD (and probably other *BSD) targets the logic needs to
similarly be a bit more complicated, though I can help. In particular, the
'static int have_ptrace_xmmregs' in i386-bsd-nat.c probably needs to be made
non-static with an extern in 'i386-bsd-nat.h', and i386fbsd_read_description
should try to use PT_GETXMMREGS once to probe it if it isn't set (it can just
fetch the gdb process' registers to test the flag) and then select
X86_XSTATE_SSE_MASK if there is no XSAVE support for PT_GETXMMREGS works,
else use X86_XSTATE_MMX_MASK. Other BSD's don't have a target read description
target method, so only i386-fbsd-nat.c would need to have its method updated.
I could always work on this as a followup.
--
John Baldwin
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0
2017-08-21 16:23 ` John Baldwin
@ 2017-08-21 16:46 ` Yao Qi
2017-08-21 17:00 ` John Baldwin
0 siblings, 1 reply; 28+ messages in thread
From: Yao Qi @ 2017-08-21 16:46 UTC (permalink / raw)
To: John Baldwin; +Cc: gdb-patches
John Baldwin <jhb@freebsd.org> writes:
> I think this should actually be X86_XSTATE_MMX_MASK. Core dumps on FreeBSD/i386
s/X86_XSTATE_MMX_MASK/X86_XSTATE_X87_MASK/ ?
> only include the original 387 FPU state in .reg2, they do not write
> out SSE state
> in a separate note as Linux does.
>
FAOD, the existing code (without my patches) get SSE target description
tdesc_i386 in default. If we should use MMX target description
tdesc_i386_mmx in this case, we can change it after my patch #4, in
which i386_target_description returns tdesc_i386_mmx for X86_XSTATE_X87_MASK.
> For i386 native FreeBSD (and probably other *BSD) targets the logic needs to
> similarly be a bit more complicated, though I can help. In particular, the
> 'static int have_ptrace_xmmregs' in i386-bsd-nat.c probably needs to be made
> non-static with an extern in 'i386-bsd-nat.h', and i386fbsd_read_description
> should try to use PT_GETXMMREGS once to probe it if it isn't set (it can just
> fetch the gdb process' registers to test the flag) and then select
> X86_XSTATE_SSE_MASK if there is no XSAVE support for PT_GETXMMREGS works,
> else use X86_XSTATE_MMX_MASK. Other BSD's don't have a target read description
> target method, so only i386-fbsd-nat.c would need to have its method updated.
> I could always work on this as a followup.
To be clear, can I commit this patch as-is?
--
Yao (齐尧)
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0
2017-08-21 16:46 ` Yao Qi
@ 2017-08-21 17:00 ` John Baldwin
0 siblings, 0 replies; 28+ messages in thread
From: John Baldwin @ 2017-08-21 17:00 UTC (permalink / raw)
To: Yao Qi; +Cc: gdb-patches
On Monday, August 21, 2017 05:45:50 PM Yao Qi wrote:
> John Baldwin <jhb@freebsd.org> writes:
>
> > I think this should actually be X86_XSTATE_MMX_MASK. Core dumps on FreeBSD/i386
>
> s/X86_XSTATE_MMX_MASK/X86_XSTATE_X87_MASK/ ?
Yes.
> > only include the original 387 FPU state in .reg2, they do not write
> > out SSE state
> > in a separate note as Linux does.
> >
>
> FAOD, the existing code (without my patches) get SSE target description
> tdesc_i386 in default. If we should use MMX target description
> tdesc_i386_mmx in this case, we can change it after my patch #4, in
> which i386_target_description returns tdesc_i386_mmx for X86_XSTATE_X87_MASK.
Yes, this is an old bug. I think it is fine to just reorder this after patch 4
so that returning X87_MASK will do the right thing.
> > For i386 native FreeBSD (and probably other *BSD) targets the logic needs to
> > similarly be a bit more complicated, though I can help. In particular, the
> > 'static int have_ptrace_xmmregs' in i386-bsd-nat.c probably needs to be made
> > non-static with an extern in 'i386-bsd-nat.h', and i386fbsd_read_description
> > should try to use PT_GETXMMREGS once to probe it if it isn't set (it can just
> > fetch the gdb process' registers to test the flag) and then select
> > X86_XSTATE_SSE_MASK if there is no XSAVE support for PT_GETXMMREGS works,
> > else use X86_XSTATE_MMX_MASK. Other BSD's don't have a target read description
> > target method, so only i386-fbsd-nat.c would need to have its method updated.
> > I could always work on this as a followup.
>
> To be clear, can I commit this patch as-is?
Yes.
--
John Baldwin
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 04/22] Let i386_target_description return tdesc_i386_mmx
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
2017-08-21 15:29 ` [PATCH 20/22] [GDBserver] Shorten srv_amd64_linux_xmlfiles Yao Qi
2017-08-21 15:29 ` [PATCH 03/22] Return X86_XSTATE_SSE_MASK instead of 0 in i386fbsd_core_read_xcr0 Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 01/22] Use amd64_target_description to get tdesc_amd64 Yao Qi
` (19 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches; +Cc: eliz
This patch remove the usage of tdesc_i386_mmx in i386-go32-tdep.c, and use
i386_target_description to get it instead.
gdb:
2017-08-21 Yao Qi <yao.qi@linaro.org>
* i386-go32-tdep.c: Include x86-xstate.h.
(i386_go32_init_abi): Call i386_target_description.
* i386-tdep.c (i386_target_description): Return tdesc_i386_mmx
if xcr0 is X86_XSTATE_X87_MASK.
* i386-tdep.h (tdesc_i386): Remove the declaration.
(tdesc_i386_mmx): Likewise.
---
gdb/i386-go32-tdep.c | 3 ++-
gdb/i386-tdep.c | 4 ++++
gdb/i386-tdep.h | 3 ---
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/gdb/i386-go32-tdep.c b/gdb/i386-go32-tdep.c
index 5bd4857..6778e52 100644
--- a/gdb/i386-go32-tdep.c
+++ b/gdb/i386-go32-tdep.c
@@ -19,6 +19,7 @@
#include "defs.h"
#include "i386-tdep.h"
+#include "x86-xstate.h"
#include "target-descriptions.h"
#include "osabi.h"
@@ -34,7 +35,7 @@ i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* DJGPP does not support the SSE registers. */
if (!tdesc_has_registers (info.target_desc))
- tdep->tdesc = tdesc_i386_mmx;
+ tdep->tdesc = i386_target_description (X86_XSTATE_X87_MASK);
/* Native compiler is GCC, which uses the SVR4 register numbering
even in COFF and STABS. See the comment in i386_gdbarch_init,
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 9d0dd3d..d162e92 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -8730,6 +8730,10 @@ i386_target_description (uint64_t xcr0)
return tdesc_i386_mpx;
case X86_XSTATE_AVX_MASK:
return tdesc_i386_avx;
+ case X86_XSTATE_SSE_MASK:
+ return tdesc_i386;
+ case X86_XSTATE_X87_MASK:
+ return tdesc_i386_mmx;
default:
return tdesc_i386;
}
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index 1ce89fc..99b89e7 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -339,9 +339,6 @@ enum record_i386_regnum
/* Size of the largest register. */
#define I386_MAX_REGISTER_SIZE 64
-extern struct target_desc *tdesc_i386;
-extern struct target_desc *tdesc_i386_mmx;
-
/* Types for i386-specific registers. */
extern struct type *i387_ext_type (struct gdbarch *gdbarch);
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 01/22] Use amd64_target_description to get tdesc_amd64
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (2 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 04/22] Let i386_target_description return tdesc_i386_mmx Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 15/22] Update comments in amd64_linux_core_read_description Yao Qi
` (18 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches; +Cc: jhb
This patch changes amd64-*-tdep.c files to use function
amd64_target_description to get the right target description rather than
use the variable tdesd_amd64.
gdb:
2017-08-18 Yao Qi <yao.qi@linaro.org>
* amd64-darwin-tdep.c: Include "x86-xstate.h".
(x86_darwin_init_abi_64): Call amd64_target_description.
* amd64-dicos-tdep.c: Likewise.
* amd64-fbsd-nat.c: Likewise.
* amd64-fbsd-tdep.c: Likewise.
* amd64-nbsd-tdep.c: Likewise.
* amd64-obsd-tdep.c: Likewise.
* amd64-sol2-tdep.c: Likewise.
* amd64-windows-tdep.c: Likewise.
* amd64-tdep.h (tdesc_amd64): Remove the declaration.
---
gdb/amd64-darwin-tdep.c | 4 +++-
gdb/amd64-dicos-tdep.c | 4 +++-
gdb/amd64-fbsd-nat.c | 2 +-
gdb/amd64-fbsd-tdep.c | 3 ++-
gdb/amd64-nbsd-tdep.c | 4 +++-
gdb/amd64-obsd-tdep.c | 4 +++-
gdb/amd64-sol2-tdep.c | 4 +++-
gdb/amd64-tdep.h | 2 --
gdb/amd64-windows-tdep.c | 4 +++-
9 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/gdb/amd64-darwin-tdep.c b/gdb/amd64-darwin-tdep.c
index be26d9e..81dba82 100644
--- a/gdb/amd64-darwin-tdep.c
+++ b/gdb/amd64-darwin-tdep.c
@@ -29,6 +29,7 @@
#include "objfiles.h"
#include "i387-tdep.h"
+#include "x86-xstate.h"
#include "amd64-tdep.h"
#include "osabi.h"
#include "ui-out.h"
@@ -99,7 +100,8 @@ x86_darwin_init_abi_64 (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
tdep->struct_return = reg_struct_return;
diff --git a/gdb/amd64-dicos-tdep.c b/gdb/amd64-dicos-tdep.c
index 7bdb167..d319dd9 100644
--- a/gdb/amd64-dicos-tdep.c
+++ b/gdb/amd64-dicos-tdep.c
@@ -20,12 +20,14 @@
#include "defs.h"
#include "osabi.h"
#include "amd64-tdep.h"
+#include "x86-xstate.h"
#include "dicos-tdep.h"
static void
amd64_dicos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
dicos_init_abi (gdbarch);
}
diff --git a/gdb/amd64-fbsd-nat.c b/gdb/amd64-fbsd-nat.c
index 1fe0d56..f3ddbdd 100644
--- a/gdb/amd64-fbsd-nat.c
+++ b/gdb/amd64-fbsd-nat.c
@@ -179,7 +179,7 @@ amd64fbsd_read_description (struct target_ops *ops)
}
#endif
if (is64)
- return tdesc_amd64;
+ return amd64_target_description (X86_XSTATE_SSE_MASK);
else
return tdesc_i386;
}
diff --git a/gdb/amd64-fbsd-tdep.c b/gdb/amd64-fbsd-tdep.c
index ad4d787..897cab9 100644
--- a/gdb/amd64-fbsd-tdep.c
+++ b/gdb/amd64-fbsd-tdep.c
@@ -217,7 +217,8 @@ amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->gregset_num_regs = ARRAY_SIZE (amd64fbsd_r_reg_offset);
tdep->sizeof_gregset = 22 * 8;
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
tdep->sigtramp_p = amd64fbsd_sigtramp_p;
tdep->sigtramp_start = amd64fbsd_sigtramp_start_addr;
diff --git a/gdb/amd64-nbsd-tdep.c b/gdb/amd64-nbsd-tdep.c
index 02bf427..9ae02272 100644
--- a/gdb/amd64-nbsd-tdep.c
+++ b/gdb/amd64-nbsd-tdep.c
@@ -25,6 +25,7 @@
#include "symtab.h"
#include "amd64-tdep.h"
+#include "x86-xstate.h"
#include "nbsd-tdep.h"
#include "solib-svr4.h"
@@ -103,7 +104,8 @@ amd64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->gregset_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
tdep->sizeof_gregset = 26 * 8;
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
tdep->jb_pc_offset = 7 * 8;
diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c
index ad90c20..54942cc 100644
--- a/gdb/amd64-obsd-tdep.c
+++ b/gdb/amd64-obsd-tdep.c
@@ -32,6 +32,7 @@
#include "obsd-tdep.h"
#include "amd64-tdep.h"
#include "i387-tdep.h"
+#include "x86-xstate.h"
#include "solib-svr4.h"
#include "bsd-uthread.h"
@@ -419,7 +420,8 @@ amd64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
obsd_init_abi (info, gdbarch);
/* Initialize general-purpose register set details. */
diff --git a/gdb/amd64-sol2-tdep.c b/gdb/amd64-sol2-tdep.c
index ca474db..1ae2edc 100644
--- a/gdb/amd64-sol2-tdep.c
+++ b/gdb/amd64-sol2-tdep.c
@@ -28,6 +28,7 @@
#include "sol2-tdep.h"
#include "amd64-tdep.h"
+#include "x86-xstate.h"
#include "solib-svr4.h"
/* Mapping between the general-purpose registers in gregset_t format
@@ -99,7 +100,8 @@ amd64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->gregset_num_regs = ARRAY_SIZE (amd64_sol2_gregset_reg_offset);
tdep->sizeof_gregset = 28 * 8;
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
tdep->sigtramp_p = amd64_sol2_sigtramp_p;
tdep->sigcontext_addr = amd64_sol2_mcontext_addr;
diff --git a/gdb/amd64-tdep.h b/gdb/amd64-tdep.h
index 23fa5b8..047af3f 100644
--- a/gdb/amd64-tdep.h
+++ b/gdb/amd64-tdep.h
@@ -87,8 +87,6 @@ enum amd64_regnum
#define AMD64_NUM_REGS (AMD64_GSBASE_REGNUM + 1)
-extern struct target_desc *tdesc_amd64;
-
extern struct displaced_step_closure *amd64_displaced_step_copy_insn
(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
struct regcache *regs);
diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
index 9158282..5ac73bd 100644
--- a/gdb/amd64-windows-tdep.c
+++ b/gdb/amd64-windows-tdep.c
@@ -18,6 +18,7 @@
#include "defs.h"
#include "osabi.h"
#include "amd64-tdep.h"
+#include "x86-xstate.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "regcache.h"
@@ -1224,7 +1225,8 @@ amd64_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
*/
frame_unwind_append_unwinder (gdbarch, &amd64_windows_frame_unwind);
- amd64_init_abi (info, gdbarch, tdesc_amd64);
+ amd64_init_abi (info, gdbarch,
+ amd64_target_description (X86_XSTATE_SSE_MASK));
windows_init_abi (info, gdbarch);
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 15/22] Update comments in amd64_linux_core_read_description
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (3 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 01/22] Use amd64_target_description to get tdesc_amd64 Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 16/22] Centralize amd64-linux target descriptions Yao Qi
` (17 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
gdb:
2017-07-06 Yao Qi <yao.qi@linaro.org>
* amd64-linux-tdep.c (amd64_linux_core_read_description): Update
comments.
---
gdb/amd64-linux-tdep.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 31d2b16..54c2eb9 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -1589,7 +1589,7 @@ amd64_linux_core_read_description (struct gdbarch *gdbarch,
{
case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
if (gdbarch_ptr_bit (gdbarch) == 32)
- /* No MPX on x32, fallback to AVX-AVX512. */
+ /* No MPX, PKU on x32, fallback to AVX-AVX512. */
return tdesc_x32_avx_avx512_linux;
else
return tdesc_amd64_avx_mpx_avx512_pku_linux;
@@ -1600,13 +1600,13 @@ amd64_linux_core_read_description (struct gdbarch *gdbarch,
return tdesc_amd64_avx_avx512_linux;
case X86_XSTATE_MPX_MASK:
if (gdbarch_ptr_bit (gdbarch) == 32)
- /* No MPX on x32, fallback to AVX-AVX512. */
+ /* No MPX on x32, fallback to AVX. */
return tdesc_x32_avx_linux;
else
return tdesc_amd64_mpx_linux;
case X86_XSTATE_AVX_MPX_MASK:
if (gdbarch_ptr_bit (gdbarch) == 32)
- /* No MPX on x32, fallback to AVX-AVX512. */
+ /* No MPX on x32, fallback to AVX. */
return tdesc_x32_avx_linux;
else
return tdesc_amd64_avx_mpx_linux;
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 16/22] Centralize amd64-linux target descriptions
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (4 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 15/22] Update comments in amd64_linux_core_read_description Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 11/22] Share i386-linux target description between GDB and GDBserver Yao Qi
` (16 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
This patch adds a new function amd64_linux_read_description, which
creates amd64-linux target descriptions according to its two
arguments, xcr0 and is_x32.
gdb:
2017-06-07 Yao Qi <yao.qi@linaro.org>
* amd64-linux-tdep.c (amd64_linux_read_description): New
function.
(amd64_linux_core_read_description): Call
amd64_linux_read_description.
(amd64_linux_init_abi): Likewise.
(amd64_x32_linux_init_abi): Likewise.
* amd64-linux-tdep.h (amd64_linux_read_description): Declare.
* x86-linux-nat.c (x86_linux_read_description): Call
amd64_linux_read_description.
---
gdb/amd64-linux-tdep.c | 46 ++++++++++++++++++++++++++++------------------
gdb/amd64-linux-tdep.h | 6 ++++++
gdb/x86-linux-nat.c | 35 +----------------------------------
3 files changed, 35 insertions(+), 52 deletions(-)
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 54c2eb9..85efbef 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -1575,54 +1575,61 @@ amd64_linux_record_signal (struct gdbarch *gdbarch,
return 0;
}
-/* Get Linux/x86 target description from core dump. */
-
-static const struct target_desc *
-amd64_linux_core_read_description (struct gdbarch *gdbarch,
- struct target_ops *target,
- bfd *abfd)
+const target_desc *
+amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32)
{
- /* Linux/x86-64. */
- uint64_t xcr0 = i386_linux_core_read_xcr0 (abfd);
-
- switch (xcr0 & X86_XSTATE_ALL_MASK)
+ switch (xcr0_features_bit)
{
case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- if (gdbarch_ptr_bit (gdbarch) == 32)
+ if (is_x32)
/* No MPX, PKU on x32, fallback to AVX-AVX512. */
return tdesc_x32_avx_avx512_linux;
else
return tdesc_amd64_avx_mpx_avx512_pku_linux;
case X86_XSTATE_AVX_AVX512_MASK:
- if (gdbarch_ptr_bit (gdbarch) == 32)
+ if (is_x32)
return tdesc_x32_avx_avx512_linux;
else
return tdesc_amd64_avx_avx512_linux;
case X86_XSTATE_MPX_MASK:
- if (gdbarch_ptr_bit (gdbarch) == 32)
+ if (is_x32)
/* No MPX on x32, fallback to AVX. */
return tdesc_x32_avx_linux;
else
return tdesc_amd64_mpx_linux;
case X86_XSTATE_AVX_MPX_MASK:
- if (gdbarch_ptr_bit (gdbarch) == 32)
+ if (is_x32)
/* No MPX on x32, fallback to AVX. */
return tdesc_x32_avx_linux;
else
return tdesc_amd64_avx_mpx_linux;
case X86_XSTATE_AVX_MASK:
- if (gdbarch_ptr_bit (gdbarch) == 32)
+ if (is_x32)
return tdesc_x32_avx_linux;
else
return tdesc_amd64_avx_linux;
default:
- if (gdbarch_ptr_bit (gdbarch) == 32)
+ if (is_x32)
return tdesc_x32_linux;
else
return tdesc_amd64_linux;
}
}
+/* Get Linux/x86 target description from core dump. */
+
+static const struct target_desc *
+amd64_linux_core_read_description (struct gdbarch *gdbarch,
+ struct target_ops *target,
+ bfd *abfd)
+{
+ /* Linux/x86-64. */
+ uint64_t xcr0 = i386_linux_core_read_xcr0 (abfd);
+
+ return amd64_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK,
+ gdbarch_ptr_bit (gdbarch) == 32);
+}
+
/* Similar to amd64_supply_fpregset, but use XSAVE extended state. */
static void
@@ -1873,7 +1880,8 @@ amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->gregset_num_regs = ARRAY_SIZE (amd64_linux_gregset_reg_offset);
tdep->sizeof_gregset = 27 * 8;
- amd64_init_abi (info, gdbarch, tdesc_amd64_linux);
+ amd64_init_abi (info, gdbarch,
+ amd64_linux_read_description (X86_XSTATE_SSE_MASK, false));
const target_desc *tdesc = tdep->tdesc;
@@ -2086,7 +2094,9 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->gregset_num_regs = ARRAY_SIZE (amd64_linux_gregset_reg_offset);
tdep->sizeof_gregset = 27 * 8;
- amd64_x32_init_abi (info, gdbarch, tdesc_x32_linux);
+ amd64_x32_init_abi (info, gdbarch,
+ amd64_linux_read_description (X86_XSTATE_SSE_MASK,
+ true));
/* Reserve a number for orig_rax. */
set_gdbarch_num_regs (gdbarch, AMD64_LINUX_NUM_REGS);
diff --git a/gdb/amd64-linux-tdep.h b/gdb/amd64-linux-tdep.h
index 7453408..ab134a4 100644
--- a/gdb/amd64-linux-tdep.h
+++ b/gdb/amd64-linux-tdep.h
@@ -43,6 +43,12 @@ extern struct target_desc *tdesc_x32_linux;
extern struct target_desc *tdesc_x32_avx_linux;
extern struct target_desc *tdesc_x32_avx_avx512_linux;
+/* Return the right amd64-linux target descriptions according to
+ XCR0_FEATURES_BIT and IS_X32. */
+
+const target_desc *amd64_linux_read_description (uint64_t xcr0_features_bit,
+ bool is_x32);
+
/* Enum that defines the syscall identifiers for amd64 linux.
Used for process record/replay, these will be translated into
a gdb-canonical set of syscall ids in linux-record.c. */
diff --git a/gdb/x86-linux-nat.c b/gdb/x86-linux-nat.c
index 2c4afb1..4611527 100644
--- a/gdb/x86-linux-nat.c
+++ b/gdb/x86-linux-nat.c
@@ -192,40 +192,7 @@ x86_linux_read_description (struct target_ops *ops)
if (is_64bit)
{
#ifdef __x86_64__
- switch (xcr0_features_bits)
- {
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- if (is_x32)
- /* No MPX, PKU on x32, fall back to AVX-AVX512. */
- return tdesc_x32_avx_avx512_linux;
- else
- return tdesc_amd64_avx_mpx_avx512_pku_linux;
- case X86_XSTATE_AVX_AVX512_MASK:
- if (is_x32)
- return tdesc_x32_avx_avx512_linux;
- else
- return tdesc_amd64_avx_avx512_linux;
- case X86_XSTATE_MPX_MASK:
- if (is_x32)
- return tdesc_x32_avx_linux; /* No MPX on x32 using AVX. */
- else
- return tdesc_amd64_mpx_linux;
- case X86_XSTATE_AVX_MPX_MASK:
- if (is_x32)
- return tdesc_x32_avx_linux; /* No MPX on x32 using AVX. */
- else
- return tdesc_amd64_avx_mpx_linux;
- case X86_XSTATE_AVX_MASK:
- if (is_x32)
- return tdesc_x32_avx_linux;
- else
- return tdesc_amd64_avx_linux;
- default:
- if (is_x32)
- return tdesc_x32_linux;
- else
- return tdesc_amd64_linux;
- }
+ return amd64_linux_read_description (xcr0_features_bits, is_x32);
#endif
}
else
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 11/22] Share i386-linux target description between GDB and GDBserver
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (5 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 16/22] Centralize amd64-linux target descriptions Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 05/22] Adjust code generated by regformats/regdat.sh Yao Qi
` (15 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
The code on creating i386-linux target descriptions are quite similar
between GDB and GDBserver, so this patch moves them into a shared file
arch/i386.c. I didn't name it as i386-linux.c, because I want to reuse it
to create other i386 non-linux target descriptions later.
gdb:
2017-07-05 Yao Qi <yao.qi@linaro.org>
* Makefile.in (ALL_TARGET_OBS): Add i386.o.
(SFILES): Add arch/i386.c.
(HFILES_NO_SRCDIR): Add arch/i386.h.
* arch/i386.c: New file.
* arch/i386.h: New file.
* arch/tdesc.h (allocate_target_description): Declare.
(set_tdesc_architecture): Declare.
(set_tdesc_osabi): Declare.
* configure.tgt (i[34567]86-*-linux*): Add i386.o.
* i386-linux-tdep.c: Don't include ../features/i386/32bit-XXX.c.
include arch/i386.h.
(i386_linux_read_description): Remove code and call
i386_create_target_description.
(set_tdesc_architecture): New function.
(set_tdesc_osabi): New function.
* target-descriptions.h (allocate_target_description): Remove.
gdb/gdbserver:
2017-07-05 Yao Qi <yao.qi@linaro.org>
* Makefile.in (arch-i386.o): New rule.
* configure.srv (i[34567]86-*-linux*): Add arch-i386.o.
(x86_64-*-linux*): Likewise.
* linux-x86-tdesc.c: Don't include ../features/i386/32bit-XXX.c,
include arch/i386.h.
(i386_linux_read_description): Remove code and call
i386_create_target_description.
* tdesc.c (allocate_target_description): New function.
* tdesc.h (set_tdesc_architecture): Remove declaration.
(set_tdesc_osabi): Likewise.
---
gdb/Makefile.in | 3 ++
gdb/arch/i386.c | 66 +++++++++++++++++++++++++++++++++++++++++
gdb/arch/i386.h | 21 +++++++++++++
gdb/arch/tdesc.h | 10 +++++++
gdb/configure.tgt | 5 ++--
gdb/gdbserver/Makefile.in | 8 +++++
gdb/gdbserver/configure.srv | 3 ++
gdb/gdbserver/linux-x86-tdesc.c | 39 ++----------------------
gdb/gdbserver/tdesc.c | 10 +++++++
gdb/gdbserver/tdesc.h | 4 ---
gdb/i386-linux-tdep.c | 36 ++--------------------
gdb/target-descriptions.c | 17 +++++++++++
gdb/target-descriptions.h | 1 -
13 files changed, 146 insertions(+), 77 deletions(-)
create mode 100644 gdb/arch/i386.c
create mode 100644 gdb/arch/i386.h
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 85de646..40ae421 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -812,6 +812,7 @@ ALL_TARGET_OBS = \
hppa-nbsd-tdep.o \
hppa-obsd-tdep.o \
hppa-tdep.o \
+ i386.o \
i386-bsd-tdep.o \
i386-cygwin-tdep.o \
i386-darwin-tdep.o \
@@ -1030,6 +1031,7 @@ SFILES = \
agent.c \
annotate.c \
arch-utils.c \
+ arch/i386.c \
auto-load.c \
auxv.c \
ax-gdb.c \
@@ -1500,6 +1502,7 @@ HFILES_NO_SRCDIR = \
xtensa-tdep.h \
arch/aarch64-insn.h \
arch/arm.h \
+ arch/i386.h \
cli/cli-cmds.h \
cli/cli-decode.h \
cli/cli-script.h \
diff --git a/gdb/arch/i386.c b/gdb/arch/i386.c
new file mode 100644
index 0000000..60cf63b
--- /dev/null
+++ b/gdb/arch/i386.c
@@ -0,0 +1,66 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "i386.h"
+#include "tdesc.h"
+#include "x86-xstate.h"
+#include <stdlib.h>
+
+#include "../features/i386/32bit-core.c"
+#include "../features/i386/32bit-linux.c"
+#include "../features/i386/32bit-sse.c"
+#include "../features/i386/32bit-avx.c"
+#include "../features/i386/32bit-avx512.c"
+#include "../features/i386/32bit-mpx.c"
+#include "../features/i386/32bit-pkeys.c"
+
+/* Create i386 target descriptions according to XCR0. */
+
+target_desc *
+i386_create_target_description (uint64_t xcr0)
+{
+ target_desc *tdesc = allocate_target_description ();
+
+#ifndef IN_PROCESS_AGENT
+ set_tdesc_architecture (tdesc, "i386");
+ set_tdesc_osabi (tdesc, "GNU/Linux");
+#endif
+
+ long regnum = 0;
+
+ if (xcr0 & X86_XSTATE_X87)
+ regnum = create_feature_i386_32bit_core (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_SSE)
+ regnum = create_feature_i386_32bit_sse (tdesc, regnum);
+
+ regnum = create_feature_i386_32bit_linux (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_AVX)
+ regnum = create_feature_i386_32bit_avx (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_MPX)
+ regnum = create_feature_i386_32bit_mpx (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_AVX512)
+ regnum = create_feature_i386_32bit_avx512 (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_PKRU)
+ regnum = create_feature_i386_32bit_pkeys (tdesc, regnum);
+
+ return tdesc;
+}
diff --git a/gdb/arch/i386.h b/gdb/arch/i386.h
new file mode 100644
index 0000000..0163372
--- /dev/null
+++ b/gdb/arch/i386.h
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "tdesc.h"
+#include <stdint.h>
+
+target_desc *i386_create_target_description (uint64_t xcr0);
diff --git a/gdb/arch/tdesc.h b/gdb/arch/tdesc.h
index bf50e24..78bb0fb 100644
--- a/gdb/arch/tdesc.h
+++ b/gdb/arch/tdesc.h
@@ -23,6 +23,16 @@ struct tdesc_type;
struct tdesc_reg;
struct target_desc;
+/* Allocate a new target_desc. */
+target_desc *allocate_target_description (void);
+
+/* Set TARGET_DESC's architecture by NAME. */
+void set_tdesc_architecture (target_desc *target_desc,
+ const char *name);
+
+/* Set TARGET_DESC's osabi by NAME. */
+void set_tdesc_osabi (target_desc *target_desc, const char *name);
+
/* Return the type associated with ID in the context of FEATURE, or
NULL if none. */
struct tdesc_type *tdesc_named_type (const struct tdesc_feature *feature,
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index fdcb7b1..1f263515 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -228,7 +228,8 @@ i[34567]86-*-solaris*)
;;
i[34567]86-*-linux*)
# Target: Intel 386 running GNU/Linux
- gdb_target_obs="i386-tdep.o i386-linux-tdep.o glibc-tdep.o i387-tdep.o \
+ gdb_target_obs="i386-tdep.o i386.o i386-linux-tdep.o \
+ glibc-tdep.o i387-tdep.o \
solib-svr4.o symfile-mem.o \
linux-tdep.o linux-record.o"
if test "x$enable_64_bit_bfd" = "xyes"; then
@@ -678,7 +679,7 @@ x86_64-*-elf*)
x86_64-*-linux*)
# Target: GNU/Linux x86-64
gdb_target_obs="amd64-tdep.o amd64-linux-tdep.o i386-tdep.o \
- i387-tdep.o i386-linux-tdep.o glibc-tdep.o \
+ i387-tdep.o i386.o i386-linux-tdep.o glibc-tdep.o \
solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
build_gdbserver=yes
;;
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 9b5982b..5f9b2fe 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -528,6 +528,10 @@ ax.o: ax.c
$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
$(POSTCOMPILE)
+arch-i386.o: ../arch/i386.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
# Rules for objects that go in the in-process agent.
%-ipa.o: %-generated.c
@@ -553,6 +557,10 @@ ax.o: ax.c
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
+%-ipa.o: ../arch/%.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
# Rules for objects that go in the gdbserver binary.
%.o: %-generated.c
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 1a27012..876098b 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -122,6 +122,7 @@ case "${target}" in
srv_xmlfiles="${srv_xmlfiles} $srv_amd64_linux_xmlfiles"
srv_tgtobj="amd64-linux-siginfo.o"
fi
+ srv_tgtobj="${srv_tgtobj} arch-i386.o"
srv_tgtobj="${srv_tgtobj} $srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
@@ -131,6 +132,7 @@ case "${target}" in
srv_linux_thread_db=yes
srv_linux_btrace=yes
ipa_obj="${ipa_i386_linux_regobj} linux-i386-ipa.o linux-x86-tdesc-ipa.o"
+ ipa_obj="${ipa_obj} i386-ipa.o"
;;
i[34567]86-*-lynxos*) srv_regobj="i386.o"
srv_tgtobj="lynx-low.o lynx-i386-low.o fork-child.o fork-inferior.o"
@@ -358,6 +360,7 @@ case "${target}" in
;;
x86_64-*-linux*) srv_regobj="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
+ srv_tgtobj="${srv_tgtobj} arch-i386.o"
srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
index 3f63d8e..548e780 100644
--- a/gdb/gdbserver/linux-x86-tdesc.c
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -20,16 +20,10 @@
#include "server.h"
#include "tdesc.h"
#include "linux-x86-tdesc.h"
-#include "x86-xstate.h"
+#include "arch/i386.h"
+#include "common/x86-xstate.h"
#if defined __i386__ || !defined IN_PROCESS_AGENT
-#include "../features/i386/32bit-core.c"
-#include "../features/i386/32bit-linux.c"
-#include "../features/i386/32bit-sse.c"
-#include "../features/i386/32bit-avx.c"
-#include "../features/i386/32bit-avx512.c"
-#include "../features/i386/32bit-mpx.c"
-#include "../features/i386/32bit-pkeys.c"
/* Defined in auto-generated file i386-linux.c. */
void init_registers_i386_linux (void);
@@ -142,34 +136,7 @@ i386_linux_read_description (uint64_t xcr0)
if (*tdesc == NULL)
{
- *tdesc = new target_desc ();
-
-#ifndef IN_PROCESS_AGENT
- set_tdesc_architecture (*tdesc, "i386");
- set_tdesc_osabi (*tdesc, "GNU/Linux");
-#endif
-
- long regnum = 0;
-
- if (xcr0 & X86_XSTATE_X87)
- regnum = create_feature_i386_32bit_core (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_SSE)
- regnum = create_feature_i386_32bit_sse (*tdesc, regnum);
-
- regnum = create_feature_i386_32bit_linux (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_AVX)
- regnum = create_feature_i386_32bit_avx (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_MPX)
- regnum = create_feature_i386_32bit_mpx (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_AVX512)
- regnum = create_feature_i386_32bit_avx512 (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_PKRU)
- regnum = create_feature_i386_32bit_pkeys (*tdesc, regnum);
+ *tdesc = i386_create_target_description (xcr0);
init_target_desc (*tdesc);
diff --git a/gdb/gdbserver/tdesc.c b/gdb/gdbserver/tdesc.c
index 0b5096b..53f36d5 100644
--- a/gdb/gdbserver/tdesc.c
+++ b/gdb/gdbserver/tdesc.c
@@ -39,6 +39,12 @@ init_target_desc (struct target_desc *tdesc)
gdb_assert (2 * tdesc->registers_size + 32 <= PBUFSIZ);
}
+struct target_desc *
+allocate_target_description (void)
+{
+ return new target_desc ();
+}
+
#ifndef IN_PROCESS_AGENT
static const struct target_desc default_description {};
@@ -62,6 +68,8 @@ current_target_desc (void)
return current_process ()->tdesc;
}
+/* See arch/tdesc.h. */
+
void
set_tdesc_architecture (struct target_desc *target_desc,
const char *name)
@@ -69,6 +77,8 @@ set_tdesc_architecture (struct target_desc *target_desc,
target_desc->arch = xstrdup (name);
}
+/* See arch/tdesc.h. */
+
void
set_tdesc_osabi (struct target_desc *target_desc, const char *name)
{
diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h
index fe3c78f..71249e4 100644
--- a/gdb/gdbserver/tdesc.h
+++ b/gdb/gdbserver/tdesc.h
@@ -142,10 +142,6 @@ void init_target_desc (struct target_desc *tdesc);
const struct target_desc *current_target_desc (void);
#ifndef IN_PROCESS_AGENT
-void set_tdesc_architecture (struct target_desc *target_desc,
- const char *name);
-void set_tdesc_osabi (struct target_desc *target_desc, const char *name);
-
const char *tdesc_get_features_xml (struct target_desc *tdesc);
#endif
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 792706c..c47aa6e 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -46,13 +46,7 @@
#include "record-full.h"
#include "linux-record.h"
-#include "features/i386/32bit-core.c"
-#include "features/i386/32bit-sse.c"
-#include "features/i386/32bit-linux.c"
-#include "features/i386/32bit-avx.c"
-#include "features/i386/32bit-mpx.c"
-#include "features/i386/32bit-avx512.c"
-#include "features/i386/32bit-pkeys.c"
+#include "arch/i386.h"
#include "target-descriptions.h"
/* Return non-zero, when the register is in the corresponding register
@@ -700,33 +694,7 @@ i386_linux_read_description (uint64_t xcr0)
[(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
if (*tdesc == NULL)
- {
- *tdesc = allocate_target_description ();
- set_tdesc_architecture (*tdesc, bfd_scan_arch ("i386"));
- set_tdesc_osabi (*tdesc, osabi_from_tdesc_string ("GNU/Linux"));
-
- long regnum = 0;
-
- if (xcr0 & X86_XSTATE_X87)
- regnum = create_feature_i386_32bit_core (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_SSE)
- regnum = create_feature_i386_32bit_sse (*tdesc, regnum);
-
- regnum = create_feature_i386_32bit_linux (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_AVX)
- regnum = create_feature_i386_32bit_avx (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_MPX)
- regnum = create_feature_i386_32bit_mpx (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_AVX512)
- regnum = create_feature_i386_32bit_avx512 (*tdesc, regnum);
-
- if (xcr0 & X86_XSTATE_PKRU)
- regnum = create_feature_i386_32bit_pkeys (*tdesc, regnum);
- }
+ *tdesc = i386_create_target_description (xcr0);
return *tdesc;
}
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 6135e0d..7a8dac0 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -1823,6 +1823,15 @@ set_tdesc_property (struct target_desc *target_desc,
VEC_safe_push (property_s, target_desc->properties, &new_prop);
}
+/* See arch/tdesc.h. */
+
+void
+set_tdesc_architecture (struct target_desc *target_desc,
+ const char *name)
+{
+ set_tdesc_architecture (target_desc, bfd_scan_arch (name));
+}
+
void
set_tdesc_architecture (struct target_desc *target_desc,
const struct bfd_arch_info *arch)
@@ -1830,6 +1839,14 @@ set_tdesc_architecture (struct target_desc *target_desc,
target_desc->arch = arch;
}
+/* See arch/tdesc.h. */
+
+void
+set_tdesc_osabi (struct target_desc *target_desc, const char *name)
+{
+ set_tdesc_osabi (target_desc, osabi_from_tdesc_string (name));
+}
+
void
set_tdesc_osabi (struct target_desc *target_desc, enum gdb_osabi osabi)
{
diff --git a/gdb/target-descriptions.h b/gdb/target-descriptions.h
index c4f9b92..e97a373 100644
--- a/gdb/target-descriptions.h
+++ b/gdb/target-descriptions.h
@@ -201,7 +201,6 @@ int tdesc_register_in_reggroup_p (struct gdbarch *gdbarch, int regno,
/* Methods for constructing a target description. */
-struct target_desc *allocate_target_description (void);
struct cleanup *make_cleanup_free_target_description (struct target_desc *);
void set_tdesc_architecture (struct target_desc *,
const struct bfd_arch_info *);
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 05/22] Adjust code generated by regformats/regdat.sh
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (6 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 11/22] Share i386-linux target description between GDB and GDBserver Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 08/22] [GDBserver] Centralize tdesc for i386-linux Yao Qi
` (14 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
regformats/regdat.sh generate some *-generated.c files when GDBserver
is built. Each .c file has some static variables, which are only used
within function init_registers_XXX, like this,
static struct reg regs_i386_linux[] = {
{ "eax", 0, 32 },
{ "ecx", 32, 32 },
...
};
static const char *expedite_regs_i386_linux[] = { "ebp", "esp", "eip", 0 };
static const char *xmltarget_i386_linux = "i386-linux.xml";
void
init_registers_i386_linux (void)
{
...
}
This patch moves these static variables' definitions to function
init_registers_XXX, so the generated files look like this,
void
init_registers_i386_linux (void)
{
static struct target_desc tdesc_i386_linux_s;
struct target_desc *result = &tdesc_i386_linux_s;
static struct reg regs_i386_linux[] = {
...
};
static const char *expedite_regs_i386_linux[] = { "ebp", "esp", "eip", 0 };
static const char *xmltarget_i386_linux = "i386-linux.xml";
...
}
We want GDBserver create target descriptions dynamically in each
init_registers_XXXX functions, so this patch moves all the related code
into function init_registers_XXXX, so that the following patch can easily
change function init_registers_XXXX to create target description
dynamically, rather than using current pre-generated array.
gdb:
2017-06-06 Yao Qi <yao.qi@linaro.org>
* regformats/regdat.sh: Adjust code order.
---
gdb/regformats/regdat.sh | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index 651f703..2c764cd 100755
--- a/gdb/regformats/regdat.sh
+++ b/gdb/regformats/regdat.sh
@@ -123,6 +123,15 @@ while do_read
do
if test "${type}" = "name"; then
name="${entry}"
+
+ echo "const struct target_desc *tdesc_${name};"
+ echo ""
+ echo "void"
+ echo "init_registers_${name} (void)"
+ echo "{"
+ echo " static struct target_desc tdesc_${name}_s;"
+ echo " struct target_desc *result = &tdesc_${name}_s;"
+
echo "static struct reg regs_${name}[] = {"
continue
elif test "${type}" = "xmltarget"; then
@@ -169,14 +178,6 @@ fi
echo
cat <<EOF
-const struct target_desc *tdesc_${name};
-
-void
-init_registers_${name} (void)
-{
- static struct target_desc tdesc_${name}_s;
- struct target_desc *result = &tdesc_${name}_s;
-
result->reg_defs = regs_${name};
result->num_registers = sizeof (regs_${name}) / sizeof (regs_${name}[0]);
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 08/22] [GDBserver] Centralize tdesc for i386-linux
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (7 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 05/22] Adjust code generated by regformats/regdat.sh Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 19/22] [GDBserver] Use pre-generated amd64-linux tdesc as test Yao Qi
` (13 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
tdesc_i386_XXX_linux is used in many places in linux-x86-low.c and this
patch adds a new function i386_linux_read_description to return the right
tdesc according to xcr0. i386_linux_read_description is quite similar to
the counterpart in GDB, and the following patch will share the duplicated
code, so this patch adds arch/tdesc.h includes the declarations of various
tdesc apis which are used by the shared code. The generated c feature
files can include arch/tdesc.h only.
gdb/gdbserver:
2017-07-10 Yao Qi <yao.qi@linaro.org>
* configure.srv (srv_tgtobj): Append linux-x86-tdesc.o.
(ipa_obj): Likewise.
* linux-i386-ipa.c: Include common/x86-xstate.h
(get_ipa_tdesc): Call i386_linux_read_description.
(initialize_low_tracepoint): Don't call init_registers_XXX
functions, call initialize_low_tdesc instead.
* linux-x86-low.c (x86_linux_read_description): Call
i386_linux_read_description.
(initialize_low_arch): Don't call init_registers_i386_XXX
functions, call initialize_low_tdesc.
* linux-x86-tdesc.c: New file.
* linux-x86-tdesc.h (x86_linux_tdesc): New X86_TDESC_LAST.
(i386_get_ipa_tdesc_idx): Declare.
(i386_get_ipa_tdesc): Declare.
(initialize_low_tdesc): Declare.
gdb:
2017-07-10 Yao Qi <yao.qi@linaro.org>
* arch/tdesc.h: New file.
* regformats/regdat.sh: Generate code using tdesc_create_reg.
* target-descriptions.c: Update comments.
* target-descriptions.h: Include "arch/tdesc.h". Remove the
declarations.
* features/i386/32bit-avx.c: Re-generated.
* features/i386/32bit-avx512.c: Re-generated.
* features/i386/32bit-core.c: Re-generated.
* features/i386/32bit-linux.c: Re-generated.
* features/i386/32bit-mpx.c: Re-generated.
* features/i386/32bit-pkeys.c: Re-generated.
* features/i386/32bit-sse.c: Re-generated.
---
gdb/arch/tdesc.h | 80 ++++++++++++++++++
gdb/features/i386/32bit-avx.c | 2 +-
gdb/features/i386/32bit-avx512.c | 2 +-
gdb/features/i386/32bit-core.c | 2 +-
gdb/features/i386/32bit-linux.c | 2 +-
gdb/features/i386/32bit-mpx.c | 2 +-
gdb/features/i386/32bit-pkeys.c | 2 +-
gdb/features/i386/32bit-sse.c | 2 +-
gdb/gdbserver/configure.srv | 6 +-
gdb/gdbserver/linux-i386-ipa.c | 39 ++++-----
gdb/gdbserver/linux-x86-low.c | 59 +++----------
gdb/gdbserver/linux-x86-tdesc.c | 177 +++++++++++++++++++++++++++++++++++++++
gdb/gdbserver/linux-x86-tdesc.h | 31 ++-----
gdb/gdbserver/tdesc.c | 110 +++++++++++++++++++++++-
gdb/gdbserver/tdesc.h | 29 ++++++-
gdb/i386-linux-tdep.c | 1 +
gdb/regformats/regdat.sh | 10 +--
gdb/target-descriptions.c | 32 +++----
gdb/target-descriptions.h | 36 +-------
19 files changed, 458 insertions(+), 166 deletions(-)
create mode 100644 gdb/arch/tdesc.h
create mode 100644 gdb/gdbserver/linux-x86-tdesc.c
diff --git a/gdb/arch/tdesc.h b/gdb/arch/tdesc.h
new file mode 100644
index 0000000..872df68
--- /dev/null
+++ b/gdb/arch/tdesc.h
@@ -0,0 +1,80 @@
+/* Copyright (C) 2006-2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef ARCH_TDESC_H
+#define ARCH_TDESC_H 1
+
+struct tdesc_feature;
+struct tdesc_type;
+struct tdesc_reg;
+struct target_desc;
+
+/* Return the type associated with ID in the context of FEATURE, or
+ NULL if none. */
+struct tdesc_type *tdesc_named_type (const struct tdesc_feature *feature,
+ const char *id);
+
+/* Return the created feature named NAME in target description TDESC. */
+struct tdesc_feature *tdesc_create_feature (struct target_desc *tdesc,
+ const char *name);
+
+/* Return the created vector tdesc_type named NAME in FEATURE. */
+struct tdesc_type *tdesc_create_vector (struct tdesc_feature *feature,
+ const char *name,
+ struct tdesc_type *field_type,
+ int count);
+
+/* Return the created struct tdesc_type named NAME in FEATURE. */
+struct tdesc_type *tdesc_create_struct (struct tdesc_feature *feature,
+ const char *name);
+
+/* Return the created union tdesc_type named NAME in FEATURE. */
+struct tdesc_type *tdesc_create_union (struct tdesc_feature *feature,
+ const char *name);
+
+/* Return the created flags tdesc_type named NAME in FEATURE. */
+struct tdesc_type *tdesc_create_flags (struct tdesc_feature *feature,
+ const char *name,
+ int size);
+
+/* Add a new field to TYPE. FIELD_NAME is its name, and FIELD_TYPE is
+ its type. */
+void tdesc_add_field (struct tdesc_type *type, const char *field_name,
+ struct tdesc_type *field_type);
+
+/* Set the total length of TYPE. Structs which contain bitfields may
+ omit the reserved bits, so the end of the last field may not
+ suffice. */
+void tdesc_set_struct_size (struct tdesc_type *type, int size);
+
+/* Add a new untyped bitfield to TYPE.
+ Untyped bitfields become either uint32 or uint64 depending on the size
+ of the underlying type. */
+void tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
+ int start, int end);
+
+/* A flag is just a typed(bool) single-bit bitfield.
+ This function is kept to minimize changes in generated files. */
+void tdesc_add_flag (struct tdesc_type *type, int start,
+ const char *flag_name);
+
+/* Create a register in feature FEATURE. */
+void tdesc_create_reg (struct tdesc_feature *feature, const char *name,
+ int regnum, int save_restore, const char *group,
+ int bitsize, const char *type);
+
+#endif /* ARCH_TDESC_H */
diff --git a/gdb/features/i386/32bit-avx.c b/gdb/features/i386/32bit-avx.c
index 0e71515..3a98936 100644
--- a/gdb/features/i386/32bit-avx.c
+++ b/gdb/features/i386/32bit-avx.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-avx.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_avx (struct target_desc *result, long regnum)
diff --git a/gdb/features/i386/32bit-avx512.c b/gdb/features/i386/32bit-avx512.c
index 034f557..b13e1d3 100644
--- a/gdb/features/i386/32bit-avx512.c
+++ b/gdb/features/i386/32bit-avx512.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-avx512.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_avx512 (struct target_desc *result, long regnum)
diff --git a/gdb/features/i386/32bit-core.c b/gdb/features/i386/32bit-core.c
index b43de4d..ea6db93 100644
--- a/gdb/features/i386/32bit-core.c
+++ b/gdb/features/i386/32bit-core.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-core.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_core (struct target_desc *result, long regnum)
diff --git a/gdb/features/i386/32bit-linux.c b/gdb/features/i386/32bit-linux.c
index 1b50882..1ba932d 100644
--- a/gdb/features/i386/32bit-linux.c
+++ b/gdb/features/i386/32bit-linux.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-linux.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_linux (struct target_desc *result, long regnum)
diff --git a/gdb/features/i386/32bit-mpx.c b/gdb/features/i386/32bit-mpx.c
index 6ed3b2e..f7d2ef0 100644
--- a/gdb/features/i386/32bit-mpx.c
+++ b/gdb/features/i386/32bit-mpx.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-mpx.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_mpx (struct target_desc *result, long regnum)
diff --git a/gdb/features/i386/32bit-pkeys.c b/gdb/features/i386/32bit-pkeys.c
index 24a40aa..89f1a5b 100644
--- a/gdb/features/i386/32bit-pkeys.c
+++ b/gdb/features/i386/32bit-pkeys.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-pkeys.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_pkeys (struct target_desc *result, long regnum)
diff --git a/gdb/features/i386/32bit-sse.c b/gdb/features/i386/32bit-sse.c
index c0684fb..98f4cd0 100644
--- a/gdb/features/i386/32bit-sse.c
+++ b/gdb/features/i386/32bit-sse.c
@@ -1,7 +1,7 @@
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: 32bit-sse.xml */
-#include "target-descriptions.h"
+#include "arch/tdesc.h"
static int
create_feature_i386_32bit_sse (struct target_desc *result, long regnum)
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 789a16b..1a27012 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -123,13 +123,14 @@ case "${target}" in
srv_tgtobj="amd64-linux-siginfo.o"
fi
srv_tgtobj="${srv_tgtobj} $srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
+ srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
srv_linux_usrregs=yes
srv_linux_regsets=yes
srv_linux_thread_db=yes
srv_linux_btrace=yes
- ipa_obj="${ipa_i386_linux_regobj} linux-i386-ipa.o"
+ ipa_obj="${ipa_i386_linux_regobj} linux-i386-ipa.o linux-x86-tdesc-ipa.o"
;;
i[34567]86-*-lynxos*) srv_regobj="i386.o"
srv_tgtobj="lynx-low.o lynx-i386-low.o fork-child.o fork-inferior.o"
@@ -357,6 +358,7 @@ case "${target}" in
;;
x86_64-*-linux*) srv_regobj="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
+ srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
srv_tgtobj="${srv_tgtobj} amd64-linux-siginfo.o"
@@ -370,7 +372,7 @@ case "${target}" in
else
ipa_obj="${ipa_amd64_linux_regobj}"
fi
- ipa_obj="${ipa_obj} linux-amd64-ipa.o"
+ ipa_obj="${ipa_obj} linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
;;
x86_64-*-mingw*) srv_regobj="$srv_amd64_regobj"
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
diff --git a/gdb/gdbserver/linux-i386-ipa.c b/gdb/gdbserver/linux-i386-ipa.c
index e9ac78b..54608da 100644
--- a/gdb/gdbserver/linux-i386-ipa.c
+++ b/gdb/gdbserver/linux-i386-ipa.c
@@ -22,6 +22,7 @@
#include <sys/mman.h>
#include "tracepoint.h"
#include "linux-x86-tdesc.h"
+#include "common/x86-xstate.h"
/* GDB register numbers. */
@@ -250,27 +251,24 @@ initialize_fast_tracepoint_trampoline_buffer (void)
const struct target_desc *
get_ipa_tdesc (int idx)
{
- switch (idx)
+ if (idx >= X86_TDESC_LAST)
{
- case X86_TDESC_MMX:
- return tdesc_i386_mmx_linux;
- case X86_TDESC_SSE:
- return tdesc_i386_linux;
- case X86_TDESC_AVX:
- return tdesc_i386_avx_linux;
- case X86_TDESC_MPX:
- return tdesc_i386_mpx_linux;
- case X86_TDESC_AVX_MPX:
- return tdesc_i386_avx_mpx_linux;
- case X86_TDESC_AVX_AVX512:
- return tdesc_i386_avx_avx512_linux;
- case X86_TDESC_AVX_MPX_AVX512_PKU:
- return tdesc_i386_avx_mpx_avx512_pku_linux;
- default:
internal_error (__FILE__, __LINE__,
"unknown ipa tdesc index: %d", idx);
- return tdesc_i386_linux;
}
+
+ /* Map the tdesc index to xcr0 mask. */
+ 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 i386_linux_read_description (idx2mask[idx]);
}
/* Allocate buffer for the jump pads. On i386, we can reach an arbitrary
@@ -291,12 +289,7 @@ alloc_jump_pad_buffer (size_t size)
void
initialize_low_tracepoint (void)
{
- init_registers_i386_mmx_linux ();
- init_registers_i386_linux ();
- init_registers_i386_avx_linux ();
- init_registers_i386_mpx_linux ();
- init_registers_i386_avx_avx512_linux ();
- init_registers_i386_avx_mpx_avx512_pku_linux ();
+ initialize_low_tdesc ();
initialize_fast_tracepoint_trampoline_buffer ();
}
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index 5c56a5d..24b76a7 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -757,7 +757,7 @@ x86_linux_read_description (void)
{
have_ptrace_getfpxregs = 0;
have_ptrace_getregset = 0;
- return tdesc_i386_mmx_linux;
+ return i386_linux_read_description (X86_XSTATE_X87);
}
else
have_ptrace_getfpxregs = 1;
@@ -873,31 +873,15 @@ x86_linux_read_description (void)
}
else
{
- if (xcr0_features)
- {
- switch (xcr0 & X86_XSTATE_ALL_MASK)
- {
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- return tdesc_i386_avx_mpx_avx512_pku_linux;
-
- case (X86_XSTATE_AVX_AVX512_MASK):
- return tdesc_i386_avx_avx512_linux;
+ const target_desc *tdesc = NULL;
- case (X86_XSTATE_MPX_MASK):
- return tdesc_i386_mpx_linux;
-
- case (X86_XSTATE_AVX_MPX_MASK):
- return tdesc_i386_avx_mpx_linux;
+ if (xcr0_features)
+ tdesc = i386_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK);
- case (X86_XSTATE_AVX_MASK):
- return tdesc_i386_avx_linux;
+ if (tdesc == NULL)
+ tdesc = i386_linux_read_description (X86_XSTATE_SSE);
- default:
- return tdesc_i386_linux;
- }
- }
- else
- return tdesc_i386_linux;
+ return tdesc;
}
gdb_assert_not_reached ("failed to return tdesc");
@@ -2912,23 +2896,10 @@ x86_get_ipa_tdesc_idx (void)
return X86_TDESC_AVX_AVX512;
#endif
- if (tdesc == tdesc_i386_mmx_linux)
- return X86_TDESC_MMX;
- if (tdesc == tdesc_i386_linux || tdesc == tdesc_i386_linux_no_xml)
+ if (tdesc == tdesc_i386_linux_no_xml)
return X86_TDESC_SSE;
- if (tdesc == tdesc_i386_avx_linux)
- return X86_TDESC_AVX;
- if (tdesc == tdesc_i386_mpx_linux)
- return X86_TDESC_MPX;
- if (tdesc == tdesc_i386_avx_mpx_linux)
- return X86_TDESC_AVX_MPX;
- if (tdesc == tdesc_i386_avx_mpx_avx512_pku_linux)
- return X86_TDESC_AVX_MPX_AVX512_PKU;
- if (tdesc == tdesc_i386_avx_avx512_linux)
- return X86_TDESC_AVX_AVX512;
- /* If none tdesc is found, return the one with minimum features. */
- return X86_TDESC_MMX;
+ return i386_get_ipa_tdesc_idx (tdesc);
}
/* This is initialized assuming an amd64 target.
@@ -2997,16 +2968,12 @@ initialize_low_arch (void)
copy_target_description (tdesc_amd64_linux_no_xml, tdesc_amd64_linux);
tdesc_amd64_linux_no_xml->xmltarget = xmltarget_amd64_linux_no_xml;
#endif
- init_registers_i386_linux ();
- init_registers_i386_mmx_linux ();
- init_registers_i386_avx_linux ();
- init_registers_i386_mpx_linux ();
- init_registers_i386_avx_mpx_linux ();
- init_registers_i386_avx_avx512_linux ();
- init_registers_i386_avx_mpx_avx512_pku_linux ();
+
+ initialize_low_tdesc ();
tdesc_i386_linux_no_xml = XNEW (struct target_desc);
- copy_target_description (tdesc_i386_linux_no_xml, tdesc_i386_linux);
+ copy_target_description (tdesc_i386_linux_no_xml,
+ i386_linux_read_description (X86_XSTATE_SSE_MASK));
tdesc_i386_linux_no_xml->xmltarget = xmltarget_i386_linux_no_xml;
initialize_regsets_info (&x86_regsets_info);
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
new file mode 100644
index 0000000..0d0be83
--- /dev/null
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -0,0 +1,177 @@
+/* GNU/Linux/x86-64 specific target description, for the remote server
+ for GDB.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "server.h"
+#include "tdesc.h"
+#include "linux-x86-tdesc.h"
+#include "x86-xstate.h"
+#include <inttypes.h>
+
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+#include "../features/i386/32bit-core.c"
+#include "../features/i386/32bit-linux.c"
+#include "../features/i386/32bit-sse.c"
+#include "../features/i386/32bit-avx.c"
+#include "../features/i386/32bit-avx512.c"
+#include "../features/i386/32bit-mpx.c"
+#include "../features/i386/32bit-pkeys.c"
+
+/* Defined in auto-generated file i386-linux.c. */
+void init_registers_i386_linux (void);
+extern const struct target_desc *tdesc_i386_linux;
+
+/* Defined in auto-generated file i386-mmx-linux.c. */
+void init_registers_i386_mmx_linux (void);
+extern const struct target_desc *tdesc_i386_mmx_linux;
+
+/* Defined in auto-generated file i386-avx-linux.c. */
+void init_registers_i386_avx_linux (void);
+extern const struct target_desc *tdesc_i386_avx_linux;
+
+/* Defined in auto-generated file i386-avx-mpx-linux.c. */
+void init_registers_i386_avx_mpx_linux (void);
+extern const struct target_desc *tdesc_i386_avx_mpx_linux;
+
+/* Defined in auto-generated file i386-avx-avx512-linux.c. */
+void init_registers_i386_avx_avx512_linux (void);
+extern const struct target_desc *tdesc_i386_avx_avx512_linux;
+
+/* Defined in auto-generated file i386-avx-mpx-avx512-linux.c. */
+void init_registers_i386_avx_mpx_avx512_pku_linux (void);
+extern const struct target_desc *tdesc_i386_avx_mpx_avx512_pku_linux;
+
+/* Defined in auto-generated file i386-mpx-linux.c. */
+void init_registers_i386_mpx_linux (void);
+extern const struct target_desc *tdesc_i386_mpx_linux;
+#endif
+
+static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
+
+void
+initialize_low_tdesc ()
+{
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+ init_registers_i386_linux ();
+ init_registers_i386_mmx_linux ();
+ init_registers_i386_avx_linux ();
+ init_registers_i386_mpx_linux ();
+ init_registers_i386_avx_mpx_linux ();
+ init_registers_i386_avx_avx512_linux ();
+ init_registers_i386_avx_mpx_avx512_pku_linux ();
+#endif
+}
+
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+
+/* Return the target description according to XCR0. */
+
+const struct target_desc *
+i386_linux_read_description (uint64_t xcr0)
+{
+ struct target_desc **tdesc = NULL;
+
+ if (xcr0 & X86_XSTATE_PKRU)
+ tdesc = &i386_tdescs[X86_TDESC_AVX_MPX_AVX512_PKU];
+ else if (xcr0 & X86_XSTATE_AVX512)
+ tdesc = &i386_tdescs[X86_TDESC_AVX_AVX512];
+ else if ((xcr0 & X86_XSTATE_AVX_MPX_MASK) == X86_XSTATE_AVX_MPX_MASK)
+ tdesc = &i386_tdescs[X86_TDESC_AVX_MPX];
+ else if (xcr0 & X86_XSTATE_MPX)
+ tdesc = &i386_tdescs[X86_TDESC_MPX];
+ else if (xcr0 & X86_XSTATE_AVX)
+ tdesc = &i386_tdescs[X86_TDESC_AVX];
+ else if (xcr0 & X86_XSTATE_SSE)
+ tdesc = &i386_tdescs[X86_TDESC_SSE];
+ else if (xcr0 & X86_XSTATE_X87)
+ tdesc = &i386_tdescs[X86_TDESC_MMX];
+
+ if (tdesc == NULL)
+ return NULL;
+
+ if (*tdesc == NULL)
+ {
+ *tdesc = new target_desc ();
+
+ long regnum = 0;
+
+ if (xcr0 & X86_XSTATE_X87)
+ regnum = create_feature_i386_32bit_core (*tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_SSE)
+ regnum = create_feature_i386_32bit_sse (*tdesc, regnum);
+
+ regnum = create_feature_i386_32bit_linux (*tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_AVX)
+ regnum = create_feature_i386_32bit_avx (*tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_MPX)
+ regnum = create_feature_i386_32bit_mpx (*tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_AVX512)
+ regnum = create_feature_i386_32bit_avx512 (*tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_PKRU)
+ regnum = create_feature_i386_32bit_pkeys (*tdesc, regnum);
+
+ init_target_desc (*tdesc);
+
+#ifndef IN_PROCESS_AGENT
+ static const char *expedite_regs_i386[] = { "ebp", "esp", "eip", NULL };
+ (*tdesc)->expedite_regs = expedite_regs_i386;
+
+ if (xcr0 & X86_XSTATE_PKRU)
+ (*tdesc)->xmltarget = "i386-avx-mpx-avx512-pku-linux.xml";
+ else if (xcr0 & X86_XSTATE_AVX512)
+ (*tdesc)->xmltarget = "i386-avx-avx512-linux.xml";
+ else if ((xcr0 & X86_XSTATE_AVX_MPX_MASK) == X86_XSTATE_AVX_MPX_MASK)
+ (*tdesc)->xmltarget = "i386-avx-mpx-linux.xml";
+ else if (xcr0 & X86_XSTATE_MPX)
+ (*tdesc)->xmltarget = "i386-mpx-linux.xml";
+ else if (xcr0 & X86_XSTATE_AVX)
+ (*tdesc)->xmltarget = "i386-avx-linux.xml";
+ else if (xcr0 & X86_XSTATE_SSE)
+ (*tdesc)->xmltarget = "i386-linux.xml";
+ else if (xcr0 & X86_XSTATE_X87)
+ (*tdesc)->xmltarget = "i386-mmx-linux.xml";
+ else
+ internal_error (__FILE__, __LINE__,
+ "unknown xcr0: %" PRIu64, xcr0);
+#endif
+ }
+
+ return *tdesc;;
+}
+#endif
+
+#ifndef IN_PROCESS_AGENT
+int
+i386_get_ipa_tdesc_idx (const struct target_desc *tdesc)
+{
+ for (int i = 0; i < X86_TDESC_LAST; i++)
+ {
+ if (tdesc == i386_tdescs[i])
+ return i;
+ }
+
+ /* If none tdesc is found, return the one with minimum features. */
+ return X86_TDESC_MMX;
+}
+
+#endif
diff --git a/gdb/gdbserver/linux-x86-tdesc.h b/gdb/gdbserver/linux-x86-tdesc.h
index bbe4078..03bd1f1 100644
--- a/gdb/gdbserver/linux-x86-tdesc.h
+++ b/gdb/gdbserver/linux-x86-tdesc.h
@@ -30,6 +30,7 @@ enum x86_linux_tdesc {
X86_TDESC_AVX_MPX = 4,
X86_TDESC_AVX_AVX512 = 5,
X86_TDESC_AVX_MPX_AVX512_PKU = 6,
+ X86_TDESC_LAST = 7,
};
#ifdef __x86_64__
@@ -77,31 +78,9 @@ extern const struct target_desc *tdesc_x32_avx_avx512_linux;
#endif
#if defined __i386__ || !defined IN_PROCESS_AGENT
-/* Defined in auto-generated file i386-linux.c. */
-void init_registers_i386_linux (void);
-extern const struct target_desc *tdesc_i386_linux;
-
-/* Defined in auto-generated file i386-mmx-linux.c. */
-void init_registers_i386_mmx_linux (void);
-extern const struct target_desc *tdesc_i386_mmx_linux;
-
-/* Defined in auto-generated file i386-avx-linux.c. */
-void init_registers_i386_avx_linux (void);
-extern const struct target_desc *tdesc_i386_avx_linux;
-
-/* Defined in auto-generated file i386-avx-mpx-linux.c. */
-void init_registers_i386_avx_mpx_linux (void);
-extern const struct target_desc *tdesc_i386_avx_mpx_linux;
-
-/* Defined in auto-generated file i386-avx-avx512-linux.c. */
-void init_registers_i386_avx_avx512_linux (void);
-extern const struct target_desc *tdesc_i386_avx_avx512_linux;
+int i386_get_ipa_tdesc_idx (const struct target_desc *tdesc);
+#endif
-/* Defined in auto-generated file i386-avx-mpx-avx512-linux.c. */
-void init_registers_i386_avx_mpx_avx512_pku_linux (void);
-extern const struct target_desc *tdesc_i386_avx_mpx_avx512_pku_linux;
+const struct target_desc *i386_linux_read_description (uint64_t xcr0);
-/* Defined in auto-generated file i386-mpx-linux.c. */
-void init_registers_i386_mpx_linux (void);
-extern const struct target_desc *tdesc_i386_mpx_linux;
-#endif
+void initialize_low_tdesc ();
diff --git a/gdb/gdbserver/tdesc.c b/gdb/gdbserver/tdesc.c
index 1b1882e..4504c9b 100644
--- a/gdb/gdbserver/tdesc.c
+++ b/gdb/gdbserver/tdesc.c
@@ -41,7 +41,7 @@ init_target_desc (struct target_desc *tdesc)
#ifndef IN_PROCESS_AGENT
-static const struct target_desc default_description = { NULL, 0, NULL, NULL };
+static const struct target_desc default_description {};
void
copy_target_description (struct target_desc *dest,
@@ -61,5 +61,111 @@ current_target_desc (void)
return current_process ()->tdesc;
}
-
#endif
+
+struct tdesc_type
+{};
+
+/* See arch/tdesc.h. */
+
+struct tdesc_feature *
+tdesc_create_feature (struct target_desc *tdesc, const char *name)
+{
+ return tdesc;
+}
+
+/* See arch/tdesc.h. */
+
+struct tdesc_type *
+tdesc_create_flags (struct tdesc_feature *feature, const char *name,
+ int size)
+{
+ return NULL;
+}
+
+/* See arch/tdesc.h. */
+
+void
+tdesc_add_flag (struct tdesc_type *type, int start,
+ const char *flag_name)
+{}
+
+/* See arch/tdesc.h. */
+
+struct tdesc_type *
+tdesc_named_type (const struct tdesc_feature *feature, const char *id)
+{
+ return NULL;
+}
+
+/* See arch/tdesc.h. */
+
+struct tdesc_type *
+tdesc_create_union (struct tdesc_feature *feature, const char *id)
+{
+ return NULL;
+}
+
+/* See arch/tdesc.h. */
+
+struct tdesc_type *
+tdesc_create_struct (struct tdesc_feature *feature, const char *id)
+{
+ return NULL;
+}
+
+/* See arch/tdesc.h. */
+
+void
+tdesc_create_reg (struct tdesc_feature *feature, const char *name,
+ int regnum, int save_restore, const char *group,
+ int bitsize, const char *type)
+{
+ struct target_desc *tdesc = (struct target_desc *) feature;
+
+ while (VEC_length (tdesc_reg_p, tdesc->reg_defs) < regnum)
+ {
+ struct reg *reg = XCNEW (struct reg);
+
+ reg->name = "";
+ reg->size = 0;
+ VEC_safe_push (tdesc_reg_p, tdesc->reg_defs, reg);
+ }
+
+ gdb_assert (regnum == 0
+ || regnum == VEC_length (tdesc_reg_p, tdesc->reg_defs));
+
+ struct reg *reg = XCNEW (struct reg);
+
+ reg->name = name;
+ reg->size = bitsize;
+ VEC_safe_push (tdesc_reg_p, tdesc->reg_defs, reg);
+}
+
+/* See arch/tdesc.h. */
+
+struct tdesc_type *
+tdesc_create_vector (struct tdesc_feature *feature, const char *name,
+ struct tdesc_type *field_type, int count)
+{
+ return NULL;
+}
+
+void
+tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
+ int start, int end)
+{}
+
+/* See arch/tdesc.h. */
+
+void
+tdesc_add_field (struct tdesc_type *type, const char *field_name,
+ struct tdesc_type *field_type)
+{}
+
+/* See arch/tdesc.h. */
+
+void
+tdesc_set_struct_size (struct tdesc_type *type, int size)
+{
+}
diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h
index 424a2fd..50d0364 100644
--- a/gdb/gdbserver/tdesc.h
+++ b/gdb/gdbserver/tdesc.h
@@ -19,14 +19,20 @@
#ifndef TDESC_H
#define TDESC_H
+#include "arch/tdesc.h"
+
struct reg;
typedef struct reg *tdesc_reg_p;
DEF_VEC_P(tdesc_reg_p);
-/* A target description. */
+struct tdesc_feature
+{};
+
+/* A target description. Inherit from tdesc_feature so that target_desc
+ can be used as tdesc_feature. */
-struct target_desc
+struct target_desc : tdesc_feature
{
/* A vector of elements of register definitions that
describe the inferior's register set. */
@@ -38,13 +44,28 @@ struct target_desc
#ifndef IN_PROCESS_AGENT
/* An array of register names. These are the "expedite" registers:
registers whose values are sent along with stop replies. */
- const char **expedite_regs;
+ const char **expedite_regs = NULL;
/* Defines what to return when looking for the "target.xml" file in
response to qXfer:features:read. Its contents can either be
verbatim XML code (prefixed with a '@') or else the name of the
actual XML file to be used in place of "target.xml". */
- const char *xmltarget;
+ const char *xmltarget = NULL;
+
+public:
+ target_desc ()
+ : reg_defs (NULL), registers_size (0)
+ {}
+
+ ~target_desc ()
+ {
+ int i;
+ struct reg *reg;
+
+ for (i = 0; VEC_iterate (tdesc_reg_p, reg_defs, i, reg); i++)
+ xfree (reg);
+ VEC_free (tdesc_reg_p, reg_defs);
+ }
#endif
};
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index dd21b70..792706c 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -53,6 +53,7 @@
#include "features/i386/32bit-mpx.c"
#include "features/i386/32bit-avx512.c"
#include "features/i386/32bit-pkeys.c"
+#include "target-descriptions.h"
/* Return non-zero, when the register is in the corresponding register
group. Put the LINUX_ORIG_EAX register in the system group. */
diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index 236cd93..66449cc 100755
--- a/gdb/regformats/regdat.sh
+++ b/gdb/regformats/regdat.sh
@@ -131,7 +131,6 @@ do
echo "{"
echo " static struct target_desc tdesc_${name}_s;"
echo " struct target_desc *result = &tdesc_${name}_s;"
- echo " memset (result, 0, sizeof (*result));"
continue
elif test "${type}" = "xmltarget"; then
@@ -150,12 +149,9 @@ do
echo "$0: $1 does not specify \`\`name''." 1>&2
exit 1
else
- echo " {struct reg *reg = XCNEW (struct reg);"
- echo " reg->name = \"${entry}\";"
- echo " reg->offset = ${offset};"
- echo " reg->size = ${type};"
- echo " VEC_safe_push (tdesc_reg_p, result->reg_defs, reg);"
- echo " };"
+ echo " tdesc_create_reg ((struct tdesc_feature *) result, \"${entry}\","
+ echo " 0, 0, NULL, ${type}, NULL);"
+
offset=`expr ${offset} + ${type}`
i=`expr $i + 1`
fi
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index bee8e00..f0ced66 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -846,8 +846,7 @@ tdesc_predefined_type (enum tdesc_type_kind kind)
gdb_assert_not_reached ("bad predefined tdesc type");
}
-/* Return the type associated with ID in the context of FEATURE, or
- NULL if none. */
+/* See arch/tdesc.h. */
struct tdesc_type *
tdesc_named_type (const struct tdesc_feature *feature, const char *id)
@@ -1566,6 +1565,8 @@ tdesc_use_registers (struct gdbarch *gdbarch,
}
\f
+/* See arch/tdesc.h. */
+
void
tdesc_create_reg (struct tdesc_feature *feature, const char *name,
int regnum, int save_restore, const char *group,
@@ -1577,6 +1578,8 @@ tdesc_create_reg (struct tdesc_feature *feature, const char *name,
VEC_safe_push (tdesc_reg_p, feature->registers, reg);
}
+/* See arch/tdesc.h. */
+
struct tdesc_type *
tdesc_create_vector (struct tdesc_feature *feature, const char *name,
struct tdesc_type *field_type, int count)
@@ -1590,6 +1593,8 @@ tdesc_create_vector (struct tdesc_feature *feature, const char *name,
return type;
}
+/* See arch/tdesc.h. */
+
struct tdesc_type *
tdesc_create_struct (struct tdesc_feature *feature, const char *name)
{
@@ -1599,9 +1604,7 @@ tdesc_create_struct (struct tdesc_feature *feature, const char *name)
return type;
}
-/* Set the total length of TYPE. Structs which contain bitfields may
- omit the reserved bits, so the end of the last field may not
- suffice. */
+/* See arch/tdesc.h. */
void
tdesc_set_struct_size (struct tdesc_type *type, int size)
@@ -1611,6 +1614,8 @@ tdesc_set_struct_size (struct tdesc_type *type, int size)
type->u.u.size = size;
}
+/* See arch/tdesc.h. */
+
struct tdesc_type *
tdesc_create_union (struct tdesc_feature *feature, const char *name)
{
@@ -1620,6 +1625,8 @@ tdesc_create_union (struct tdesc_feature *feature, const char *name)
return type;
}
+/* See arch/tdesc.h. */
+
struct tdesc_type *
tdesc_create_flags (struct tdesc_feature *feature, const char *name,
int size)
@@ -1648,7 +1655,7 @@ tdesc_create_enum (struct tdesc_feature *feature, const char *name,
return type;
}
-/* Add a new field to TYPE. */
+/* See arch/tdesc.h. */
void
tdesc_add_field (struct tdesc_type *type, const char *field_name,
@@ -1669,8 +1676,6 @@ tdesc_add_field (struct tdesc_type *type, const char *field_name,
VEC_safe_push (tdesc_type_field, type->u.u.fields, &f);
}
-/* Add a new typed bitfield to TYPE. */
-
void
tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name,
int start, int end, struct tdesc_type *field_type)
@@ -1689,9 +1694,7 @@ tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name,
VEC_safe_push (tdesc_type_field, type->u.u.fields, &f);
}
-/* Add a new untyped bitfield to TYPE.
- Untyped bitfields become either uint32 or uint64 depending on the size
- of the underlying type. */
+/* See arch/tdesc.h. */
void
tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
@@ -1709,8 +1712,7 @@ tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
tdesc_add_typed_bitfield (type, field_name, start, end, field_type);
}
-/* A flag is just a typed(bool) single-bit bitfield.
- This function is kept to minimize changes in generated files. */
+/* See arch/tdesc.h. */
void
tdesc_add_flag (struct tdesc_type *type, int start,
@@ -1745,6 +1747,8 @@ tdesc_add_enum_value (struct tdesc_type *type, int value,
VEC_safe_push (tdesc_type_field, type->u.u.fields, &f);
}
+/* See arch/tdesc.h. */
+
struct tdesc_feature *
tdesc_create_feature (struct target_desc *tdesc, const char *name)
{
@@ -2175,7 +2179,7 @@ public:
printf_unfiltered (" Original: %s */\n\n",
lbasename (m_filename_after_features.c_str ()));
- printf_unfiltered ("#include \"target-descriptions.h\"\n");
+ printf_unfiltered ("#include \"arch/tdesc.h\"\n");
printf_unfiltered ("\n");
}
diff --git a/gdb/target-descriptions.h b/gdb/target-descriptions.h
index 591da15..c4f9b92 100644
--- a/gdb/target-descriptions.h
+++ b/gdb/target-descriptions.h
@@ -21,14 +21,10 @@
#ifndef TARGET_DESCRIPTIONS_H
#define TARGET_DESCRIPTIONS_H 1
+#include "arch/tdesc.h"
-struct tdesc_feature;
struct tdesc_arch_data;
-struct tdesc_type;
-struct tdesc_reg;
-struct target_desc;
struct target_ops;
-struct target_desc;
/* An inferior's target description info is stored in this opaque
object. There's one such object per inferior. */
struct target_desc_info;
@@ -182,12 +178,6 @@ const struct tdesc_feature *tdesc_find_feature (const struct target_desc *,
const char *tdesc_feature_name (const struct tdesc_feature *feature);
-/* Return the type associated with ID in the context of FEATURE, or
- NULL if none. */
-
-struct tdesc_type *tdesc_named_type (const struct tdesc_feature *feature,
- const char *id);
-
/* Return the name of register REGNO, from the target description or
from an architecture-provided pseudo_register_name method. */
@@ -220,38 +210,14 @@ void set_tdesc_property (struct target_desc *,
const char *key, const char *value);
void tdesc_add_compatible (struct target_desc *,
const struct bfd_arch_info *);
-
-struct tdesc_feature *tdesc_create_feature (struct target_desc *tdesc,
- const char *name);
-struct tdesc_type *tdesc_create_vector (struct tdesc_feature *feature,
- const char *name,
- struct tdesc_type *field_type,
- int count);
-struct tdesc_type *tdesc_create_struct (struct tdesc_feature *feature,
- const char *name);
-void tdesc_set_struct_size (struct tdesc_type *type, int size);
-struct tdesc_type *tdesc_create_union (struct tdesc_feature *feature,
- const char *name);
-struct tdesc_type *tdesc_create_flags (struct tdesc_feature *feature,
- const char *name,
- int size);
struct tdesc_type *tdesc_create_enum (struct tdesc_feature *feature,
const char *name,
int size);
-void tdesc_add_field (struct tdesc_type *type, const char *field_name,
- struct tdesc_type *field_type);
void tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name,
int start, int end,
struct tdesc_type *field_type);
-void tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
- int start, int end);
-void tdesc_add_flag (struct tdesc_type *type, int start,
- const char *flag_name);
void tdesc_add_enum_value (struct tdesc_type *type, int value,
const char *name);
-void tdesc_create_reg (struct tdesc_feature *feature, const char *name,
- int regnum, int save_restore, const char *group,
- int bitsize, const char *type);
#if GDB_SELF_TEST
namespace selftests {
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 19/22] [GDBserver] Use pre-generated amd64-linux tdesc as test
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (8 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 08/22] [GDBserver] Centralize tdesc for i386-linux Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:29 ` [PATCH 09/22] [GDBserver] unit test to i386_tdesc Yao Qi
` (12 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
Now, all these amd64-linux pre-generated tdesc can be used as test, so
don't need to build them if $development is false.
gdb/gdbserver:
2017-06-09 Yao Qi <yao.qi@linaro.org>
* configure.srv: Empty srv_amd64_linux_regobj if $development is
false.
(ipa_amd64_linux_regobj): Remove.
(ipa_x32_linux_regobj): Remove.
---
gdb/gdbserver/configure.srv | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 95649f4..aca11c6 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -28,15 +28,14 @@ srv_i386_regobj="i386.o"
if $development; then
srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx-avx512-linux.o i386-avx-mpx-avx512-pku-linux.o i386-mpx-linux.o i386-avx-mpx-linux.o i386-mmx-linux.o linux-x86-tdesc-selftest.o"
+ srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx-avx512-linux.o amd64-avx-mpx-avx512-pku-linux.o amd64-mpx-linux.o amd64-avx-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx-avx512-linux.o"
else
srv_i386_linux_regobj=""
+ srv_amd64_linux_regobj=""
fi
srv_amd64_regobj="amd64.o"
-srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx-avx512-linux.o amd64-avx-mpx-avx512-pku-linux.o amd64-mpx-linux.o amd64-avx-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx-avx512-linux.o"
-ipa_amd64_linux_regobj="amd64-linux-ipa.o amd64-avx-linux-ipa.o amd64-avx-mpx-linux-ipa.o amd64-avx-avx512-linux-ipa.o amd64-avx-mpx-avx512-pku-linux-ipa.o amd64-mpx-linux-ipa.o"
-ipa_x32_linux_regobj="x32-linux-ipa.o x32-avx-linux-ipa.o x32-avx-avx512-linux-ipa.o"
ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o"
srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml i386/32bit-avx512.xml i386/32bit-mpx.xml i386/32bit-pkeys.xml"
@@ -375,12 +374,7 @@ case "${target}" in
srv_linux_regsets=yes
srv_linux_thread_db=yes
srv_linux_btrace=yes
- if test "$gdb_cv_x86_is_x32" = yes ; then
- ipa_obj="${ipa_x32_linux_regobj}"
- else
- ipa_obj="${ipa_amd64_linux_regobj}"
- fi
- ipa_obj="${ipa_obj} linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
+ ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
ipa_obj="${ipa_obj} amd64-ipa.o"
;;
x86_64-*-mingw*) srv_regobj="$srv_amd64_regobj"
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 09/22] [GDBserver] unit test to i386_tdesc
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (9 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 19/22] [GDBserver] Use pre-generated amd64-linux tdesc as test Yao Qi
@ 2017-08-21 15:29 ` Yao Qi
2017-08-21 15:30 ` [PATCH 18/22] Convert amd64-linux target descriptions Yao Qi
` (11 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:29 UTC (permalink / raw)
To: gdb-patches
This patch adds a unit test in GDBserver to test dynamically created
target descriptions equal these pre-generated ones.
gdb/gdbserver:
2017-07-07 Yao Qi <yao.qi@linaro.org>
* linux-x86-tdesc.c: Include selftest.h.
(i386_tdesc_test): New function.
(initialize_low_tdesc): Call selftests::register_test.
* tdesc.h: Include regdef.h.
(target_desc): Override operator == and !=.
gdb:
2017-07-07 Yao Qi <yao.qi@linaro.org>
* regformats/regdef.h (struct reg): Override operator == and !=.
---
gdb/gdbserver/linux-x86-tdesc.c | 37 ++++++++++++++++++++++++++++++++++++
gdb/gdbserver/tdesc.h | 42 ++++++++++++++++++++++++++++++++++++++++-
gdb/regformats/regdef.h | 12 ++++++++++++
3 files changed, 90 insertions(+), 1 deletion(-)
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
index 0d0be83..1f3dbaf 100644
--- a/gdb/gdbserver/linux-x86-tdesc.c
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -63,6 +63,39 @@ extern const struct target_desc *tdesc_i386_mpx_linux;
static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
+#if defined GDB_SELF_TEST && !defined IN_PROCESS_AGENT
+#include "selftest.h"
+
+namespace selftests {
+namespace tdesc {
+static void
+i386_tdesc_test ()
+{
+ struct
+ {
+ unsigned int mask;
+ const target_desc *tdesc;
+ } tdesc_tests[] = {
+ { X86_XSTATE_X87, tdesc_i386_mmx_linux },
+ { X86_XSTATE_SSE_MASK, tdesc_i386_linux },
+ { X86_XSTATE_AVX_MASK, tdesc_i386_avx_linux },
+ { X86_XSTATE_MPX_MASK, tdesc_i386_mpx_linux },
+ { X86_XSTATE_AVX_MPX_MASK, tdesc_i386_avx_mpx_linux },
+ { X86_XSTATE_AVX_AVX512_MASK, tdesc_i386_avx_avx512_linux },
+ { X86_XSTATE_AVX_MPX_AVX512_PKU_MASK, tdesc_i386_avx_mpx_avx512_pku_linux }
+ };
+
+ for (auto &elem : tdesc_tests)
+ {
+ const target_desc *tdesc = i386_linux_read_description (elem.mask);
+
+ SELF_CHECK (*tdesc == *elem.tdesc);
+ }
+}
+}
+} // namespace selftests
+#endif /* GDB_SELF_TEST */
+
void
initialize_low_tdesc ()
{
@@ -74,6 +107,10 @@ initialize_low_tdesc ()
init_registers_i386_avx_mpx_linux ();
init_registers_i386_avx_avx512_linux ();
init_registers_i386_avx_mpx_avx512_pku_linux ();
+
+#if GDB_SELF_TEST && !defined IN_PROCESS_AGENT
+ selftests::register_test (selftests::tdesc::i386_tdesc_test);
+#endif
#endif
}
diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h
index 50d0364..49c82c6 100644
--- a/gdb/gdbserver/tdesc.h
+++ b/gdb/gdbserver/tdesc.h
@@ -21,7 +21,7 @@
#include "arch/tdesc.h"
-struct reg;
+#include "regdef.h"
typedef struct reg *tdesc_reg_p;
DEF_VEC_P(tdesc_reg_p);
@@ -66,6 +66,46 @@ public:
xfree (reg);
VEC_free (tdesc_reg_p, reg_defs);
}
+
+ bool operator== (const target_desc &other) const
+ {
+ if (VEC_length (tdesc_reg_p, reg_defs)
+ != VEC_length (tdesc_reg_p, other.reg_defs))
+ return false;
+
+ struct reg *reg;
+
+ for (int ix = 0;
+ VEC_iterate (tdesc_reg_p, reg_defs, ix, reg);
+ ix++)
+ {
+ struct reg *reg2
+ = VEC_index (tdesc_reg_p, other.reg_defs, ix);
+
+ if (reg != reg2 && *reg != *reg2)
+ return false;
+ }
+
+ /* Compare expedite_regs. */
+ int i = 0;
+ for (; expedite_regs[i] != NULL; i++)
+ {
+ if (strcmp (expedite_regs[i], other.expedite_regs[i]) != 0)
+ return false;
+ }
+ if (other.expedite_regs[i] != NULL)
+ return false;
+
+ if (strcmp (xmltarget, other.xmltarget) != 0)
+ return false;
+
+ return true;
+ }
+
+ bool operator!= (const target_desc &other) const
+ {
+ return !(*this == other);
+ }
#endif
};
diff --git a/gdb/regformats/regdef.h b/gdb/regformats/regdef.h
index de7a010..ff1d40b 100644
--- a/gdb/regformats/regdef.h
+++ b/gdb/regformats/regdef.h
@@ -34,6 +34,18 @@ struct reg
/* The size (in bits) of the value of this register, as transmitted. */
int size;
+
+ bool operator== (const reg &other) const
+ {
+ return (strcmp (name, other.name) == 0
+ && offset == other.offset
+ && size == other.size);
+ }
+
+ bool operator!= (const reg &other) const
+ {
+ return !(*this == other);
+ }
};
#endif /* REGDEF_H */
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 18/22] Convert amd64-linux target descriptions
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (10 preceding siblings ...)
2017-08-21 15:29 ` [PATCH 09/22] [GDBserver] unit test to i386_tdesc Yao Qi
@ 2017-08-21 15:30 ` Yao Qi
2017-08-21 15:31 ` [PATCH 13/22] [GDBserver] Use pre-generated tdesc as test Yao Qi
` (10 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:30 UTC (permalink / raw)
To: gdb-patches
This patch changes amd64-linux target descriptions so that they can be
dynamically generated in both GDB and GDBserver.
gdb/gdbserver:
2017-06-09 Yao Qi <yao.qi@linaro.org>
* Makefile.in (arch-amd64.o): New rule.
* configure.srv: Append arch-amd64.o.
* linux-amd64-ipa.c: Include common/x86-xstate.h.
(get_ipa_tdesc): Call amd64_linux_read_description.
(initialize_low_tracepoint): Don't call init_registers_x32_XXX
and init_registers_amd64_XXX.
* linux-x86-low.c (x86_linux_read_description): Call
amd64_linux_read_description.
(x86_get_ipa_tdesc_idx): Call amd64_get_ipa_tdesc_idx.
(initialize_low_arch): Don't call init_registers_x32_XXX and
init_registers_amd64_XXX.
* linux-x86-tdesc-selftest.c: Declare init_registers_amd64_XXX
and tdesc_amd64_XXX.
[__x86_64__] (amd64_tdesc_test): New function.
(initialize_low_tdesc) [__x86_64__]: Call init_registers_x32_XXX
and init_registers_amd64_XXX.
* linux-x86-tdesc.c: Include arch/amd64.h.
(xcr0_to_tdesc_idx): New function.
(i386_linux_read_description): New function.
(amd64_get_ipa_tdesc_idx): New function.
* linux-x86-tdesc.h (amd64_get_ipa_tdesc_idx): Declare.
(amd64_get_ipa_tdesc): Declare.
gdb:
2017-07-03 Yao Qi <yao.qi@linaro.org>
* amd64-linux-tdep.c: Include arch/amd64.h. Don't include
features/i386/*.c.
(amd64_linux_read_description): Call
amd64_create_target_description.
* arch/amd64.c: New file.
* arch/amd64.h: New file.
* configure.tgt (x86_64-*-linux*): Append amd64.o.
* Makefile.in (ALL_64_TARGET_OBS): Append amd64.o.
---
gdb/Makefile.in | 1 +
gdb/amd64-linux-tdep.c | 44 +----------
gdb/arch/amd64.c | 71 ++++++++++++++++++
gdb/arch/amd64.h | 21 ++++++
gdb/configure.tgt | 2 +-
gdb/gdbserver/Makefile.in | 4 +
gdb/gdbserver/configure.srv | 3 +-
gdb/gdbserver/linux-amd64-ipa.c | 56 ++++++--------
gdb/gdbserver/linux-x86-low.c | 86 +++-------------------
gdb/gdbserver/linux-x86-tdesc-selftest.c | 90 +++++++++++++++++++++++
gdb/gdbserver/linux-x86-tdesc.c | 122 ++++++++++++++++++++++++++-----
gdb/gdbserver/linux-x86-tdesc.h | 49 ++-----------
12 files changed, 339 insertions(+), 210 deletions(-)
create mode 100644 gdb/arch/amd64.c
create mode 100644 gdb/arch/amd64.h
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 40ae421..bcc7bd2 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -761,6 +761,7 @@ ALL_64_TARGET_OBS = \
alpha-nbsd-tdep.o \
alpha-obsd-tdep.o \
alpha-tdep.o \
+ amd64.o \
amd64-darwin-tdep.o \
amd64-dicos-tdep.o \
amd64-fbsd-tdep.o \
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 7afa012..7fbd328 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -39,19 +39,9 @@
#include "solib-svr4.h"
#include "xml-syscall.h"
#include "glibc-tdep.h"
+#include "arch/amd64.h"
#include "target-descriptions.h"
-#include "features/i386/64bit-avx.c"
-#include "features/i386/64bit-avx512.c"
-#include "features/i386/64bit-core.c"
-#include "features/i386/64bit-linux.c"
-#include "features/i386/64bit-mpx.c"
-#include "features/i386/64bit-pkeys.c"
-#include "features/i386/64bit-segments.c"
-#include "features/i386/64bit-sse.c"
-
-#include "features/i386/x32-core.c"
-
/* The syscall's XML filename for i386. */
#define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml"
@@ -1599,37 +1589,7 @@ amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32)
}
if (*tdesc == NULL)
- {
- *tdesc = allocate_target_description ();
-
- set_tdesc_architecture (*tdesc,
- is_x32 ? "i386:x64-32" : "i386:x86-64");
-
- set_tdesc_osabi (*tdesc, osabi_from_tdesc_string ("GNU/Linux"));
-
- long regnum = 0;
-
- if (is_x32)
- regnum = create_feature_i386_x32_core (*tdesc, regnum);
- else
- regnum = create_feature_i386_64bit_core (*tdesc, regnum);
-
- regnum = create_feature_i386_64bit_sse (*tdesc, regnum);
- regnum = create_feature_i386_64bit_linux (*tdesc, regnum);
- regnum = create_feature_i386_64bit_segments (*tdesc, regnum);
-
- if (xcr0_features_bit & X86_XSTATE_AVX)
- regnum = create_feature_i386_64bit_avx (*tdesc, regnum);
-
- if ((xcr0_features_bit & X86_XSTATE_MPX) && !is_x32)
- regnum = create_feature_i386_64bit_mpx (*tdesc, regnum);
-
- if (xcr0_features_bit & X86_XSTATE_AVX512)
- regnum = create_feature_i386_64bit_avx512 (*tdesc, regnum);
-
- if ((xcr0_features_bit & X86_XSTATE_PKRU) && !is_x32)
- regnum = create_feature_i386_64bit_pkeys (*tdesc, regnum);
- }
+ *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32);
return *tdesc;
}
diff --git a/gdb/arch/amd64.c b/gdb/arch/amd64.c
new file mode 100644
index 0000000..626733d
--- /dev/null
+++ b/gdb/arch/amd64.c
@@ -0,0 +1,71 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "amd64.h"
+#include "x86-xstate.h"
+#include <stdlib.h>
+
+#include "../features/i386/64bit-avx.c"
+#include "../features/i386/64bit-avx512.c"
+#include "../features/i386/64bit-core.c"
+#include "../features/i386/64bit-linux.c"
+#include "../features/i386/64bit-mpx.c"
+#include "../features/i386/64bit-pkeys.c"
+#include "../features/i386/64bit-segments.c"
+#include "../features/i386/64bit-sse.c"
+
+#include "../features/i386/x32-core.c"
+
+/* Create amd64 target descriptions according to XCR0. If IS_X32 is
+ true, create the x32 ones. */
+
+target_desc *
+amd64_create_target_description (uint64_t xcr0, bool is_x32)
+{
+ target_desc *tdesc = allocate_target_description ();
+
+#ifndef IN_PROCESS_AGENT
+ set_tdesc_architecture (tdesc, is_x32 ? "i386:x64-32" : "i386:x86-64");
+
+ set_tdesc_osabi (tdesc, "GNU/Linux");
+#endif
+
+ long regnum = 0;
+
+ if (is_x32)
+ regnum = create_feature_i386_x32_core (tdesc, regnum);
+ else
+ regnum = create_feature_i386_64bit_core (tdesc, regnum);
+
+ regnum = create_feature_i386_64bit_sse (tdesc, regnum);
+ regnum = create_feature_i386_64bit_linux (tdesc, regnum);
+ regnum = create_feature_i386_64bit_segments (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_AVX)
+ regnum = create_feature_i386_64bit_avx (tdesc, regnum);
+
+ if ((xcr0 & X86_XSTATE_MPX) && !is_x32)
+ regnum = create_feature_i386_64bit_mpx (tdesc, regnum);
+
+ if (xcr0 & X86_XSTATE_AVX512)
+ regnum = create_feature_i386_64bit_avx512 (tdesc, regnum);
+
+ if ((xcr0 & X86_XSTATE_PKRU) && !is_x32)
+ regnum = create_feature_i386_64bit_pkeys (tdesc, regnum);
+
+ return tdesc;
+}
diff --git a/gdb/arch/amd64.h b/gdb/arch/amd64.h
new file mode 100644
index 0000000..0821a7c
--- /dev/null
+++ b/gdb/arch/amd64.h
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "tdesc.h"
+#include <stdint.h>
+
+target_desc *amd64_create_target_description (uint64_t xcr0, bool is_x32);
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 1f263515..402d6ba 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -678,7 +678,7 @@ x86_64-*-elf*)
;;
x86_64-*-linux*)
# Target: GNU/Linux x86-64
- gdb_target_obs="amd64-tdep.o amd64-linux-tdep.o i386-tdep.o \
+ gdb_target_obs="amd64-tdep.o amd64-linux-tdep.o amd64.o i386-tdep.o \
i387-tdep.o i386.o i386-linux-tdep.o glibc-tdep.o \
solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
build_gdbserver=yes
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 5f9b2fe..5cc4220 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -532,6 +532,10 @@ arch-i386.o: ../arch/i386.c
$(COMPILE) $<
$(POSTCOMPILE)
+arch-amd64.o: ../arch/amd64.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
# Rules for objects that go in the in-process agent.
%-ipa.o: %-generated.c
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 946119c..95649f4 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -365,7 +365,7 @@ case "${target}" in
;;
x86_64-*-linux*) srv_regobj="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
- srv_tgtobj="${srv_tgtobj} arch-i386.o"
+ srv_tgtobj="${srv_tgtobj} arch-i386.o arch-amd64.o"
srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
@@ -381,6 +381,7 @@ case "${target}" in
ipa_obj="${ipa_amd64_linux_regobj}"
fi
ipa_obj="${ipa_obj} linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
+ ipa_obj="${ipa_obj} amd64-ipa.o"
;;
x86_64-*-mingw*) srv_regobj="$srv_amd64_regobj"
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
diff --git a/gdb/gdbserver/linux-amd64-ipa.c b/gdb/gdbserver/linux-amd64-ipa.c
index 683339b..85d0d45 100644
--- a/gdb/gdbserver/linux-amd64-ipa.c
+++ b/gdb/gdbserver/linux-amd64-ipa.c
@@ -22,6 +22,7 @@
#include <sys/mman.h>
#include "tracepoint.h"
#include "linux-x86-tdesc.h"
+#include "common/x86-xstate.h"
/* Defined in auto-generated file amd64-linux.c. */
void init_registers_amd64_linux (void);
@@ -174,38 +175,37 @@ supply_static_tracepoint_registers (struct regcache *regcache,
const struct target_desc *
get_ipa_tdesc (int idx)
{
+ if (idx >= X86_TDESC_LAST)
+ {
+ internal_error (__FILE__, __LINE__,
+ "unknown ipa tdesc index: %d", idx);
+ }
+
#if defined __ILP32__
switch (idx)
{
case X86_TDESC_SSE:
- return tdesc_x32_linux;
+ return amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
case X86_TDESC_AVX:
- return tdesc_x32_avx_linux;
+ return amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
case X86_TDESC_AVX_AVX512:
- return tdesc_x32_avx_avx512_linux;
+ return amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK, true);
default:
break;
}
#else
- switch (idx)
- {
- case X86_TDESC_SSE:
- return tdesc_amd64_linux;
- case X86_TDESC_AVX:
- return tdesc_amd64_avx_linux;
- case X86_TDESC_MPX:
- return tdesc_amd64_mpx_linux;
- case X86_TDESC_AVX_MPX:
- return tdesc_amd64_avx_mpx_linux;
- case X86_TDESC_AVX_MPX_AVX512_PKU:
- return tdesc_amd64_avx_mpx_avx512_pku_linux;
- case X86_TDESC_AVX_AVX512:
- return tdesc_amd64_avx_avx512_linux;
- default:
- internal_error (__FILE__, __LINE__,
- "unknown ipa tdesc index: %d", idx);
- return tdesc_amd64_linux;
- }
+ /* Map the tdesc index to xcr0 mask. */
+ 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 amd64_linux_read_description (idx2mask[idx], false);
#endif
internal_error (__FILE__, __LINE__,
@@ -276,16 +276,4 @@ alloc_jump_pad_buffer (size_t size)
void
initialize_low_tracepoint (void)
{
-#if defined __ILP32__
- init_registers_x32_linux ();
- init_registers_x32_avx_linux ();
- init_registers_x32_avx_avx512_linux ();
-#else
- init_registers_amd64_linux ();
- init_registers_amd64_avx_linux ();
- init_registers_amd64_mpx_linux ();
- init_registers_amd64_avx_mpx_linux ();
- init_registers_amd64_avx_avx512_linux ();
- init_registers_amd64_avx_mpx_avx512_pku_linux ();
-#endif
}
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index 54be82f..f09871a 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -817,58 +817,17 @@ x86_linux_read_description (void)
if (machine == EM_X86_64)
{
#ifdef __x86_64__
- if (is_elf64)
- {
- if (xcr0_features)
- {
- switch (xcr0 & X86_XSTATE_ALL_MASK)
- {
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- return tdesc_amd64_avx_mpx_avx512_pku_linux;
-
- case X86_XSTATE_AVX_AVX512_MASK:
- return tdesc_amd64_avx_avx512_linux;
-
- case X86_XSTATE_AVX_MPX_MASK:
- return tdesc_amd64_avx_mpx_linux;
-
- case X86_XSTATE_MPX_MASK:
- return tdesc_amd64_mpx_linux;
-
- case X86_XSTATE_AVX_MASK:
- return tdesc_amd64_avx_linux;
+ const target_desc *tdesc = NULL;
- default:
- return tdesc_amd64_linux;
- }
- }
- else
- return tdesc_amd64_linux;
- }
- else
+ if (xcr0_features)
{
- if (xcr0_features)
- {
- switch (xcr0 & X86_XSTATE_ALL_MASK)
- {
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- /* No x32 MPX and PKU, fall back to avx_avx512. */
- return tdesc_x32_avx_avx512_linux;
-
- case X86_XSTATE_AVX_AVX512_MASK:
- return tdesc_x32_avx_avx512_linux;
-
- case X86_XSTATE_MPX_MASK: /* No MPX on x32. */
- case X86_XSTATE_AVX_MASK:
- return tdesc_x32_avx_linux;
-
- default:
- return tdesc_x32_linux;
- }
- }
- else
- return tdesc_x32_linux;
+ tdesc = amd64_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK,
+ !is_elf64);
}
+
+ if (tdesc == NULL)
+ tdesc = amd64_linux_read_description (X86_XSTATE_SSE_MASK, !is_elf64);
+ return tdesc;
#endif
}
else
@@ -2881,19 +2840,7 @@ x86_get_ipa_tdesc_idx (void)
const struct target_desc *tdesc = regcache->tdesc;
#ifdef __x86_64__
- if (tdesc == tdesc_amd64_linux || tdesc == tdesc_amd64_linux_no_xml
- || tdesc == tdesc_x32_linux)
- return X86_TDESC_SSE;
- if (tdesc == tdesc_amd64_avx_linux || tdesc == tdesc_x32_avx_linux)
- return X86_TDESC_AVX;
- if (tdesc == tdesc_amd64_mpx_linux)
- return X86_TDESC_MPX;
- if (tdesc == tdesc_amd64_avx_mpx_linux)
- return X86_TDESC_AVX_MPX;
- if (tdesc == tdesc_amd64_avx_mpx_avx512_pku_linux || tdesc == tdesc_x32_avx_avx512_linux)
- return X86_TDESC_AVX_MPX_AVX512_PKU;
- if (tdesc == tdesc_amd64_avx_avx512_linux)
- return X86_TDESC_AVX_AVX512;
+ return amd64_get_ipa_tdesc_idx (tdesc);
#endif
if (tdesc == tdesc_i386_linux_no_xml)
@@ -2953,19 +2900,10 @@ initialize_low_arch (void)
{
/* Initialize the Linux target descriptions. */
#ifdef __x86_64__
- init_registers_amd64_linux ();
- init_registers_amd64_avx_linux ();
- init_registers_amd64_mpx_linux ();
- init_registers_amd64_avx_mpx_linux ();
- init_registers_amd64_avx_avx512_linux ();
- init_registers_amd64_avx_mpx_avx512_pku_linux ();
-
- init_registers_x32_linux ();
- init_registers_x32_avx_linux ();
- init_registers_x32_avx_avx512_linux ();
-
tdesc_amd64_linux_no_xml = XNEW (struct target_desc);
- copy_target_description (tdesc_amd64_linux_no_xml, tdesc_amd64_linux);
+ copy_target_description (tdesc_amd64_linux_no_xml,
+ amd64_linux_read_description (X86_XSTATE_SSE_MASK,
+ false));
tdesc_amd64_linux_no_xml->xmltarget = xmltarget_amd64_linux_no_xml;
#endif
diff --git a/gdb/gdbserver/linux-x86-tdesc-selftest.c b/gdb/gdbserver/linux-x86-tdesc-selftest.c
index 558a25b..aa5a8e9 100644
--- a/gdb/gdbserver/linux-x86-tdesc-selftest.c
+++ b/gdb/gdbserver/linux-x86-tdesc-selftest.c
@@ -49,6 +49,46 @@ extern const struct target_desc *tdesc_i386_avx_mpx_avx512_pku_linux;
void init_registers_i386_mpx_linux (void);
extern const struct target_desc *tdesc_i386_mpx_linux;
+#ifdef __x86_64__
+
+/* Defined in auto-generated file amd64-linux.c. */
+void init_registers_amd64_linux (void);
+extern const struct target_desc *tdesc_amd64_linux;
+
+/* Defined in auto-generated file amd64-avx-linux.c. */
+void init_registers_amd64_avx_linux (void);
+extern const struct target_desc *tdesc_amd64_avx_linux;
+
+/* Defined in auto-generated file amd64-avx-avx512-linux.c. */
+void init_registers_amd64_avx_avx512_linux (void);
+extern const struct target_desc *tdesc_amd64_avx_avx512_linux;
+
+/* Defined in auto-generated file amd64-avx-mpx-avx512-pku-linux.c. */
+void init_registers_amd64_avx_mpx_avx512_pku_linux (void);
+extern const struct target_desc *tdesc_amd64_avx_mpx_avx512_pku_linux;
+
+/* Defined in auto-generated file amd64-avx-mpx-linux.c. */
+void init_registers_amd64_avx_mpx_linux (void);
+extern const struct target_desc *tdesc_amd64_avx_mpx_linux;
+
+/* Defined in auto-generated file amd64-mpx-linux.c. */
+void init_registers_amd64_mpx_linux (void);
+extern const struct target_desc *tdesc_amd64_mpx_linux;
+
+/* Defined in auto-generated file x32-linux.c. */
+void init_registers_x32_linux (void);
+extern const struct target_desc *tdesc_x32_linux;
+
+/* Defined in auto-generated file x32-avx-linux.c. */
+void init_registers_x32_avx_linux (void);
+extern const struct target_desc *tdesc_x32_avx_linux;
+
+/* Defined in auto-generated file x32-avx-avx512-linux.c. */
+void init_registers_x32_avx_avx512_linux (void);
+extern const struct target_desc *tdesc_x32_avx_avx512_linux;
+
+#endif
+
namespace selftests {
namespace tdesc {
static void
@@ -75,6 +115,41 @@ i386_tdesc_test ()
SELF_CHECK (*tdesc == *elem.tdesc);
}
}
+
+#ifdef __x86_64__
+
+static void
+amd64_tdesc_test ()
+{
+ struct
+ {
+ unsigned int mask;
+ const target_desc *tdesc[2];
+ } tdesc_tests[] = {
+ { X86_XSTATE_SSE_MASK, { tdesc_amd64_linux, tdesc_x32_linux } },
+ { X86_XSTATE_AVX_MASK, { tdesc_amd64_avx_linux, tdesc_x32_avx_linux } },
+ { X86_XSTATE_MPX_MASK, { tdesc_amd64_mpx_linux, tdesc_x32_avx_linux } },
+ { X86_XSTATE_AVX_MPX_MASK, { tdesc_amd64_avx_mpx_linux,
+ tdesc_x32_avx_linux } },
+ { X86_XSTATE_AVX_AVX512_MASK, { tdesc_amd64_avx_avx512_linux,
+ tdesc_x32_avx_avx512_linux } },
+ { X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
+ { tdesc_amd64_avx_mpx_avx512_pku_linux, tdesc_x32_avx_avx512_linux } },
+ };
+
+ for (auto &elem : tdesc_tests)
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ const target_desc *tdesc = amd64_linux_read_description (elem.mask,
+ i);
+
+ SELF_CHECK (*tdesc == *elem.tdesc[i]);
+ }
+ }
+}
+
+#endif
}
} // namespace selftests
@@ -90,4 +165,19 @@ initialize_low_tdesc ()
init_registers_i386_avx_mpx_avx512_pku_linux ();
selftests::register_test (selftests::tdesc::i386_tdesc_test);
+
+#ifdef __x86_64__
+ init_registers_x32_linux ();
+ init_registers_x32_avx_linux ();
+ init_registers_x32_avx_avx512_linux ();
+
+ init_registers_amd64_linux ();
+ init_registers_amd64_avx_linux ();
+ init_registers_amd64_mpx_linux ();
+ init_registers_amd64_avx_mpx_linux ();
+ init_registers_amd64_avx_avx512_linux ();
+ init_registers_amd64_avx_mpx_avx512_pku_linux ();
+
+ selftests::register_test (selftests::tdesc::amd64_tdesc_test);
+#endif
}
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
index d1e262c..9eb61a7 100644
--- a/gdb/gdbserver/linux-x86-tdesc.c
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -22,36 +22,68 @@
#include "linux-x86-tdesc.h"
#include "arch/i386.h"
#include "common/x86-xstate.h"
+#ifdef __x86_64__
+#include "arch/amd64.h"
+#endif
-static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
+/* Return the right x86_linux_tdesc index for a given XCR0. Return
+ X86_TDESC_LAST if can't find a match. */
-#if defined __i386__ || !defined IN_PROCESS_AGENT
-
-/* Return the target description according to XCR0. */
-
-const struct target_desc *
-i386_linux_read_description (uint64_t xcr0)
+static enum x86_linux_tdesc
+xcr0_to_tdesc_idx (uint64_t xcr0, bool is_x32)
{
- struct target_desc **tdesc = NULL;
-
if (xcr0 & X86_XSTATE_PKRU)
- tdesc = &i386_tdescs[X86_TDESC_AVX_MPX_AVX512_PKU];
+ {
+ if (is_x32)
+ {
+ /* No x32 MPX and PKU, fall back to avx_avx512. */
+ return X86_TDESC_AVX_AVX512;
+ }
+ else
+ return X86_TDESC_AVX_MPX_AVX512_PKU;
+ }
else if (xcr0 & X86_XSTATE_AVX512)
- tdesc = &i386_tdescs[X86_TDESC_AVX_AVX512];
+ return X86_TDESC_AVX_AVX512;
else if ((xcr0 & X86_XSTATE_AVX_MPX_MASK) == X86_XSTATE_AVX_MPX_MASK)
- tdesc = &i386_tdescs[X86_TDESC_AVX_MPX];
+ {
+ if (is_x32) /* No MPX on x32. */
+ return X86_TDESC_AVX;
+ else
+ return X86_TDESC_AVX_MPX;
+ }
else if (xcr0 & X86_XSTATE_MPX)
- tdesc = &i386_tdescs[X86_TDESC_MPX];
+ {
+ if (is_x32) /* No MPX on x32. */
+ return X86_TDESC_AVX;
+ else
+ return X86_TDESC_MPX;
+ }
else if (xcr0 & X86_XSTATE_AVX)
- tdesc = &i386_tdescs[X86_TDESC_AVX];
+ return X86_TDESC_AVX;
else if (xcr0 & X86_XSTATE_SSE)
- tdesc = &i386_tdescs[X86_TDESC_SSE];
+ return X86_TDESC_SSE;
else if (xcr0 & X86_XSTATE_X87)
- tdesc = &i386_tdescs[X86_TDESC_MMX];
+ return X86_TDESC_MMX;
+ else
+ return X86_TDESC_LAST;
+}
- if (tdesc == NULL)
+static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
+
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+
+/* Return the target description according to XCR0. */
+
+const struct target_desc *
+i386_linux_read_description (uint64_t xcr0)
+{
+ enum x86_linux_tdesc idx = xcr0_to_tdesc_idx (xcr0, false);
+
+ if (idx == X86_TDESC_LAST)
return NULL;
+ struct target_desc **tdesc = &i386_tdescs[idx];
+
if (*tdesc == NULL)
{
*tdesc = i386_create_target_description (xcr0);
@@ -68,7 +100,44 @@ i386_linux_read_description (uint64_t xcr0)
}
#endif
+#ifdef __x86_64__
+
+static target_desc *amd64_tdescs[X86_TDESC_LAST] = { };
+static target_desc *x32_tdescs[X86_TDESC_LAST] = { };
+
+const struct target_desc *
+amd64_linux_read_description (uint64_t xcr0, bool is_x32)
+{
+ enum x86_linux_tdesc idx = xcr0_to_tdesc_idx (xcr0, is_x32);
+
+ if (idx == X86_TDESC_LAST)
+ return NULL;
+
+ struct target_desc **tdesc = NULL;
+
+ if (is_x32)
+ tdesc = &x32_tdescs[idx];
+ else
+ tdesc = &amd64_tdescs[idx];
+
+ if (*tdesc == NULL)
+ {
+ *tdesc = amd64_create_target_description (xcr0, is_x32);
+
+ init_target_desc (*tdesc);
+
+#ifndef IN_PROCESS_AGENT
+ static const char *expedite_regs_amd64[] = { "rbp", "rsp", "rip", NULL };
+ (*tdesc)->expedite_regs = expedite_regs_amd64;
+#endif
+ }
+ return *tdesc;
+}
+
+#endif
+
#ifndef IN_PROCESS_AGENT
+
int
i386_get_ipa_tdesc_idx (const struct target_desc *tdesc)
{
@@ -82,4 +151,23 @@ i386_get_ipa_tdesc_idx (const struct target_desc *tdesc)
return X86_TDESC_MMX;
}
+#if defined __x86_64__
+int
+amd64_get_ipa_tdesc_idx (const struct target_desc *tdesc)
+{
+ for (int i = 0; i < X86_TDESC_LAST; i++)
+ {
+ if (tdesc == amd64_tdescs[i])
+ return i;
+ }
+ for (int i = 0; i < X86_TDESC_LAST; i++)
+ {
+ if (tdesc == x32_tdescs[i])
+ return i;
+ }
+
+ return X86_TDESC_SSE;
+}
+
+#endif
#endif
diff --git a/gdb/gdbserver/linux-x86-tdesc.h b/gdb/gdbserver/linux-x86-tdesc.h
index 03bd1f1..a6dc330 100644
--- a/gdb/gdbserver/linux-x86-tdesc.h
+++ b/gdb/gdbserver/linux-x86-tdesc.h
@@ -33,52 +33,19 @@ enum x86_linux_tdesc {
X86_TDESC_LAST = 7,
};
-#ifdef __x86_64__
-
-#if defined __LP64__ || !defined IN_PROCESS_AGENT
-/* Defined in auto-generated file amd64-linux.c. */
-void init_registers_amd64_linux (void);
-extern const struct target_desc *tdesc_amd64_linux;
-
-/* Defined in auto-generated file amd64-avx-linux.c. */
-void init_registers_amd64_avx_linux (void);
-extern const struct target_desc *tdesc_amd64_avx_linux;
-
-/* Defined in auto-generated file amd64-avx-avx512-linux.c. */
-void init_registers_amd64_avx_avx512_linux (void);
-extern const struct target_desc *tdesc_amd64_avx_avx512_linux;
-
-/* Defined in auto-generated file amd64-avx-mpx-avx512-pku-linux.c. */
-void init_registers_amd64_avx_mpx_avx512_pku_linux (void);
-extern const struct target_desc *tdesc_amd64_avx_mpx_avx512_pku_linux;
-
-/* Defined in auto-generated file amd64-avx-mpx-linux.c. */
-void init_registers_amd64_avx_mpx_linux (void);
-extern const struct target_desc *tdesc_amd64_avx_mpx_linux;
-
-/* Defined in auto-generated file amd64-mpx-linux.c. */
-void init_registers_amd64_mpx_linux (void);
-extern const struct target_desc *tdesc_amd64_mpx_linux;
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+int i386_get_ipa_tdesc_idx (const struct target_desc *tdesc);
#endif
-#if defined __ILP32__ || !defined IN_PROCESS_AGENT
-/* Defined in auto-generated file x32-linux.c. */
-void init_registers_x32_linux (void);
-extern const struct target_desc *tdesc_x32_linux;
-
-/* Defined in auto-generated file x32-avx-linux.c. */
-void init_registers_x32_avx_linux (void);
-extern const struct target_desc *tdesc_x32_avx_linux;
-
-/* Defined in auto-generated file x32-avx-avx512-linux.c. */
-void init_registers_x32_avx_avx512_linux (void);
-extern const struct target_desc *tdesc_x32_avx_avx512_linux;
+#if defined __x86_64__ && !defined IN_PROCESS_AGENT
+int amd64_get_ipa_tdesc_idx (const struct target_desc *tdesc);
#endif
-#endif
+const struct target_desc *i386_get_ipa_tdesc (int idx);
-#if defined __i386__ || !defined IN_PROCESS_AGENT
-int i386_get_ipa_tdesc_idx (const struct target_desc *tdesc);
+#ifdef __x86_64__
+const struct target_desc *amd64_linux_read_description (uint64_t xcr0,
+ bool is_x32);
#endif
const struct target_desc *i386_linux_read_description (uint64_t xcr0);
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 13/22] [GDBserver] Use pre-generated tdesc as test
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (11 preceding siblings ...)
2017-08-21 15:30 ` [PATCH 18/22] Convert amd64-linux target descriptions Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 14/22] [GDBserver] Shorten srv_i386_linux_xmlfiles Yao Qi
` (9 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
Now, these *-generate.c files are only used in GDBserver for unit test.
If $development is false (in release), these *-generate.c files won't be
used at all.
gdb/gdbserver:
2017-07-07 Yao Qi <yao.qi@linaro.org>
* configure.srv: Set srv_i386_linux_regobj empty if $development
is false.
* linux-i386-ipa.c (initialize_low_tracepoint): Don't call
initialize_low_tdesc.
* linux-x86-low.c (initialize_low_arch): Wrap initialize_low_tdesc
with #if initialize_low_tdesc.
* linux-x86-tdesc-selftest.c: New file.
* linux-x86-tdesc.c: Move code to linux-x86-tdesc-selftest.c.
---
gdb/gdbserver/configure.srv | 11 ++--
gdb/gdbserver/linux-i386-ipa.c | 2 -
gdb/gdbserver/linux-x86-low.c | 2 +
gdb/gdbserver/linux-x86-tdesc-selftest.c | 93 ++++++++++++++++++++++++++++++++
gdb/gdbserver/linux-x86-tdesc.c | 82 ----------------------------
5 files changed, 103 insertions(+), 87 deletions(-)
create mode 100644 gdb/gdbserver/linux-x86-tdesc-selftest.c
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 876098b..dbd87b2 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -25,11 +25,16 @@
srv_hostio_err_objs="hostio-errno.o"
srv_i386_regobj="i386.o"
-srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx-avx512-linux.o i386-avx-mpx-avx512-pku-linux.o i386-mpx-linux.o i386-avx-mpx-linux.o i386-mmx-linux.o"
+
+if $development; then
+ srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx-avx512-linux.o i386-avx-mpx-avx512-pku-linux.o i386-mpx-linux.o i386-avx-mpx-linux.o i386-mmx-linux.o linux-x86-tdesc-selftest.o"
+else
+ srv_i386_linux_regobj=""
+fi
+
srv_amd64_regobj="amd64.o"
srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx-avx512-linux.o amd64-avx-mpx-avx512-pku-linux.o amd64-mpx-linux.o amd64-avx-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx-avx512-linux.o"
-ipa_i386_linux_regobj="i386-linux-ipa.o i386-avx-linux-ipa.o i386-avx-mpx-linux-ipa.o i386-avx-avx512-linux-ipa.o i386-avx-mpx-avx512-pku-linux-ipa.o i386-mpx-linux-ipa.o i386-mmx-linux-ipa.o"
ipa_amd64_linux_regobj="amd64-linux-ipa.o amd64-avx-linux-ipa.o amd64-avx-mpx-linux-ipa.o amd64-avx-avx512-linux-ipa.o amd64-avx-mpx-avx512-pku-linux-ipa.o amd64-mpx-linux-ipa.o"
ipa_x32_linux_regobj="x32-linux-ipa.o x32-avx-linux-ipa.o x32-avx-avx512-linux-ipa.o"
ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o"
@@ -131,7 +136,7 @@ case "${target}" in
srv_linux_regsets=yes
srv_linux_thread_db=yes
srv_linux_btrace=yes
- ipa_obj="${ipa_i386_linux_regobj} linux-i386-ipa.o linux-x86-tdesc-ipa.o"
+ ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
ipa_obj="${ipa_obj} i386-ipa.o"
;;
i[34567]86-*-lynxos*) srv_regobj="i386.o"
diff --git a/gdb/gdbserver/linux-i386-ipa.c b/gdb/gdbserver/linux-i386-ipa.c
index 54608da..785a63e 100644
--- a/gdb/gdbserver/linux-i386-ipa.c
+++ b/gdb/gdbserver/linux-i386-ipa.c
@@ -289,7 +289,5 @@ alloc_jump_pad_buffer (size_t size)
void
initialize_low_tracepoint (void)
{
- initialize_low_tdesc ();
-
initialize_fast_tracepoint_trampoline_buffer ();
}
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index 24b76a7..54be82f 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -2969,7 +2969,9 @@ initialize_low_arch (void)
tdesc_amd64_linux_no_xml->xmltarget = xmltarget_amd64_linux_no_xml;
#endif
+#if GDB_SELF_TEST
initialize_low_tdesc ();
+#endif
tdesc_i386_linux_no_xml = XNEW (struct target_desc);
copy_target_description (tdesc_i386_linux_no_xml,
diff --git a/gdb/gdbserver/linux-x86-tdesc-selftest.c b/gdb/gdbserver/linux-x86-tdesc-selftest.c
new file mode 100644
index 0000000..558a25b
--- /dev/null
+++ b/gdb/gdbserver/linux-x86-tdesc-selftest.c
@@ -0,0 +1,93 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "server.h"
+#include "linux-x86-tdesc.h"
+#include "tdesc.h"
+#include "common/selftest.h"
+#include "x86-xstate.h"
+
+/* Defined in auto-generated file i386-linux.c. */
+void init_registers_i386_linux (void);
+extern const struct target_desc *tdesc_i386_linux;
+
+/* Defined in auto-generated file i386-mmx-linux.c. */
+void init_registers_i386_mmx_linux (void);
+extern const struct target_desc *tdesc_i386_mmx_linux;
+
+/* Defined in auto-generated file i386-avx-linux.c. */
+void init_registers_i386_avx_linux (void);
+extern const struct target_desc *tdesc_i386_avx_linux;
+
+/* Defined in auto-generated file i386-avx-mpx-linux.c. */
+void init_registers_i386_avx_mpx_linux (void);
+extern const struct target_desc *tdesc_i386_avx_mpx_linux;
+
+/* Defined in auto-generated file i386-avx-avx512-linux.c. */
+void init_registers_i386_avx_avx512_linux (void);
+extern const struct target_desc *tdesc_i386_avx_avx512_linux;
+
+/* Defined in auto-generated file i386-avx-mpx-avx512-linux.c. */
+void init_registers_i386_avx_mpx_avx512_pku_linux (void);
+extern const struct target_desc *tdesc_i386_avx_mpx_avx512_pku_linux;
+
+/* Defined in auto-generated file i386-mpx-linux.c. */
+void init_registers_i386_mpx_linux (void);
+extern const struct target_desc *tdesc_i386_mpx_linux;
+
+namespace selftests {
+namespace tdesc {
+static void
+i386_tdesc_test ()
+{
+ struct
+ {
+ unsigned int mask;
+ const target_desc *tdesc;
+ } tdesc_tests[] = {
+ { X86_XSTATE_X87, tdesc_i386_mmx_linux },
+ { X86_XSTATE_SSE_MASK, tdesc_i386_linux },
+ { X86_XSTATE_AVX_MASK, tdesc_i386_avx_linux },
+ { X86_XSTATE_MPX_MASK, tdesc_i386_mpx_linux },
+ { X86_XSTATE_AVX_MPX_MASK, tdesc_i386_avx_mpx_linux },
+ { X86_XSTATE_AVX_AVX512_MASK, tdesc_i386_avx_avx512_linux },
+ { X86_XSTATE_AVX_MPX_AVX512_PKU_MASK, tdesc_i386_avx_mpx_avx512_pku_linux }
+ };
+
+ for (auto &elem : tdesc_tests)
+ {
+ const target_desc *tdesc = i386_linux_read_description (elem.mask);
+
+ SELF_CHECK (*tdesc == *elem.tdesc);
+ }
+}
+}
+} // namespace selftests
+
+void
+initialize_low_tdesc ()
+{
+ init_registers_i386_linux ();
+ init_registers_i386_mmx_linux ();
+ init_registers_i386_avx_linux ();
+ init_registers_i386_mpx_linux ();
+ init_registers_i386_avx_mpx_linux ();
+ init_registers_i386_avx_avx512_linux ();
+ init_registers_i386_avx_mpx_avx512_pku_linux ();
+
+ selftests::register_test (selftests::tdesc::i386_tdesc_test);
+}
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
index 548e780..d1e262c 100644
--- a/gdb/gdbserver/linux-x86-tdesc.c
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -23,90 +23,8 @@
#include "arch/i386.h"
#include "common/x86-xstate.h"
-#if defined __i386__ || !defined IN_PROCESS_AGENT
-
-/* Defined in auto-generated file i386-linux.c. */
-void init_registers_i386_linux (void);
-extern const struct target_desc *tdesc_i386_linux;
-
-/* Defined in auto-generated file i386-mmx-linux.c. */
-void init_registers_i386_mmx_linux (void);
-extern const struct target_desc *tdesc_i386_mmx_linux;
-
-/* Defined in auto-generated file i386-avx-linux.c. */
-void init_registers_i386_avx_linux (void);
-extern const struct target_desc *tdesc_i386_avx_linux;
-
-/* Defined in auto-generated file i386-avx-mpx-linux.c. */
-void init_registers_i386_avx_mpx_linux (void);
-extern const struct target_desc *tdesc_i386_avx_mpx_linux;
-
-/* Defined in auto-generated file i386-avx-avx512-linux.c. */
-void init_registers_i386_avx_avx512_linux (void);
-extern const struct target_desc *tdesc_i386_avx_avx512_linux;
-
-/* Defined in auto-generated file i386-avx-mpx-avx512-linux.c. */
-void init_registers_i386_avx_mpx_avx512_pku_linux (void);
-extern const struct target_desc *tdesc_i386_avx_mpx_avx512_pku_linux;
-
-/* Defined in auto-generated file i386-mpx-linux.c. */
-void init_registers_i386_mpx_linux (void);
-extern const struct target_desc *tdesc_i386_mpx_linux;
-#endif
-
static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
-#if defined GDB_SELF_TEST && !defined IN_PROCESS_AGENT
-#include "selftest.h"
-
-namespace selftests {
-namespace tdesc {
-static void
-i386_tdesc_test ()
-{
- struct
- {
- unsigned int mask;
- const target_desc *tdesc;
- } tdesc_tests[] = {
- { X86_XSTATE_X87, tdesc_i386_mmx_linux },
- { X86_XSTATE_SSE_MASK, tdesc_i386_linux },
- { X86_XSTATE_AVX_MASK, tdesc_i386_avx_linux },
- { X86_XSTATE_MPX_MASK, tdesc_i386_mpx_linux },
- { X86_XSTATE_AVX_MPX_MASK, tdesc_i386_avx_mpx_linux },
- { X86_XSTATE_AVX_AVX512_MASK, tdesc_i386_avx_avx512_linux },
- { X86_XSTATE_AVX_MPX_AVX512_PKU_MASK, tdesc_i386_avx_mpx_avx512_pku_linux }
- };
-
- for (auto &elem : tdesc_tests)
- {
- const target_desc *tdesc = i386_linux_read_description (elem.mask);
-
- SELF_CHECK (*tdesc == *elem.tdesc);
- }
-}
-}
-} // namespace selftests
-#endif /* GDB_SELF_TEST */
-
-void
-initialize_low_tdesc ()
-{
-#if defined __i386__ || !defined IN_PROCESS_AGENT
- init_registers_i386_linux ();
- init_registers_i386_mmx_linux ();
- init_registers_i386_avx_linux ();
- init_registers_i386_mpx_linux ();
- init_registers_i386_avx_mpx_linux ();
- init_registers_i386_avx_avx512_linux ();
- init_registers_i386_avx_mpx_avx512_pku_linux ();
-
-#if GDB_SELF_TEST && !defined IN_PROCESS_AGENT
- selftests::register_test (selftests::tdesc::i386_tdesc_test);
-#endif
-#endif
-}
-
#if defined __i386__ || !defined IN_PROCESS_AGENT
/* Return the target description according to XCR0. */
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 14/22] [GDBserver] Shorten srv_i386_linux_xmlfiles
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (12 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 13/22] [GDBserver] Use pre-generated tdesc as test Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 10/22] Dynamically composite xml in reply to GDB Yao Qi
` (8 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
GDBserver now is able to generate target descriptions from features, so
don't need to remember these target description files.
gdb/gdbserver:
2017-07-07 Yao Qi <yao.qi@linaro.org>
* configure.srv (srv_i386_linux_xmlfiles): Remove
i386/i386-XXX-linux.xml from it.
---
gdb/gdbserver/configure.srv | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index dbd87b2..946119c 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -43,7 +43,7 @@ srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.x
srv_i386_64bit_xmlfiles="i386/64bit-core.xml i386/64bit-segments.xml i386/64bit-sse.xml i386/64bit-avx.xml i386/64bit-avx512.xml i386/x32-core.xml i386/64bit-mpx.xml i386/64bit-pkeys.xml"
srv_i386_xmlfiles="i386/i386.xml $srv_i386_32bit_xmlfiles"
srv_amd64_xmlfiles="i386/amd64.xml $srv_i386_64bit_xmlfiles"
-srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-avx-avx512-linux.xml i386/i386-avx-mpx-avx512-pku-linux.xml i386/i386-mmx-linux.xml i386/32bit-linux.xml i386/i386-mpx-linux.xml i386/i386-avx-mpx-linux.xml $srv_i386_32bit_xmlfiles"
+srv_i386_linux_xmlfiles="i386/32bit-linux.xml $srv_i386_32bit_xmlfiles"
srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx-avx512.xml i386/amd64-avx-mpx-avx512-pku-linux.xml i386/64bit-linux.xml i386/amd64-mpx-linux.xml i386/amd64-avx-mpx-linux.xml i386/x32-linux.xml i386/x32-avx-linux.xml i386/x32-avx-avx512-linux.xml $srv_i386_64bit_xmlfiles"
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 10/22] Dynamically composite xml in reply to GDB
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (13 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 14/22] [GDBserver] Shorten srv_i386_linux_xmlfiles Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 22/22] Convert the rest x86 target descriptions Yao Qi
` (7 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
GDBserver still uses pre-generated target descriptions in order to
reply to GDB's query on target description (see xml-builtin-generated.c
in GDBserver build directory). This patch teaches GDBserver to
create XML contents according to the target descriptions rather than
using pre-generated ones.
First, change target feature c files to pass the feature xml file
name to tdesc_create_feature, so that target description in GDBserver
can record them, and create XML contents from these features in
buffer, like
...
<xi:include href="$FEATURE1_XML_NAME"/>
<xi:include href="$FEATURE2_XML_NAME"/>
...
and send this buffer back to GDB.
Note that this patch reuses target_desc.xmltarget a little bit, which is
to hold the XML contents dynamically generated in tdesc_get_features_xml.
However, it is not xfree'ed in ~target_desc, because we can't tell it is
from xstrdup or a literal string. Since we don't delete target_desc,
there is no memory leak yet. After we change all target descriptions to
the new style, target_desc.xmltarget is from xstrdup, then, we can safely
xfree it in ~target_desc.
gdb:
2017-07-07 Yao Qi <yao.qi@linaro.org>
* arch/tdesc.h (tdesc_create_feature): Add an argument xml.
* target-descriptions.c (tdesc_create_feature): Likewise, and
adjust code.
* features/i386/32bit-avx.c: Re-generated.
* features/i386/32bit-avx512.c: Re-generated.
* features/i386/32bit-core.c: Re-generated.
* features/i386/32bit-linux.c: Re-generated.
* features/i386/32bit-mpx.c: Re-generated.
* features/i386/32bit-pkeys.c: Re-generated.
* features/i386/32bit-sse.c: Re-generated.
gdb/gdbserver:
2017-07-03 Yao Qi <yao.qi@linaro.org>
* linux-x86-tdesc.c: Don't include <inttypes.h>.
(i386_linux_read_description) [!IN_PROCESS_AGENT]: Call
set_tdesc_architecture and set_tdesc_osabi. Remove code setting
.xmltarget.
* server.c (get_features_xml): Call tdesc_get_features_xml.
* tdesc.c (set_tdesc_architecture): New function.
(set_tdesc_osabi): New function.
(tdesc_get_features_xml): New function.
(tdesc_create_feature): Add an argument.
* tdesc.h (struct target_desc) <features>: New field.
<arch, osabi>: New field.
(~target_desc): xfree features, arch, and osabi.
(target_desc::oerator==): Don't compare .xmltarget.
[!IN_PROCESS_AGENT] (set_tdesc_architecture): Declare.
(set_tdesc_osabi): Likewise.
(tdesc_get_features_xml): Likewise.
---
gdb/arch/tdesc.h | 4 ++-
gdb/features/i386/32bit-avx.c | 2 +-
gdb/features/i386/32bit-avx512.c | 2 +-
gdb/features/i386/32bit-core.c | 2 +-
gdb/features/i386/32bit-linux.c | 2 +-
gdb/features/i386/32bit-mpx.c | 2 +-
gdb/features/i386/32bit-pkeys.c | 2 +-
gdb/features/i386/32bit-sse.c | 2 +-
gdb/gdbserver/linux-x86-tdesc.c | 24 ++++------------
gdb/gdbserver/server.c | 10 ++++---
gdb/gdbserver/tdesc.c | 62 +++++++++++++++++++++++++++++++++++++++-
gdb/gdbserver/tdesc.h | 34 +++++++++++++++++++---
gdb/target-descriptions.c | 9 ++++--
13 files changed, 118 insertions(+), 39 deletions(-)
diff --git a/gdb/arch/tdesc.h b/gdb/arch/tdesc.h
index 872df68..bf50e24 100644
--- a/gdb/arch/tdesc.h
+++ b/gdb/arch/tdesc.h
@@ -30,7 +30,9 @@ struct tdesc_type *tdesc_named_type (const struct tdesc_feature *feature,
/* Return the created feature named NAME in target description TDESC. */
struct tdesc_feature *tdesc_create_feature (struct target_desc *tdesc,
- const char *name);
+ const char *name,
+ const char *xml = nullptr);
+
/* Return the created vector tdesc_type named NAME in FEATURE. */
struct tdesc_type *tdesc_create_vector (struct tdesc_feature *feature,
diff --git a/gdb/features/i386/32bit-avx.c b/gdb/features/i386/32bit-avx.c
index 3a98936..8a0c356 100644
--- a/gdb/features/i386/32bit-avx.c
+++ b/gdb/features/i386/32bit-avx.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_avx (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx", "32bit-avx.xml");
tdesc_create_reg (feature, "ymm0h", regnum++, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", regnum++, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", regnum++, 1, NULL, 128, "uint128");
diff --git a/gdb/features/i386/32bit-avx512.c b/gdb/features/i386/32bit-avx512.c
index b13e1d3..82b20c5 100644
--- a/gdb/features/i386/32bit-avx512.c
+++ b/gdb/features/i386/32bit-avx512.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_avx512 (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512", "32bit-avx512.xml");
struct tdesc_type *field_type;
field_type = tdesc_named_type (feature, "uint128");
tdesc_create_vector (feature, "v2ui128", field_type, 2);
diff --git a/gdb/features/i386/32bit-core.c b/gdb/features/i386/32bit-core.c
index ea6db93..ec903f3 100644
--- a/gdb/features/i386/32bit-core.c
+++ b/gdb/features/i386/32bit-core.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_core (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "32bit-core.xml");
struct tdesc_type *field_type;
struct tdesc_type *type;
type = tdesc_create_flags (feature, "i386_eflags", 4);
diff --git a/gdb/features/i386/32bit-linux.c b/gdb/features/i386/32bit-linux.c
index 1ba932d..136e3d7 100644
--- a/gdb/features/i386/32bit-linux.c
+++ b/gdb/features/i386/32bit-linux.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_linux (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux", "32bit-linux.xml");
regnum = 41;
tdesc_create_reg (feature, "orig_eax", regnum++, 1, NULL, 32, "int");
return regnum;
diff --git a/gdb/features/i386/32bit-mpx.c b/gdb/features/i386/32bit-mpx.c
index f7d2ef0..25a3fb1 100644
--- a/gdb/features/i386/32bit-mpx.c
+++ b/gdb/features/i386/32bit-mpx.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_mpx (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx", "32bit-mpx.xml");
struct tdesc_type *field_type;
struct tdesc_type *type;
type = tdesc_create_struct (feature, "br128");
diff --git a/gdb/features/i386/32bit-pkeys.c b/gdb/features/i386/32bit-pkeys.c
index 89f1a5b..4ad7649 100644
--- a/gdb/features/i386/32bit-pkeys.c
+++ b/gdb/features/i386/32bit-pkeys.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_pkeys (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys", "32bit-pkeys.xml");
tdesc_create_reg (feature, "pkru", regnum++, 1, NULL, 32, "uint32");
return regnum;
}
diff --git a/gdb/features/i386/32bit-sse.c b/gdb/features/i386/32bit-sse.c
index 98f4cd0..01b2058 100644
--- a/gdb/features/i386/32bit-sse.c
+++ b/gdb/features/i386/32bit-sse.c
@@ -8,7 +8,7 @@ create_feature_i386_32bit_sse (struct target_desc *result, long regnum)
{
struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse", "32bit-sse.xml");
struct tdesc_type *field_type;
field_type = tdesc_named_type (feature, "ieee_single");
tdesc_create_vector (feature, "v4f", field_type, 4);
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
index 1f3dbaf..3f63d8e 100644
--- a/gdb/gdbserver/linux-x86-tdesc.c
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -21,7 +21,6 @@
#include "tdesc.h"
#include "linux-x86-tdesc.h"
#include "x86-xstate.h"
-#include <inttypes.h>
#if defined __i386__ || !defined IN_PROCESS_AGENT
#include "../features/i386/32bit-core.c"
@@ -145,6 +144,11 @@ i386_linux_read_description (uint64_t xcr0)
{
*tdesc = new target_desc ();
+#ifndef IN_PROCESS_AGENT
+ set_tdesc_architecture (*tdesc, "i386");
+ set_tdesc_osabi (*tdesc, "GNU/Linux");
+#endif
+
long regnum = 0;
if (xcr0 & X86_XSTATE_X87)
@@ -172,24 +176,6 @@ i386_linux_read_description (uint64_t xcr0)
#ifndef IN_PROCESS_AGENT
static const char *expedite_regs_i386[] = { "ebp", "esp", "eip", NULL };
(*tdesc)->expedite_regs = expedite_regs_i386;
-
- if (xcr0 & X86_XSTATE_PKRU)
- (*tdesc)->xmltarget = "i386-avx-mpx-avx512-pku-linux.xml";
- else if (xcr0 & X86_XSTATE_AVX512)
- (*tdesc)->xmltarget = "i386-avx-avx512-linux.xml";
- else if ((xcr0 & X86_XSTATE_AVX_MPX_MASK) == X86_XSTATE_AVX_MPX_MASK)
- (*tdesc)->xmltarget = "i386-avx-mpx-linux.xml";
- else if (xcr0 & X86_XSTATE_MPX)
- (*tdesc)->xmltarget = "i386-mpx-linux.xml";
- else if (xcr0 & X86_XSTATE_AVX)
- (*tdesc)->xmltarget = "i386-avx-linux.xml";
- else if (xcr0 & X86_XSTATE_SSE)
- (*tdesc)->xmltarget = "i386-linux.xml";
- else if (xcr0 & X86_XSTATE_X87)
- (*tdesc)->xmltarget = "i386-mmx-linux.xml";
- else
- internal_error (__FILE__, __LINE__,
- "unknown xcr0: %" PRIu64, xcr0);
#endif
}
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 8200aa1..303fd09 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -812,12 +812,14 @@ get_features_xml (const char *annex)
This variable is set up from the auto-generated
init_registers_... routine for the current target. */
- if (desc->xmltarget != NULL && strcmp (annex, "target.xml") == 0)
+ if (strcmp (annex, "target.xml") == 0)
{
- if (*desc->xmltarget == '@')
- return desc->xmltarget + 1;
+ const char *ret = tdesc_get_features_xml ((target_desc*) desc);
+
+ if (*ret == '@')
+ return ret + 1;
else
- annex = desc->xmltarget;
+ annex = ret;
}
#ifdef USE_XML
diff --git a/gdb/gdbserver/tdesc.c b/gdb/gdbserver/tdesc.c
index 4504c9b..0b5096b 100644
--- a/gdb/gdbserver/tdesc.c
+++ b/gdb/gdbserver/tdesc.c
@@ -61,6 +61,62 @@ current_target_desc (void)
return current_process ()->tdesc;
}
+
+void
+set_tdesc_architecture (struct target_desc *target_desc,
+ const char *name)
+{
+ target_desc->arch = xstrdup (name);
+}
+
+void
+set_tdesc_osabi (struct target_desc *target_desc, const char *name)
+{
+ target_desc->osabi = xstrdup (name);
+}
+
+/* Return a string which is of XML format, including XML target
+ description to be sent to GDB. */
+
+const char *
+tdesc_get_features_xml (target_desc *tdesc)
+{
+ /* Either .xmltarget or .features is not NULL. */
+ gdb_assert (tdesc->xmltarget != NULL
+ || (tdesc->features != NULL
+ && tdesc->arch != NULL
+ && tdesc->osabi != NULL));
+
+ if (tdesc->xmltarget == NULL)
+ {
+ std::string buffer ("@<?xml version=\"1.0\"?>");
+
+ buffer += "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">";
+ buffer += "<target>";
+ buffer += "<architecture>";
+ buffer += tdesc->arch;
+ buffer += "</architecture>";
+
+ buffer += "<osabi>";
+ buffer += tdesc->osabi;
+ buffer += "</osabi>";
+
+ char *xml;
+
+ for (int i = 0; VEC_iterate (char_ptr, tdesc->features, i, xml); i++)
+ {
+ buffer += "<xi:include href=\"";
+ buffer += xml;
+ buffer += "\"/>";
+ }
+
+ buffer += "</target>";
+
+ tdesc->xmltarget = xstrdup (buffer.c_str ());
+ }
+
+ return tdesc->xmltarget;
+}
#endif
struct tdesc_type
@@ -69,8 +125,12 @@ struct tdesc_type
/* See arch/tdesc.h. */
struct tdesc_feature *
-tdesc_create_feature (struct target_desc *tdesc, const char *name)
+tdesc_create_feature (struct target_desc *tdesc, const char *name,
+ const char *xml)
{
+#ifndef IN_PROCESS_AGENT
+ VEC_safe_push (char_ptr, tdesc->features, xstrdup (xml));
+#endif
return tdesc;
}
diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h
index 49c82c6..fe3c78f 100644
--- a/gdb/gdbserver/tdesc.h
+++ b/gdb/gdbserver/tdesc.h
@@ -49,9 +49,21 @@ struct target_desc : tdesc_feature
/* Defines what to return when looking for the "target.xml" file in
response to qXfer:features:read. Its contents can either be
verbatim XML code (prefixed with a '@') or else the name of the
- actual XML file to be used in place of "target.xml". */
+ actual XML file to be used in place of "target.xml".
+
+ It can be NULL, then, its content is got from the following three
+ fields features, arch, and osabi in tdesc_get_features_xml. */
const char *xmltarget = NULL;
+ /* XML features in this target description. */
+ VEC (char_ptr) *features = NULL;
+
+ /* The value of <architecture> element in the XML, replying GDB. */
+ const char *arch = NULL;
+
+ /* The value of <osabi> element in the XML, replying GDB. */
+ const char *osabi = NULL;
+
public:
target_desc ()
: reg_defs (NULL), registers_size (0)
@@ -65,6 +77,15 @@ public:
for (i = 0; VEC_iterate (tdesc_reg_p, reg_defs, i, reg); i++)
xfree (reg);
VEC_free (tdesc_reg_p, reg_defs);
+
+ xfree ((char *) arch);
+ xfree ((char *) osabi);
+
+ char *f;
+
+ for (i = 0; VEC_iterate (char_ptr, features, i, f); i++)
+ xfree (f);
+ VEC_free (char_ptr, features);
}
bool operator== (const target_desc &other) const
@@ -96,9 +117,6 @@ public:
if (other.expedite_regs[i] != NULL)
return false;
- if (strcmp (xmltarget, other.xmltarget) != 0)
- return false;
-
return true;
}
@@ -123,4 +141,12 @@ void init_target_desc (struct target_desc *tdesc);
const struct target_desc *current_target_desc (void);
+#ifndef IN_PROCESS_AGENT
+void set_tdesc_architecture (struct target_desc *target_desc,
+ const char *name);
+void set_tdesc_osabi (struct target_desc *target_desc, const char *name);
+
+const char *tdesc_get_features_xml (struct target_desc *tdesc);
+#endif
+
#endif /* TDESC_H */
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index f0ced66..6135e0d 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -1750,7 +1750,8 @@ tdesc_add_enum_value (struct tdesc_type *type, int value,
/* See arch/tdesc.h. */
struct tdesc_feature *
-tdesc_create_feature (struct target_desc *tdesc, const char *name)
+tdesc_create_feature (struct target_desc *tdesc, const char *name,
+ const char *xml)
{
struct tdesc_feature *new_feature = new tdesc_feature (name);
@@ -2202,8 +2203,10 @@ public:
printf_unfiltered ("{\n");
printf_unfiltered (" struct tdesc_feature *feature;\n");
- printf_unfiltered ("\n feature = tdesc_create_feature (result, \"%s\");\n",
- e->name);
+
+ printf_unfiltered
+ ("\n feature = tdesc_create_feature (result, \"%s\", \"%s\");\n",
+ e->name, lbasename (m_filename_after_features.c_str ()));
}
void visit_post (const tdesc_feature *e) override
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 22/22] Convert the rest x86 target descriptions
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (14 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 10/22] Dynamically composite xml in reply to GDB Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 12/22] Remove features/i386/i386-*linux.c Yao Qi
` (6 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
This patch changes the rest of x86 target descriptions in GDB and
GDBserver. This patch touches lynx and nto GDBserver, but I can't find
a cross compiler to build GDBserver for them.
gdb:
2017-08-18 Yao Qi <yao.qi@linaro.org>
* amd64-tdep.c (amd64_target_description): Create target
descriptions.
(_initialize_amd64_tdep): Don't call functions
initialize_tdesc_amd64_*. Add self tests.
* arch/amd64.c (amd64_create_target_description): Add parameter
is_linux. Call set_tdesc_osabi if is_linux is true.
* arch/amd64.h (amd64_create_target_description): Update the
declaration.
* arch/i386.c (i386_create_target_description): Add parameter
is_linux. Call set_tdesc_osabi if is_linux is true.
* arch/i386.h (i386_create_target_description): Update
declaration.
* configure.tgt: Add i386.o to gdb_target_obs.
* features/Makefile (XMLTOC): Remove i386/*.xml.
* features/i386/amd64-avx-avx512.c: Remove.
* features/i386/amd64-avx-mpx-avx512-pku.c: Remove.
* features/i386/amd64-avx-mpx.c: Remove.
* features/i386/amd64-avx.c: Remove.
* features/i386/amd64-mpx.c: Remove.
* features/i386/amd64.c: Remove.
* features/i386/i386-avx-avx512.c: Remove.
* features/i386/i386-avx-mpx-avx512-pku.c: Remove.
* features/i386/i386-avx-mpx.c: Remove.
* features/i386/i386-avx.c: Remove.
* features/i386/i386-mmx.c: Remove.
* features/i386/i386-mpx.c: Remove.
* features/i386/i386.c: Remove.
* i386-tdep.c: Don't include features/i386/i386*.c., include
target-descriptions.h and arch/i386.h.
(i386_target_description): Create target descriptions.
(i386_gdbarch_init): Don't call initialize_tdesc_i386_*
functions. Do self tests.
gdb/gdbserver:
2017-08-18 Yao Qi <yao.qi@linaro.org>
* configure.srv (srv_i386_regobj): Remove.
(srv_amd64_regobj): Remove.
(srv_regobj): Set it to "" for x86 non-linux targets.
* linux-x86-tdesc.c (i386_linux_read_description):
* lynx-i386-low.c: Include x86-xstate.h and arch/i386.h.
(init_registers_i386): Remove the declaration.
(tdesc_i386): Remove the declaration.
(lynx_i386_arch_setup): Call i386_create_target_description.
* nto-x86-low.c: Likewise.
* win32-i386-low.c [__x86_64__]: include arch/amd64.h.
[!__x86_64__]: include arch/i386.h.
(i386_arch_setup) [__x86_64__]: Call amd64_create_target_description.
---
gdb/amd64-linux-tdep.c | 2 +-
gdb/amd64-tdep.c | 66 +++---
gdb/arch/amd64.c | 11 +-
gdb/arch/amd64.h | 3 +-
gdb/arch/i386.c | 8 +-
gdb/arch/i386.h | 2 +-
gdb/configure.tgt | 56 ++---
gdb/features/Makefile | 13 --
gdb/features/i386/amd64-avx-avx512.c | 283 -----------------------
gdb/features/i386/amd64-avx-mpx-avx512-pku.c | 324 ---------------------------
gdb/features/i386/amd64-avx-mpx.c | 210 -----------------
gdb/features/i386/amd64-avx.c | 172 --------------
gdb/features/i386/amd64-mpx.c | 192 ----------------
gdb/features/i386/amd64.c | 154 -------------
gdb/features/i386/i386-avx-avx512.c | 165 --------------
gdb/features/i386/i386-avx-mpx-avx512-pku.c | 206 -----------------
gdb/features/i386/i386-avx-mpx.c | 182 ---------------
gdb/features/i386/i386-avx.c | 144 ------------
gdb/features/i386/i386-mmx.c | 73 ------
gdb/features/i386/i386-mpx.c | 172 --------------
gdb/features/i386/i386.c | 134 -----------
gdb/gdbserver/configure.srv | 26 ++-
gdb/gdbserver/linux-x86-tdesc.c | 4 +-
gdb/gdbserver/lynx-i386-low.c | 9 +-
gdb/gdbserver/nto-x86-low.c | 11 +-
gdb/gdbserver/win32-i386-low.c | 22 +-
gdb/i386-linux-tdep.c | 2 +-
gdb/i386-tdep.c | 75 ++++---
28 files changed, 153 insertions(+), 2568 deletions(-)
delete mode 100644 gdb/features/i386/amd64-avx-avx512.c
delete mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku.c
delete mode 100644 gdb/features/i386/amd64-avx-mpx.c
delete mode 100644 gdb/features/i386/amd64-avx.c
delete mode 100644 gdb/features/i386/amd64-mpx.c
delete mode 100644 gdb/features/i386/amd64.c
delete mode 100644 gdb/features/i386/i386-avx-avx512.c
delete mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku.c
delete mode 100644 gdb/features/i386/i386-avx-mpx.c
delete mode 100644 gdb/features/i386/i386-avx.c
delete mode 100644 gdb/features/i386/i386-mmx.c
delete mode 100644 gdb/features/i386/i386-mpx.c
delete mode 100644 gdb/features/i386/i386.c
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 7fbd328..89d3b6a 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -1589,7 +1589,7 @@ amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32)
}
if (*tdesc == NULL)
- *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32);
+ *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32, true);
return *tdesc;
}
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index 89a060d..d459eb2 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -41,14 +41,8 @@
#include "i387-tdep.h"
#include "x86-xstate.h"
#include <algorithm>
-
-#include "features/i386/amd64.c"
-#include "features/i386/amd64-avx.c"
-#include "features/i386/amd64-mpx.c"
-#include "features/i386/amd64-avx-mpx.c"
-#include "features/i386/amd64-avx-avx512.c"
-#include "features/i386/amd64-avx-mpx-avx512-pku.c"
-
+#include "target-descriptions.h"
+#include "arch/amd64.h"
#include "ax.h"
#include "ax-gdb.h"
@@ -3212,21 +3206,19 @@ amd64_x32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
const struct target_desc *
amd64_target_description (uint64_t xcr0)
{
- switch (xcr0 & X86_XSTATE_ALL_MASK)
- {
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- return tdesc_amd64_avx_mpx_avx512_pku;
- case X86_XSTATE_AVX_AVX512_MASK:
- return tdesc_amd64_avx_avx512;
- case X86_XSTATE_MPX_MASK:
- return tdesc_amd64_mpx;
- case X86_XSTATE_AVX_MPX_MASK:
- return tdesc_amd64_avx_mpx;
- case X86_XSTATE_AVX_MASK:
- return tdesc_amd64_avx;
- default:
- return tdesc_amd64;
- }
+ static target_desc *amd64_tdescs \
+ [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
+ target_desc **tdesc;
+
+ tdesc = &amd64_tdescs[(xcr0 & X86_XSTATE_AVX) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_MPX) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_AVX512) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
+
+ if (*tdesc == NULL)
+ *tdesc = amd64_create_target_description (xcr0, false, false);
+
+ return *tdesc;
}
/* Provide a prototype to silence -Wmissing-prototypes. */
@@ -3235,12 +3227,28 @@ void _initialize_amd64_tdep (void);
void
_initialize_amd64_tdep (void)
{
- initialize_tdesc_amd64 ();
- initialize_tdesc_amd64_avx ();
- initialize_tdesc_amd64_mpx ();
- initialize_tdesc_amd64_avx_mpx ();
- initialize_tdesc_amd64_avx_avx512 ();
- initialize_tdesc_amd64_avx_mpx_avx512_pku ();
+#if GDB_SELF_TEST
+ struct
+ {
+ const char *xml;
+ uint64_t mask;
+ } xml_masks[] = {
+ { "i386/amd64.xml", X86_XSTATE_SSE_MASK },
+ { "i386/amd64-avx.xml", X86_XSTATE_AVX_MASK },
+ { "i386/amd64-mpx.xml", X86_XSTATE_MPX_MASK },
+ { "i386/amd64-avx-mpx.xml", X86_XSTATE_AVX_MPX_MASK },
+ { "i386/amd64-avx-avx512.xml", X86_XSTATE_AVX_AVX512_MASK },
+ { "i386/amd64-avx-mpx-avx512-pku.xml",
+ X86_XSTATE_AVX_MPX_AVX512_PKU_MASK },
+ };
+
+ for (auto &a : xml_masks)
+ {
+ auto tdesc = amd64_target_description (a.mask);
+
+ selftests::record_xml_tdesc (a.xml, tdesc);
+ }
+#endif /* GDB_SELF_TEST */
}
\f
diff --git a/gdb/arch/amd64.c b/gdb/arch/amd64.c
index 626733d..30c73e6 100644
--- a/gdb/arch/amd64.c
+++ b/gdb/arch/amd64.c
@@ -31,17 +31,19 @@
#include "../features/i386/x32-core.c"
/* Create amd64 target descriptions according to XCR0. If IS_X32 is
- true, create the x32 ones. */
+ true, create the x32 ones. If IS_LINUX is true, create target
+ descriptions for Linux. */
target_desc *
-amd64_create_target_description (uint64_t xcr0, bool is_x32)
+amd64_create_target_description (uint64_t xcr0, bool is_x32, bool is_linux)
{
target_desc *tdesc = allocate_target_description ();
#ifndef IN_PROCESS_AGENT
set_tdesc_architecture (tdesc, is_x32 ? "i386:x64-32" : "i386:x86-64");
- set_tdesc_osabi (tdesc, "GNU/Linux");
+ if (is_linux)
+ set_tdesc_osabi (tdesc, "GNU/Linux");
#endif
long regnum = 0;
@@ -52,7 +54,8 @@ amd64_create_target_description (uint64_t xcr0, bool is_x32)
regnum = create_feature_i386_64bit_core (tdesc, regnum);
regnum = create_feature_i386_64bit_sse (tdesc, regnum);
- regnum = create_feature_i386_64bit_linux (tdesc, regnum);
+ if (is_linux)
+ regnum = create_feature_i386_64bit_linux (tdesc, regnum);
regnum = create_feature_i386_64bit_segments (tdesc, regnum);
if (xcr0 & X86_XSTATE_AVX)
diff --git a/gdb/arch/amd64.h b/gdb/arch/amd64.h
index 0821a7c..22c63d2 100644
--- a/gdb/arch/amd64.h
+++ b/gdb/arch/amd64.h
@@ -18,4 +18,5 @@
#include "tdesc.h"
#include <stdint.h>
-target_desc *amd64_create_target_description (uint64_t xcr0, bool is_x32);
+target_desc *amd64_create_target_description (uint64_t xcr0, bool is_x32,
+ bool is_linux);
diff --git a/gdb/arch/i386.c b/gdb/arch/i386.c
index 60cf63b..7d71506 100644
--- a/gdb/arch/i386.c
+++ b/gdb/arch/i386.c
@@ -31,13 +31,14 @@
/* Create i386 target descriptions according to XCR0. */
target_desc *
-i386_create_target_description (uint64_t xcr0)
+i386_create_target_description (uint64_t xcr0, bool is_linux)
{
target_desc *tdesc = allocate_target_description ();
#ifndef IN_PROCESS_AGENT
set_tdesc_architecture (tdesc, "i386");
- set_tdesc_osabi (tdesc, "GNU/Linux");
+ if (is_linux)
+ set_tdesc_osabi (tdesc, "GNU/Linux");
#endif
long regnum = 0;
@@ -48,7 +49,8 @@ i386_create_target_description (uint64_t xcr0)
if (xcr0 & X86_XSTATE_SSE)
regnum = create_feature_i386_32bit_sse (tdesc, regnum);
- regnum = create_feature_i386_32bit_linux (tdesc, regnum);
+ if (is_linux)
+ regnum = create_feature_i386_32bit_linux (tdesc, regnum);
if (xcr0 & X86_XSTATE_AVX)
regnum = create_feature_i386_32bit_avx (tdesc, regnum);
diff --git a/gdb/arch/i386.h b/gdb/arch/i386.h
index 0163372..c44e24b 100644
--- a/gdb/arch/i386.h
+++ b/gdb/arch/i386.h
@@ -18,4 +18,4 @@
#include "tdesc.h"
#include <stdint.h>
-target_desc *i386_create_target_description (uint64_t xcr0);
+target_desc *i386_create_target_description (uint64_t xcr0, bool is_linux);
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 402d6ba..2b48749 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -184,7 +184,7 @@ hppa*-*-*)
i[34567]86-*-darwin*)
# Target: Darwin/i386
- gdb_target_obs="i386-tdep.o i387-tdep.o \
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o \
i386-darwin-tdep.o solib-darwin.o"
if test "x$enable_64_bit_bfd" = "xyes"; then
# Target: GNU/Linux x86-64
@@ -193,38 +193,40 @@ i[34567]86-*-darwin*)
;;
i[34567]86-*-dicos*)
# Target: DICOS/i386
- gdb_target_obs="i386-tdep.o i387-tdep.o dicos-tdep.o i386-dicos-tdep.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o dicos-tdep.o i386-dicos-tdep.o"
;;
i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
# Target: FreeBSD/i386
- gdb_target_obs="i386-tdep.o i387-tdep.o i386-bsd-tdep.o i386-fbsd-tdep.o \
- fbsd-tdep.o solib-svr4.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-bsd-tdep.o \
+ i386-fbsd-tdep.o fbsd-tdep.o solib-svr4.o"
;;
i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
# Target: NetBSD/i386
- gdb_target_obs="i386-tdep.o i387-tdep.o i386-bsd-tdep.o i386-nbsd-tdep.o \
- nbsd-tdep.o solib-svr4.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-bsd-tdep.o \
+ i386-nbsd-tdep.o nbsd-tdep.o solib-svr4.o"
;;
i[34567]86-*-openbsd*)
# Target: OpenBSD/i386
- gdb_target_obs="i386-tdep.o i387-tdep.o i386-bsd-tdep.o i386-obsd-tdep.o \
- obsd-tdep.o bsd-uthread.o solib-svr4.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-bsd-tdep.o \
+ i386-obsd-tdep.o obsd-tdep.o bsd-uthread.o \
+ solib-svr4.o"
;;
i[34567]86-*-nto*)
# Target: Intel 386 running qnx6.
- gdb_target_obs="i386-tdep.o i387-tdep.o solib-svr4.o \
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o solib-svr4.o \
i386-nto-tdep.o nto-tdep.o"
build_gdbserver=yes
;;
i[34567]86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]*)
# Target: Solaris x86_64
- gdb_target_obs="i386-tdep.o i387-tdep.o amd64-tdep.o amd64-sol2-tdep.o \
- i386-sol2-tdep.o sol2-tdep.o solib-svr4.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o amd64-tdep.o \
+ amd64-sol2-tdep.o i386-sol2-tdep.o sol2-tdep.o \
+ solib-svr4.o"
;;
i[34567]86-*-solaris*)
# Target: Solaris x86
gdb_target_obs="i386-tdep.o i387-tdep.o i386-sol2-tdep.o sol2-tdep.o \
- solib-svr4.o"
+ i386.o solib-svr4.o"
;;
i[34567]86-*-linux*)
# Target: Intel 386 running GNU/Linux
@@ -240,27 +242,27 @@ i[34567]86-*-linux*)
;;
i[34567]86-*-gnu*)
# Target: Intel 386 running the GNU Hurd
- gdb_target_obs="i386-tdep.o i387-tdep.o i386-gnu-tdep.o solib-svr4.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-gnu-tdep.o solib-svr4.o"
;;
i[34567]86-*-cygwin*)
# Target: Intel 386 running win32
- gdb_target_obs="i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
+ gdb_target_obs="i386-tdep.o i386.o i386-cygwin-tdep.o i387-tdep.o \
windows-tdep.o"
build_gdbserver=yes
;;
i[34567]86-*-mingw32*)
# Target: Intel 386 running win32
- gdb_target_obs="i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
+ gdb_target_obs="i386-tdep.o i386.o i386-cygwin-tdep.o i387-tdep.o \
windows-tdep.o"
build_gdbserver=yes
;;
i[34567]86-*-go32* | i[34567]86-*-msdosdjgpp*)
# Target: i386 running DJGPP/go32.
- gdb_target_obs="i386-tdep.o i387-tdep.o i386-go32-tdep.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-go32-tdep.o"
;;
i[34567]86-*-*)
# Target: i386
- gdb_target_obs="i386-tdep.o i387-tdep.o"
+ gdb_target_obs="i386-tdep.o i386.o i387-tdep.o"
;;
ia64-*-linux*)
@@ -663,18 +665,18 @@ vax-*-*)
x86_64-*-darwin*)
# Target: Darwin/x86-64
- gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o \
+ gdb_target_obs="amd64-tdep.o amd64.o i386-tdep.o i387-tdep.o \
i386-darwin-tdep.o amd64-darwin-tdep.o \
solib-darwin.o"
;;
x86_64-*-dicos*)
# Target: DICOS/x86-64
- gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o \
+ gdb_target_obs="amd64-tdep.o amd64.o i386-tdep.o i387-tdep.o \
dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o"
;;
x86_64-*-elf*)
- gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o"
+ gdb_target_obs="amd64-tdep.o amd64.o i386-tdep.o i387-tdep.o"
;;
x86_64-*-linux*)
# Target: GNU/Linux x86-64
@@ -685,30 +687,30 @@ x86_64-*-linux*)
;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
# Target: FreeBSD/amd64
- gdb_target_obs="amd64-tdep.o amd64-fbsd-tdep.o i386-tdep.o \
+ gdb_target_obs="amd64-tdep.o amd64.o amd64-fbsd-tdep.o i386-tdep.o \
i387-tdep.o i386-bsd-tdep.o i386-fbsd-tdep.o \
fbsd-tdep.o solib-svr4.o"
;;
x86_64-*-mingw* | x86_64-*-cygwin*)
# Target: MingW/amd64
- gdb_target_obs="amd64-tdep.o amd64-windows-tdep.o \
- i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
+ gdb_target_obs="amd64-tdep.o amd64.o amd64-windows-tdep.o \
+ i386-tdep.o i386.o i386-cygwin-tdep.o i387-tdep.o \
windows-tdep.o"
build_gdbserver=yes
;;
x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
# Target: NetBSD/amd64
- gdb_target_obs="amd64-tdep.o amd64-nbsd-tdep.o i386-tdep.o i387-tdep.o \
- nbsd-tdep.o solib-svr4.o"
+ gdb_target_obs="amd64-tdep.o amd64.o amd64-nbsd-tdep.o i386-tdep.o \
+ i387-tdep.o nbsd-tdep.o solib-svr4.o"
;;
x86_64-*-openbsd*)
# Target: OpenBSD/amd64
- gdb_target_obs="amd64-tdep.o amd64-obsd-tdep.o i386-tdep.o \
+ gdb_target_obs="amd64-tdep.o amd64.o amd64-obsd-tdep.o i386-tdep.o \
i387-tdep.o i386-bsd-tdep.o i386-obsd-tdep.o \
obsd-tdep.o bsd-uthread.o solib-svr4.o"
;;
x86_64-*-rtems*)
- gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o i386-bsd-tdep.o"
+ gdb_target_obs="amd64-tdep.o amd64.o i386-tdep.o i387-tdep.o i386-bsd-tdep.o"
;;
xtensa*-*-linux*) gdb_target=linux
# Target: GNU/Linux Xtensa
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 6c4a9b3..4a95c81 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -138,19 +138,6 @@ XMLTOC = \
arm/arm-with-neon.xml \
arm/arm-with-vfpv2.xml \
arm/arm-with-vfpv3.xml \
- i386/amd64-avx.xml \
- i386/amd64-avx-avx512.xml \
- i386/amd64-avx-mpx-avx512-pku.xml \
- i386/amd64-mpx.xml \
- i386/amd64-avx-mpx.xml \
- i386/amd64.xml \
- i386/i386-avx.xml \
- i386/i386-avx-avx512.xml \
- i386/i386-avx-mpx-avx512-pku.xml \
- i386/i386-mmx.xml \
- i386/i386-mpx.xml \
- i386/i386-avx-mpx.xml \
- i386/i386.xml \
microblaze-with-stack-protect.xml \
microblaze.xml \
mips-dsp-linux.xml \
diff --git a/gdb/features/i386/amd64-avx-avx512.c b/gdb/features/i386/amd64-avx-avx512.c
deleted file mode 100644
index 354d826..0000000
--- a/gdb/features/i386/amd64-avx-avx512.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-avx512.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_avx512;
-static void
-initialize_tdesc_amd64_avx_avx512 (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 57, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 58, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 59, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 74, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "xmm16", 75, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm17", 76, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm18", 77, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm19", 78, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm20", 79, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm21", 80, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm22", 81, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm23", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm24", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm25", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm26", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm27", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm28", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm29", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm30", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm31", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "ymm16h", 91, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm17h", 92, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm18h", 93, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm19h", 94, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm20h", 95, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm21h", 96, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm22h", 97, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm23h", 98, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm24h", 99, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm25h", 100, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm26h", 101, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm27h", 102, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm28h", 103, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm29h", 104, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm30h", 105, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm31h", 106, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "k0", 107, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 108, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 109, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 110, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 111, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 112, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 113, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 114, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 115, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 116, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 117, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 118, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 119, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 120, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 121, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 122, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm8h", 123, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm9h", 124, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm10h", 125, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm11h", 126, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm12h", 127, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm13h", 128, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm14h", 129, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm15h", 130, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm16h", 131, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm17h", 132, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm18h", 133, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm19h", 134, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm20h", 135, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm21h", 136, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm22h", 137, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm23h", 138, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm24h", 139, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm25h", 140, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm26h", 141, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm27h", 142, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm28h", 143, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm29h", 144, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm30h", 145, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm31h", 146, 1, NULL, 256, "v2ui128");
-
- tdesc_amd64_avx_avx512 = result;
-}
diff --git a/gdb/features/i386/amd64-avx-mpx-avx512-pku.c b/gdb/features/i386/amd64-avx-mpx-avx512-pku.c
deleted file mode 100644
index bade64d..0000000
--- a/gdb/features/i386/amd64-avx-mpx-avx512-pku.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-mpx-avx512-pku.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_mpx_avx512_pku;
-static void
-initialize_tdesc_amd64_avx_mpx_avx512_pku (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 57, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 58, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 59, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 74, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 75, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 76, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 77, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 78, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 79, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 80, 1, NULL, 64, "status");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "xmm16", 81, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm17", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm18", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm19", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm20", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm21", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm22", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm23", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm24", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm25", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm26", 91, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm27", 92, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm28", 93, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm29", 94, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm30", 95, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm31", 96, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "ymm16h", 97, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm17h", 98, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm18h", 99, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm19h", 100, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm20h", 101, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm21h", 102, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm22h", 103, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm23h", 104, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm24h", 105, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm25h", 106, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm26h", 107, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm27h", 108, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm28h", 109, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm29h", 110, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm30h", 111, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm31h", 112, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "k0", 113, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 114, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 115, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 116, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 117, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 118, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 119, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 120, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 121, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 122, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 123, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 124, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 125, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 126, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 127, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 128, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm8h", 129, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm9h", 130, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm10h", 131, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm11h", 132, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm12h", 133, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm13h", 134, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm14h", 135, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm15h", 136, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm16h", 137, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm17h", 138, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm18h", 139, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm19h", 140, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm20h", 141, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm21h", 142, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm22h", 143, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm23h", 144, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm24h", 145, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm25h", 146, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm26h", 147, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm27h", 148, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm28h", 149, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm29h", 150, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm30h", 151, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm31h", 152, 1, NULL, 256, "v2ui128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys");
- tdesc_create_reg (feature, "pkru", 153, 1, NULL, 32, "uint32");
-
- tdesc_amd64_avx_mpx_avx512_pku = result;
-}
diff --git a/gdb/features/i386/amd64-avx-mpx.c b/gdb/features/i386/amd64-avx-mpx.c
deleted file mode 100644
index 5dced15..0000000
--- a/gdb/features/i386/amd64-avx-mpx.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-mpx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_mpx;
-static void
-initialize_tdesc_amd64_avx_mpx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 57, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 58, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 59, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 74, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 75, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 76, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 77, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 78, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 79, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 80, 1, NULL, 64, "status");
-
- tdesc_amd64_avx_mpx = result;
-}
diff --git a/gdb/features/i386/amd64-avx.c b/gdb/features/i386/amd64-avx.c
deleted file mode 100644
index 016689a..0000000
--- a/gdb/features/i386/amd64-avx.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx;
-static void
-initialize_tdesc_amd64_avx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 57, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 58, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 59, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 74, 1, NULL, 128, "uint128");
-
- tdesc_amd64_avx = result;
-}
diff --git a/gdb/features/i386/amd64-mpx.c b/gdb/features/i386/amd64-mpx.c
deleted file mode 100644
index ed7767d..0000000
--- a/gdb/features/i386/amd64-mpx.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-mpx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_mpx;
-static void
-initialize_tdesc_amd64_mpx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 57, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 58, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 59, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 60, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 61, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 62, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 63, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 64, 1, NULL, 64, "status");
-
- tdesc_amd64_mpx = result;
-}
diff --git a/gdb/features/i386/amd64.c b/gdb/features/i386/amd64.c
deleted file mode 100644
index 4ad79cb..0000000
--- a/gdb/features/i386/amd64.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64;
-static void
-initialize_tdesc_amd64 (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 57, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 58, 1, NULL, 64, "int");
-
- tdesc_amd64 = result;
-}
diff --git a/gdb/features/i386/i386-avx-avx512.c b/gdb/features/i386/i386-avx-avx512.c
deleted file mode 100644
index 585a0ac..0000000
--- a/gdb/features/i386/i386-avx-avx512.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-avx512.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_avx512;
-static void
-initialize_tdesc_i386_avx_avx512 (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "k0", 49, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 50, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 51, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 52, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 53, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 54, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 55, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 56, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 57, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 58, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 59, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 60, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 61, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 62, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 63, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 64, 1, NULL, 256, "v2ui128");
-
- tdesc_i386_avx_avx512 = result;
-}
diff --git a/gdb/features/i386/i386-avx-mpx-avx512-pku.c b/gdb/features/i386/i386-avx-mpx-avx512-pku.c
deleted file mode 100644
index d7dd3bb..0000000
--- a/gdb/features/i386/i386-avx-mpx-avx512-pku.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-mpx-avx512-pku.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_mpx_avx512_pku;
-static void
-initialize_tdesc_i386_avx_mpx_avx512_pku (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 49, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 50, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 51, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 52, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 53, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 54, 1, NULL, 64, "status");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "k0", 55, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 56, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 57, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 58, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 59, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 60, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 61, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 62, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 63, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 64, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 65, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 66, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 67, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 68, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 69, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 70, 1, NULL, 256, "v2ui128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys");
- tdesc_create_reg (feature, "pkru", 71, 1, NULL, 32, "uint32");
-
- tdesc_i386_avx_mpx_avx512_pku = result;
-}
diff --git a/gdb/features/i386/i386-avx-mpx.c b/gdb/features/i386/i386-avx-mpx.c
deleted file mode 100644
index f479bda..0000000
--- a/gdb/features/i386/i386-avx-mpx.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-mpx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_mpx;
-static void
-initialize_tdesc_i386_avx_mpx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 49, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 50, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 51, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 52, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 53, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 54, 1, NULL, 64, "status");
-
- tdesc_i386_avx_mpx = result;
-}
diff --git a/gdb/features/i386/i386-avx.c b/gdb/features/i386/i386-avx.c
deleted file mode 100644
index f888335..0000000
--- a/gdb/features/i386/i386-avx.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx;
-static void
-initialize_tdesc_i386_avx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
-
- tdesc_i386_avx = result;
-}
diff --git a/gdb/features/i386/i386-mmx.c b/gdb/features/i386/i386-mmx.c
deleted file mode 100644
index 02aee89..0000000
--- a/gdb/features/i386/i386-mmx.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-mmx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_mmx;
-static void
-initialize_tdesc_i386_mmx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- tdesc_i386_mmx = result;
-}
diff --git a/gdb/features/i386/i386-mpx.c b/gdb/features/i386/i386-mpx.c
deleted file mode 100644
index d08441b..0000000
--- a/gdb/features/i386/i386-mpx.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-mpx.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_mpx;
-static void
-initialize_tdesc_i386_mpx (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 41, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 42, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 43, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 44, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 45, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 46, 1, NULL, 64, "status");
-
- tdesc_i386_mpx = result;
-}
diff --git a/gdb/features/i386/i386.c b/gdb/features/i386/i386.c
deleted file mode 100644
index eb9a266..0000000
--- a/gdb/features/i386/i386.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386;
-static void
-initialize_tdesc_i386 (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- tdesc_i386 = result;
-}
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index a2c5afe..2a0c2b2 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -24,8 +24,6 @@
# Default hostio_last_error implementation
srv_hostio_err_objs="hostio-errno.o"
-srv_i386_regobj="i386.o"
-
if $development; then
srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx-avx512-linux.o i386-avx-mpx-avx512-pku-linux.o i386-mpx-linux.o i386-avx-mpx-linux.o i386-mmx-linux.o linux-x86-tdesc-selftest.o"
srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx-avx512-linux.o amd64-avx-mpx-avx512-pku-linux.o amd64-mpx-linux.o amd64-avx-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx-avx512-linux.o"
@@ -34,8 +32,6 @@ else
srv_amd64_linux_regobj=""
fi
-srv_amd64_regobj="amd64.o"
-
ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o"
srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml i386/32bit-avx512.xml i386/32bit-mpx.xml i386/32bit-pkeys.xml"
@@ -115,8 +111,9 @@ case "${target}" in
srv_linux_usrregs=yes
srv_linux_thread_db=yes
;;
- i[34567]86-*-cygwin*) srv_regobj="$srv_i386_regobj"
+ i[34567]86-*-cygwin*) srv_regobj=""
srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
+ srv_tgtobj="${srv_tgtobj} arch-i386.o"
srv_xmlfiles="$srv_i386_xmlfiles"
;;
i[34567]86-*-linux*) srv_regobj="$srv_i386_linux_regobj"
@@ -138,16 +135,18 @@ case "${target}" in
ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
ipa_obj="${ipa_obj} i386-ipa.o"
;;
- i[34567]86-*-lynxos*) srv_regobj="i386.o"
+ i[34567]86-*-lynxos*) srv_regobj=""
srv_tgtobj="lynx-low.o lynx-i386-low.o fork-child.o fork-inferior.o"
+ srv_tgtobj="${srv_tgtobj} arch-i386.o"
srv_xmlfiles="i386/i386.xml"
srv_xmlfiles="${srv_xmlfiles} i386/32bit-core.xml"
srv_xmlfiles="${srv_xmlfiles} i386/32bit-sse.xml"
srv_lynxos=yes
;;
i[34567]86-*-mingw32ce*)
- srv_regobj="$srv_i386_regobj"
+ srv_regobj=""
srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
+ srv_tgtobj="${srv_tgtobj} arch-i386.o"
srv_tgtobj="${srv_tgtobj} wincecompat.o"
srv_xmlfiles="$srv_i386_xmlfiles"
# hostio_last_error implementation is in win32-low.c
@@ -155,13 +154,14 @@ case "${target}" in
srv_mingw=yes
srv_mingwce=yes
;;
- i[34567]86-*-mingw*) srv_regobj="$srv_i386_regobj"
+ i[34567]86-*-mingw*) srv_regobj=""
srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
+ srv_tgtobj="${srv_tgtobj} arch-i386.o"
srv_xmlfiles="$srv_i386_xmlfiles"
srv_mingw=yes
;;
- i[34567]86-*-nto*) srv_regobj="$srv_i386_regobj"
- srv_tgtobj="nto-low.o nto-x86-low.o"
+ i[34567]86-*-nto*) srv_regobj=""
+ srv_tgtobj="nto-low.o nto-x86-low.o arch-i386.o"
srv_xmlfiles="$srv_i386_xmlfiles"
srv_qnx="yes"
;;
@@ -377,13 +377,15 @@ case "${target}" in
ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
ipa_obj="${ipa_obj} amd64-ipa.o"
;;
- x86_64-*-mingw*) srv_regobj="$srv_amd64_regobj"
+ x86_64-*-mingw*) srv_regobj=""
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
+ srv_tgtobj="${srv_tgtobj} arch-amd64.o"
srv_xmlfiles="$srv_i386_xmlfiles $srv_amd64_xmlfiles"
srv_mingw=yes
;;
- x86_64-*-cygwin*) srv_regobj="$srv_amd64_regobj"
+ x86_64-*-cygwin*) srv_regobj=""
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
+ srv_tgtobj="${srv_tgtobj} arch-amd64.o"
srv_xmlfiles="$srv_i386_xmlfiles"
;;
diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c
index 9eb61a7..d27068c 100644
--- a/gdb/gdbserver/linux-x86-tdesc.c
+++ b/gdb/gdbserver/linux-x86-tdesc.c
@@ -86,7 +86,7 @@ i386_linux_read_description (uint64_t xcr0)
if (*tdesc == NULL)
{
- *tdesc = i386_create_target_description (xcr0);
+ *tdesc = i386_create_target_description (xcr0, true);
init_target_desc (*tdesc);
@@ -122,7 +122,7 @@ amd64_linux_read_description (uint64_t xcr0, bool is_x32)
if (*tdesc == NULL)
{
- *tdesc = amd64_create_target_description (xcr0, is_x32);
+ *tdesc = amd64_create_target_description (xcr0, is_x32, true);
init_target_desc (*tdesc);
diff --git a/gdb/gdbserver/lynx-i386-low.c b/gdb/gdbserver/lynx-i386-low.c
index 64e6c0f..57181d6 100644
--- a/gdb/gdbserver/lynx-i386-low.c
+++ b/gdb/gdbserver/lynx-i386-low.c
@@ -19,6 +19,8 @@
#include "lynx-low.h"
#include <limits.h>
#include <sys/ptrace.h>
+#include "x86-xstate.h"
+#include "arch/i386.h"
/* The following two typedefs are defined in a .h file which is not
in the standard include path (/sys/include/family/x86/ucontext.h),
@@ -118,10 +120,6 @@ enum lynx_i386_gdb_regnum
I386_SENTINEL_REGUM
};
-/* Defined in auto-generated file i386.c. */
-extern void init_registers_i386 (void);
-extern const struct target_desc *tdesc_i386;
-
/* The fill_function for the general-purpose register set. */
static void
@@ -295,8 +293,7 @@ lynx_i386_store_fpregset (struct regcache *regcache, const char *buf)
static void
lynx_i386_arch_setup (void)
{
- init_registers_i386 ();
- lynx_tdesc = tdesc_i386;
+ lynx_tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false);
}
/* Description of all the x86-lynx register sets. */
diff --git a/gdb/gdbserver/nto-x86-low.c b/gdb/gdbserver/nto-x86-low.c
index 901ac7b..cfa5993 100644
--- a/gdb/gdbserver/nto-x86-low.c
+++ b/gdb/gdbserver/nto-x86-low.c
@@ -23,12 +23,8 @@
#include "regcache.h"
#include <x86/context.h>
-
-
-/* Defined in auto-generated build-time file gdb/gdbserver/i386.c. */
-extern void init_registers_i386 ();
-extern struct reg *regs_i386;
-extern const struct target_desc *tdesc_i386;
+#include "x86-xstate.h"
+#include "arch/i386.h"
const unsigned char x86_breakpoint[] = { 0xCC };
#define x86_breakpoint_len 1
@@ -90,9 +86,8 @@ nto_x86_register_offset (int gdbregno)
static void
nto_x86_arch_setup (void)
{
- init_registers_i386 ();
the_low_target.num_regs = 16;
- nto_tdesc = tdesc_i386;
+ nto_tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false);
}
struct nto_target_ops the_low_target =
diff --git a/gdb/gdbserver/win32-i386-low.c b/gdb/gdbserver/win32-i386-low.c
index c505190..f6a0428 100644
--- a/gdb/gdbserver/win32-i386-low.c
+++ b/gdb/gdbserver/win32-i386-low.c
@@ -18,6 +18,11 @@
#include "server.h"
#include "win32-low.h"
#include "x86-low.h"
+#include "x86-xstate.h"
+#ifdef __x86_64__
+#include "arch/amd64.h"
+#endif
+#include "arch/i386.h"
#ifndef CONTEXT_EXTENDED_REGISTERS
#define CONTEXT_EXTENDED_REGISTERS 0
@@ -28,16 +33,6 @@
#define FLAG_TRACE_BIT 0x100
-#ifdef __x86_64__
-/* Defined in auto-generated build-time file gdb/gdbserver/amd64.c. */
-void init_registers_amd64 (void);
-extern const struct target_desc *tdesc_amd64;
-#else
-/* Defined in auto-generated build-time file gdb/gdbserver/i386.c. */
-void init_registers_i386 (void);
-extern const struct target_desc *tdesc_i386;
-#endif
-
static struct x86_debug_reg_state debug_reg_state;
static int
@@ -449,11 +444,10 @@ static void
i386_arch_setup (void)
{
#ifdef __x86_64__
- init_registers_amd64 ();
- win32_tdesc = tdesc_amd64;
+ win32_tdesc = amd64_create_target_description (X86_XSTATE_SSE_MASK, false,
+ false);
#else
- init_registers_i386 ();
- win32_tdesc = tdesc_i386;
+ win32_tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false);
#endif
}
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index c47aa6e..3e2bee9 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -694,7 +694,7 @@ i386_linux_read_description (uint64_t xcr0)
[(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
if (*tdesc == NULL)
- *tdesc = i386_create_target_description (xcr0);
+ *tdesc = i386_create_target_description (xcr0, true);
return *tdesc;
}
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index d162e92..7401139 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -50,13 +50,8 @@
#include "record.h"
#include "record-full.h"
-#include "features/i386/i386.c"
-#include "features/i386/i386-avx.c"
-#include "features/i386/i386-mpx.c"
-#include "features/i386/i386-avx-mpx.c"
-#include "features/i386/i386-avx-avx512.c"
-#include "features/i386/i386-avx-mpx-avx512-pku.c"
-#include "features/i386/i386-mmx.c"
+#include "target-descriptions.h"
+#include "arch/i386.h"
#include "ax.h"
#include "ax-gdb.h"
@@ -8718,25 +8713,20 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
const struct target_desc *
i386_target_description (uint64_t xcr0)
{
- switch (xcr0 & X86_XSTATE_ALL_MASK)
- {
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- return tdesc_i386_avx_mpx_avx512_pku;
- case X86_XSTATE_AVX_AVX512_MASK:
- return tdesc_i386_avx_avx512;
- case X86_XSTATE_AVX_MPX_MASK:
- return tdesc_i386_avx_mpx;
- case X86_XSTATE_MPX_MASK:
- return tdesc_i386_mpx;
- case X86_XSTATE_AVX_MASK:
- return tdesc_i386_avx;
- case X86_XSTATE_SSE_MASK:
- return tdesc_i386;
- case X86_XSTATE_X87_MASK:
- return tdesc_i386_mmx;
- default:
- return tdesc_i386;
- }
+ static target_desc *i386_tdescs \
+ [2/*SSE*/][2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
+ target_desc **tdesc;
+
+ tdesc = &i386_tdescs[(xcr0 & X86_XSTATE_SSE) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_AVX) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_MPX) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_AVX512) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
+
+ if (*tdesc == NULL)
+ *tdesc = i386_create_target_description (xcr0, false);
+
+ return *tdesc;
}
#define MPX_BASE_MASK (~(ULONGEST) 0xfff)
@@ -9058,15 +9048,30 @@ Show Intel Memory Protection Extensions specific variables."),
/* Initialize the i386-specific register groups. */
i386_init_reggroups ();
- /* Initialize the standard target descriptions. */
- initialize_tdesc_i386 ();
- initialize_tdesc_i386_mmx ();
- initialize_tdesc_i386_avx ();
- initialize_tdesc_i386_mpx ();
- initialize_tdesc_i386_avx_mpx ();
- initialize_tdesc_i386_avx_avx512 ();
- initialize_tdesc_i386_avx_mpx_avx512_pku ();
-
/* Tell remote stub that we support XML target description. */
register_remote_support_xml ("i386");
+
+#if GDB_SELF_TEST
+ struct
+ {
+ const char *xml;
+ uint64_t mask;
+ } xml_masks[] = {
+ { "i386/i386.xml", X86_XSTATE_SSE_MASK },
+ { "i386/i386-mmx.xml", X86_XSTATE_X87_MASK },
+ { "i386/i386-avx.xml", X86_XSTATE_AVX_MASK },
+ { "i386/i386-mpx.xml", X86_XSTATE_MPX_MASK },
+ { "i386/i386-avx-mpx.xml", X86_XSTATE_AVX_MPX_MASK },
+ { "i386/i386-avx-avx512.xml", X86_XSTATE_AVX_AVX512_MASK },
+ { "i386/i386-avx-mpx-avx512-pku.xml",
+ X86_XSTATE_AVX_MPX_AVX512_PKU_MASK },
+ };
+
+ for (auto &a : xml_masks)
+ {
+ auto tdesc = i386_target_description (a.mask);
+
+ selftests::record_xml_tdesc (a.xml, tdesc);
+ }
+#endif /* GDB_SELF_TEST */
}
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 12/22] Remove features/i386/i386-*linux.c
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (15 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 22/22] Convert the rest x86 target descriptions Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 21/22] Remove features/i386/amd64-*linux.c and features/i386/x32-*linux.c Yao Qi
` (5 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
Now, features/i386/i386-XXX-linux.c are not used, remove them.
gdb:
2017-05-26 Yao Qi <yao.qi@linaro.org>
* features/Makefile (XMLTOC): Remove i386/i386-XX-linux.xml.
* features/i386/i386-avx-avx512-linux.c: Remove.
* features/i386/i386-avx-linux.c: Remove.
* features/i386/i386-avx-mpx-avx512-pku-linux.c: Remove.
* features/i386/i386-avx-mpx-linux.c: Remove.
* features/i386/i386-linux.c: Remove.
* features/i386/i386-mmx-linux.c: Remove.
* features/i386/i386-mpx-linux.c: Remove.
---
gdb/features/Makefile | 7 -
gdb/features/i386/i386-avx-avx512-linux.c | 170 -----------------
gdb/features/i386/i386-avx-linux.c | 149 ---------------
gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c | 211 ----------------------
gdb/features/i386/i386-avx-mpx-linux.c | 187 -------------------
gdb/features/i386/i386-linux.c | 139 --------------
gdb/features/i386/i386-mmx-linux.c | 78 --------
gdb/features/i386/i386-mpx-linux.c | 177 ------------------
8 files changed, 1118 deletions(-)
delete mode 100644 gdb/features/i386/i386-avx-avx512-linux.c
delete mode 100644 gdb/features/i386/i386-avx-linux.c
delete mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
delete mode 100644 gdb/features/i386/i386-avx-mpx-linux.c
delete mode 100644 gdb/features/i386/i386-linux.c
delete mode 100644 gdb/features/i386/i386-mmx-linux.c
delete mode 100644 gdb/features/i386/i386-mpx-linux.c
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index df24d74..5a59e78 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -150,18 +150,11 @@ XMLTOC = \
i386/amd64-avx-mpx-linux.xml \
i386/amd64-avx-mpx.xml \
i386/amd64.xml \
- i386/i386-avx-linux.xml \
i386/i386-avx.xml \
- i386/i386-avx-avx512-linux.xml \
i386/i386-avx-avx512.xml \
- i386/i386-avx-mpx-avx512-pku-linux.xml \
i386/i386-avx-mpx-avx512-pku.xml \
- i386/i386-linux.xml \
- i386/i386-mmx-linux.xml \
i386/i386-mmx.xml \
- i386/i386-mpx-linux.xml \
i386/i386-mpx.xml \
- i386/i386-avx-mpx-linux.xml \
i386/i386-avx-mpx.xml \
i386/i386.xml \
i386/x32-avx-linux.xml \
diff --git a/gdb/features/i386/i386-avx-avx512-linux.c b/gdb/features/i386/i386-avx-avx512-linux.c
deleted file mode 100644
index 545149d..0000000
--- a/gdb/features/i386/i386-avx-avx512-linux.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-avx512-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_avx512_linux;
-static void
-initialize_tdesc_i386_avx_avx512_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "k0", 50, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 51, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 52, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 53, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 54, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 55, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 56, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 57, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 58, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 59, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 60, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 61, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 62, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 63, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 64, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 65, 1, NULL, 256, "v2ui128");
-
- tdesc_i386_avx_avx512_linux = result;
-}
diff --git a/gdb/features/i386/i386-avx-linux.c b/gdb/features/i386/i386-avx-linux.c
deleted file mode 100644
index 3ef087d..0000000
--- a/gdb/features/i386/i386-avx-linux.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_linux;
-static void
-initialize_tdesc_i386_avx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
-
- tdesc_i386_avx_linux = result;
-}
diff --git a/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c b/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
deleted file mode 100644
index e6eebf1..0000000
--- a/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-mpx-avx512-pku-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_mpx_avx512_pku_linux;
-static void
-initialize_tdesc_i386_avx_mpx_avx512_pku_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 50, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 51, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 52, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 53, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 54, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 55, 1, NULL, 64, "status");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "k0", 56, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 57, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 58, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 59, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 60, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 61, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 62, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 63, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 64, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 65, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 66, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 67, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 68, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 69, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 70, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 71, 1, NULL, 256, "v2ui128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys");
- tdesc_create_reg (feature, "pkru", 72, 1, NULL, 32, "uint32");
-
- tdesc_i386_avx_mpx_avx512_pku_linux = result;
-}
diff --git a/gdb/features/i386/i386-avx-mpx-linux.c b/gdb/features/i386/i386-avx-mpx-linux.c
deleted file mode 100644
index f62c487..0000000
--- a/gdb/features/i386/i386-avx-mpx-linux.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-avx-mpx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_avx_mpx_linux;
-static void
-initialize_tdesc_i386_avx_mpx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 50, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 51, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 52, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 53, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 54, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 55, 1, NULL, 64, "status");
-
- tdesc_i386_avx_mpx_linux = result;
-}
diff --git a/gdb/features/i386/i386-linux.c b/gdb/features/i386/i386-linux.c
deleted file mode 100644
index 0394842..0000000
--- a/gdb/features/i386/i386-linux.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_linux;
-static void
-initialize_tdesc_i386_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- tdesc_i386_linux = result;
-}
diff --git a/gdb/features/i386/i386-mmx-linux.c b/gdb/features/i386/i386-mmx-linux.c
deleted file mode 100644
index 1577972..0000000
--- a/gdb/features/i386/i386-mmx-linux.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-mmx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_mmx_linux;
-static void
-initialize_tdesc_i386_mmx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- tdesc_i386_mmx_linux = result;
-}
diff --git a/gdb/features/i386/i386-mpx-linux.c b/gdb/features/i386/i386-mpx-linux.c
deleted file mode 100644
index 6dea8e0..0000000
--- a/gdb/features/i386/i386-mpx-linux.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: i386-mpx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_i386_mpx_linux;
-static void
-initialize_tdesc_i386_mpx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 42, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 43, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 44, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 45, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 46, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 47, 1, NULL, 64, "status");
-
- tdesc_i386_mpx_linux = result;
-}
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 21/22] Remove features/i386/amd64-*linux.c and features/i386/x32-*linux.c
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (16 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 12/22] Remove features/i386/i386-*linux.c Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 17/22] Lazily and dynamically create amd64-linux target descriptions Yao Qi
` (4 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
gdb:
2017-06-09 Yao Qi <yao.qi@linaro.org>
* features/Makefile (XMLTOC): Remove i386/amd64XXX-linux.xml.
* features/i386/amd64-avx-avx512-linux.c: Removed.
* features/i386/amd64-avx-linux.c: Removed.
* features/i386/amd64-avx-mpx-avx512-pku-linux.c: Removed.
* features/i386/amd64-avx-mpx-linux.c: Removed.
* features/i386/amd64-linux.c: Removed.
* features/i386/amd64-mpx-linux.c: Removed.
* features/i386/x32-avx-avx512-linux.c: Removed.
* features/i386/x32-avx-linux.c: Removed.
* features/i386/x32-linux.c: Removed.
---
gdb/features/Makefile | 9 -
gdb/features/i386/amd64-avx-avx512-linux.c | 288 ------------------
gdb/features/i386/amd64-avx-linux.c | 177 -----------
gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c | 329 ---------------------
gdb/features/i386/amd64-avx-mpx-linux.c | 215 --------------
gdb/features/i386/amd64-linux.c | 159 ----------
gdb/features/i386/amd64-mpx-linux.c | 197 ------------
gdb/features/i386/x32-avx-avx512-linux.c | 288 ------------------
gdb/features/i386/x32-avx-linux.c | 177 -----------
gdb/features/i386/x32-linux.c | 159 ----------
10 files changed, 1998 deletions(-)
delete mode 100644 gdb/features/i386/amd64-avx-avx512-linux.c
delete mode 100644 gdb/features/i386/amd64-avx-linux.c
delete mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
delete mode 100644 gdb/features/i386/amd64-avx-mpx-linux.c
delete mode 100644 gdb/features/i386/amd64-linux.c
delete mode 100644 gdb/features/i386/amd64-mpx-linux.c
delete mode 100644 gdb/features/i386/x32-avx-avx512-linux.c
delete mode 100644 gdb/features/i386/x32-avx-linux.c
delete mode 100644 gdb/features/i386/x32-linux.c
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index d26eea2..6c4a9b3 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -138,16 +138,10 @@ XMLTOC = \
arm/arm-with-neon.xml \
arm/arm-with-vfpv2.xml \
arm/arm-with-vfpv3.xml \
- i386/amd64-avx-linux.xml \
i386/amd64-avx.xml \
- i386/amd64-avx-avx512-linux.xml \
i386/amd64-avx-avx512.xml \
- i386/amd64-avx-mpx-avx512-pku-linux.xml \
i386/amd64-avx-mpx-avx512-pku.xml \
- i386/amd64-linux.xml \
- i386/amd64-mpx-linux.xml \
i386/amd64-mpx.xml \
- i386/amd64-avx-mpx-linux.xml \
i386/amd64-avx-mpx.xml \
i386/amd64.xml \
i386/i386-avx.xml \
@@ -157,9 +151,6 @@ XMLTOC = \
i386/i386-mpx.xml \
i386/i386-avx-mpx.xml \
i386/i386.xml \
- i386/x32-avx-linux.xml \
- i386/x32-avx-avx512-linux.xml \
- i386/x32-linux.xml \
microblaze-with-stack-protect.xml \
microblaze.xml \
mips-dsp-linux.xml \
diff --git a/gdb/features/i386/amd64-avx-avx512-linux.c b/gdb/features/i386/amd64-avx-avx512-linux.c
deleted file mode 100644
index de58f06..0000000
--- a/gdb/features/i386/amd64-avx-avx512-linux.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-avx512-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_avx512_linux;
-static void
-initialize_tdesc_amd64_avx_avx512_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "xmm16", 76, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm17", 77, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm18", 78, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm19", 79, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm20", 80, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm21", 81, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm22", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm23", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm24", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm25", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm26", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm27", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm28", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm29", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm30", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm31", 91, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "ymm16h", 92, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm17h", 93, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm18h", 94, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm19h", 95, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm20h", 96, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm21h", 97, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm22h", 98, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm23h", 99, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm24h", 100, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm25h", 101, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm26h", 102, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm27h", 103, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm28h", 104, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm29h", 105, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm30h", 106, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm31h", 107, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "k0", 108, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 109, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 110, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 111, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 112, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 113, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 114, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 115, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 116, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 117, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 118, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 119, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 120, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 121, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 122, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 123, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm8h", 124, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm9h", 125, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm10h", 126, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm11h", 127, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm12h", 128, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm13h", 129, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm14h", 130, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm15h", 131, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm16h", 132, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm17h", 133, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm18h", 134, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm19h", 135, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm20h", 136, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm21h", 137, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm22h", 138, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm23h", 139, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm24h", 140, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm25h", 141, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm26h", 142, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm27h", 143, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm28h", 144, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm29h", 145, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm30h", 146, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm31h", 147, 1, NULL, 256, "v2ui128");
-
- tdesc_amd64_avx_avx512_linux = result;
-}
diff --git a/gdb/features/i386/amd64-avx-linux.c b/gdb/features/i386/amd64-avx-linux.c
deleted file mode 100644
index 00dfd3c..0000000
--- a/gdb/features/i386/amd64-avx-linux.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_linux;
-static void
-initialize_tdesc_amd64_avx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
-
- tdesc_amd64_avx_linux = result;
-}
diff --git a/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c b/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
deleted file mode 100644
index 7fd016f..0000000
--- a/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-mpx-avx512-pku-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_mpx_avx512_pku_linux;
-static void
-initialize_tdesc_amd64_avx_mpx_avx512_pku_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 76, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 77, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 78, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 79, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 80, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 81, 1, NULL, 64, "status");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "xmm16", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm17", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm18", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm19", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm20", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm21", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm22", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm23", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm24", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm25", 91, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm26", 92, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm27", 93, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm28", 94, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm29", 95, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm30", 96, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm31", 97, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "ymm16h", 98, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm17h", 99, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm18h", 100, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm19h", 101, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm20h", 102, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm21h", 103, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm22h", 104, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm23h", 105, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm24h", 106, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm25h", 107, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm26h", 108, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm27h", 109, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm28h", 110, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm29h", 111, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm30h", 112, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm31h", 113, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "k0", 114, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 115, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 116, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 117, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 118, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 119, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 120, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 121, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 122, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 123, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 124, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 125, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 126, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 127, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 128, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 129, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm8h", 130, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm9h", 131, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm10h", 132, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm11h", 133, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm12h", 134, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm13h", 135, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm14h", 136, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm15h", 137, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm16h", 138, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm17h", 139, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm18h", 140, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm19h", 141, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm20h", 142, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm21h", 143, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm22h", 144, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm23h", 145, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm24h", 146, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm25h", 147, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm26h", 148, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm27h", 149, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm28h", 150, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm29h", 151, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm30h", 152, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm31h", 153, 1, NULL, 256, "v2ui128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys");
- tdesc_create_reg (feature, "pkru", 154, 1, NULL, 32, "uint32");
-
- tdesc_amd64_avx_mpx_avx512_pku_linux = result;
-}
diff --git a/gdb/features/i386/amd64-avx-mpx-linux.c b/gdb/features/i386/amd64-avx-mpx-linux.c
deleted file mode 100644
index 5fe1127..0000000
--- a/gdb/features/i386/amd64-avx-mpx-linux.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-avx-mpx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_avx_mpx_linux;
-static void
-initialize_tdesc_amd64_avx_mpx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 76, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 77, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 78, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 79, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 80, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 81, 1, NULL, 64, "status");
-
- tdesc_amd64_avx_mpx_linux = result;
-}
diff --git a/gdb/features/i386/amd64-linux.c b/gdb/features/i386/amd64-linux.c
deleted file mode 100644
index 58c4405..0000000
--- a/gdb/features/i386/amd64-linux.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_linux;
-static void
-initialize_tdesc_amd64_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- tdesc_amd64_linux = result;
-}
diff --git a/gdb/features/i386/amd64-mpx-linux.c b/gdb/features/i386/amd64-mpx-linux.c
deleted file mode 100644
index dcf92f9..0000000
--- a/gdb/features/i386/amd64-mpx-linux.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: amd64-mpx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_amd64_mpx_linux;
-static void
-initialize_tdesc_amd64_mpx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
- type = tdesc_create_struct (feature, "br128");
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
-
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
-
- type = tdesc_create_union (feature, "status");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
-
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
-
- type = tdesc_create_union (feature, "cfgu");
- field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
- field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
-
- tdesc_create_reg (feature, "bnd0raw", 60, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd1raw", 61, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd2raw", 62, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bnd3raw", 63, 1, NULL, 128, "br128");
- tdesc_create_reg (feature, "bndcfgu", 64, 1, NULL, 64, "cfgu");
- tdesc_create_reg (feature, "bndstatus", 65, 1, NULL, 64, "status");
-
- tdesc_amd64_mpx_linux = result;
-}
diff --git a/gdb/features/i386/x32-avx-avx512-linux.c b/gdb/features/i386/x32-avx-avx512-linux.c
deleted file mode 100644
index c023a10..0000000
--- a/gdb/features/i386/x32-avx-avx512-linux.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: x32-avx-avx512-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_x32_avx_avx512_linux;
-static void
-initialize_tdesc_x32_avx_avx512_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
-
- tdesc_create_reg (feature, "xmm16", 76, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm17", 77, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm18", 78, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm19", 79, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm20", 80, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm21", 81, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm22", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm23", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm24", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm25", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm26", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm27", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm28", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm29", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm30", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm31", 91, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "ymm16h", 92, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm17h", 93, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm18h", 94, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm19h", 95, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm20h", 96, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm21h", 97, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm22h", 98, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm23h", 99, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm24h", 100, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm25h", 101, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm26h", 102, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm27h", 103, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm28h", 104, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm29h", 105, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm30h", 106, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm31h", 107, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "k0", 108, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k1", 109, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k2", 110, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k3", 111, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k4", 112, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k5", 113, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k6", 114, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "k7", 115, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "zmm0h", 116, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm1h", 117, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm2h", 118, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm3h", 119, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm4h", 120, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm5h", 121, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm6h", 122, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm7h", 123, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm8h", 124, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm9h", 125, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm10h", 126, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm11h", 127, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm12h", 128, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm13h", 129, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm14h", 130, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm15h", 131, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm16h", 132, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm17h", 133, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm18h", 134, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm19h", 135, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm20h", 136, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm21h", 137, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm22h", 138, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm23h", 139, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm24h", 140, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm25h", 141, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm26h", 142, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm27h", 143, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm28h", 144, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm29h", 145, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm30h", 146, 1, NULL, 256, "v2ui128");
- tdesc_create_reg (feature, "zmm31h", 147, 1, NULL, 256, "v2ui128");
-
- tdesc_x32_avx_avx512_linux = result;
-}
diff --git a/gdb/features/i386/x32-avx-linux.c b/gdb/features/i386/x32-avx-linux.c
deleted file mode 100644
index 211d138..0000000
--- a/gdb/features/i386/x32-avx-linux.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: x32-avx-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_x32_avx_linux;
-static void
-initialize_tdesc_x32_avx_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
- tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
- tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
-
- tdesc_x32_avx_linux = result;
-}
diff --git a/gdb/features/i386/x32-linux.c b/gdb/features/i386/x32-linux.c
deleted file mode 100644
index 05d502b..0000000
--- a/gdb/features/i386/x32-linux.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: x32-linux.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_x32_linux;
-static void
-initialize_tdesc_x32_linux (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
-
- set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
-
- tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
- tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
- tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
- tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
- tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
- tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
- tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
- tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
-
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
-
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
-
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
-
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
-
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
-
- type = tdesc_create_union (feature, "vec128");
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
-
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
-
- tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
- tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
- tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "int");
-
- tdesc_x32_linux = result;
-}
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 17/22] Lazily and dynamically create amd64-linux target descriptions
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (17 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 21/22] Remove features/i386/amd64-*linux.c and features/i386/x32-*linux.c Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 06/22] Use VEC for target_desc.reg_defs Yao Qi
` (3 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
This patch starts to use the generate c feature files to dynamically
create amd64-linux target descriptions.
gdb:
2017-06-08 Yao Qi <yao.qi@linaro.org>
* amd64-linux-tdep.c: Don't include amd64-XXX-linux and
x32-XXX-linux.c. Include 64bit-XX.c and x32-XX.c.
(amd64_linux_read_description): Create target descriptions.
(_initialize_amd64_linux_tdep): Don't call initialize_tdesc_XXX
functions. Add unit tests.
* features/Makefile (FEATURE_XMLFILES): Append 64bit-XXX.xml and
x32-core.xml.
* features/i386/64bit-avx.c: Generated.
* features/i386/64bit-avx512.c: Generated.
* features/i386/64bit-core.c: Generated.
* features/i386/64bit-linux.c: Generated.
* features/i386/64bit-mpx.c: Generated.
* features/i386/64bit-pkeys.c: Generated.
* features/i386/64bit-segments.c: Generated.
* features/i386/64bit-sse.c: Generated.
* features/i386/x32-core.c: Generated.
* target-descriptions.c (maint_print_c_tdesc_cmd): Print feature
c files for amd64-linux and x32-linux.
---
gdb/amd64-linux-tdep.c | 138 +++++++++++++++++++++++--------------
gdb/features/Makefile | 11 ++-
gdb/features/i386/64bit-avx.c | 29 ++++++++
gdb/features/i386/64bit-avx512.c | 124 +++++++++++++++++++++++++++++++++
gdb/features/i386/64bit-core.c | 74 ++++++++++++++++++++
gdb/features/i386/64bit-linux.c | 15 ++++
gdb/features/i386/64bit-mpx.c | 51 ++++++++++++++
gdb/features/i386/64bit-pkeys.c | 14 ++++
gdb/features/i386/64bit-segments.c | 15 ++++
gdb/features/i386/64bit-sse.c | 83 ++++++++++++++++++++++
gdb/features/i386/x32-core.c | 74 ++++++++++++++++++++
gdb/target-descriptions.c | 4 +-
12 files changed, 578 insertions(+), 54 deletions(-)
create mode 100644 gdb/features/i386/64bit-avx.c
create mode 100644 gdb/features/i386/64bit-avx512.c
create mode 100644 gdb/features/i386/64bit-core.c
create mode 100644 gdb/features/i386/64bit-linux.c
create mode 100644 gdb/features/i386/64bit-mpx.c
create mode 100644 gdb/features/i386/64bit-pkeys.c
create mode 100644 gdb/features/i386/64bit-segments.c
create mode 100644 gdb/features/i386/64bit-sse.c
create mode 100644 gdb/features/i386/x32-core.c
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 85efbef..7afa012 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -39,17 +39,18 @@
#include "solib-svr4.h"
#include "xml-syscall.h"
#include "glibc-tdep.h"
+#include "target-descriptions.h"
-#include "features/i386/amd64-linux.c"
-#include "features/i386/amd64-avx-linux.c"
-#include "features/i386/amd64-mpx-linux.c"
-#include "features/i386/amd64-avx-mpx-linux.c"
-#include "features/i386/amd64-avx-avx512-linux.c"
-#include "features/i386/amd64-avx-mpx-avx512-pku-linux.c"
+#include "features/i386/64bit-avx.c"
+#include "features/i386/64bit-avx512.c"
+#include "features/i386/64bit-core.c"
+#include "features/i386/64bit-linux.c"
+#include "features/i386/64bit-mpx.c"
+#include "features/i386/64bit-pkeys.c"
+#include "features/i386/64bit-segments.c"
+#include "features/i386/64bit-sse.c"
-#include "features/i386/x32-linux.c"
-#include "features/i386/x32-avx-linux.c"
-#include "features/i386/x32-avx-avx512-linux.c"
+#include "features/i386/x32-core.c"
/* The syscall's XML filename for i386. */
#define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml"
@@ -1578,42 +1579,59 @@ amd64_linux_record_signal (struct gdbarch *gdbarch,
const target_desc *
amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32)
{
- switch (xcr0_features_bit)
+ static target_desc *amd64_linux_tdescs \
+ [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
+ static target_desc *x32_linux_tdescs[2/*AVX*/][2/*AVX512*/] = {};
+
+ target_desc **tdesc;
+
+ if (is_x32)
{
- case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
- if (is_x32)
- /* No MPX, PKU on x32, fallback to AVX-AVX512. */
- return tdesc_x32_avx_avx512_linux;
- else
- return tdesc_amd64_avx_mpx_avx512_pku_linux;
- case X86_XSTATE_AVX_AVX512_MASK:
- if (is_x32)
- return tdesc_x32_avx_avx512_linux;
- else
- return tdesc_amd64_avx_avx512_linux;
- case X86_XSTATE_MPX_MASK:
- if (is_x32)
- /* No MPX on x32, fallback to AVX. */
- return tdesc_x32_avx_linux;
- else
- return tdesc_amd64_mpx_linux;
- case X86_XSTATE_AVX_MPX_MASK:
- if (is_x32)
- /* No MPX on x32, fallback to AVX. */
- return tdesc_x32_avx_linux;
- else
- return tdesc_amd64_avx_mpx_linux;
- case X86_XSTATE_AVX_MASK:
- if (is_x32)
- return tdesc_x32_avx_linux;
- else
- return tdesc_amd64_avx_linux;
- default:
+ tdesc = &x32_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0 ]
+ [(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0];
+ }
+ else
+ {
+ tdesc = &amd64_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0]
+ [(xcr0_features_bit & X86_XSTATE_MPX) ? 1 : 0]
+ [(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0]
+ [(xcr0_features_bit & X86_XSTATE_PKRU) ? 1 : 0];
+ }
+
+ if (*tdesc == NULL)
+ {
+ *tdesc = allocate_target_description ();
+
+ set_tdesc_architecture (*tdesc,
+ is_x32 ? "i386:x64-32" : "i386:x86-64");
+
+ set_tdesc_osabi (*tdesc, osabi_from_tdesc_string ("GNU/Linux"));
+
+ long regnum = 0;
+
if (is_x32)
- return tdesc_x32_linux;
+ regnum = create_feature_i386_x32_core (*tdesc, regnum);
else
- return tdesc_amd64_linux;
+ regnum = create_feature_i386_64bit_core (*tdesc, regnum);
+
+ regnum = create_feature_i386_64bit_sse (*tdesc, regnum);
+ regnum = create_feature_i386_64bit_linux (*tdesc, regnum);
+ regnum = create_feature_i386_64bit_segments (*tdesc, regnum);
+
+ if (xcr0_features_bit & X86_XSTATE_AVX)
+ regnum = create_feature_i386_64bit_avx (*tdesc, regnum);
+
+ if ((xcr0_features_bit & X86_XSTATE_MPX) && !is_x32)
+ regnum = create_feature_i386_64bit_mpx (*tdesc, regnum);
+
+ if (xcr0_features_bit & X86_XSTATE_AVX512)
+ regnum = create_feature_i386_64bit_avx512 (*tdesc, regnum);
+
+ if ((xcr0_features_bit & X86_XSTATE_PKRU) && !is_x32)
+ regnum = create_feature_i386_64bit_pkeys (*tdesc, regnum);
}
+
+ return *tdesc;
}
/* Get Linux/x86 target description from core dump. */
@@ -2300,15 +2318,31 @@ _initialize_amd64_linux_tdep (void)
gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32,
GDB_OSABI_LINUX, amd64_x32_linux_init_abi);
- /* Initialize the Linux target description. */
- initialize_tdesc_amd64_linux ();
- initialize_tdesc_amd64_avx_linux ();
- initialize_tdesc_amd64_mpx_linux ();
- initialize_tdesc_amd64_avx_mpx_linux ();
- initialize_tdesc_amd64_avx_avx512_linux ();
- initialize_tdesc_amd64_avx_mpx_avx512_pku_linux ();
-
- initialize_tdesc_x32_linux ();
- initialize_tdesc_x32_avx_linux ();
- initialize_tdesc_x32_avx_avx512_linux ();
+#if GDB_SELF_TEST
+ struct
+ {
+ const char *xml;
+ uint64_t mask;
+ } xml_masks[] = {
+ { "i386/amd64-linux.xml", X86_XSTATE_SSE_MASK },
+ { "i386/amd64-avx-linux.xml", X86_XSTATE_AVX_MASK },
+ { "i386/amd64-mpx-linux.xml", X86_XSTATE_MPX_MASK },
+ { "i386/amd64-avx-mpx-linux.xml", X86_XSTATE_AVX_MPX_MASK },
+ { "i386/amd64-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK },
+ { "i386/amd64-avx-mpx-avx512-pku-linux.xml",
+ X86_XSTATE_AVX_MPX_AVX512_PKU_MASK },
+ { "i386/x32-linux.xml", X86_XSTATE_SSE_MASK },
+ { "i386/x32-avx-linux.xml", X86_XSTATE_AVX_MASK },
+ { "i386/x32-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK },
+ };
+
+ for (auto &a : xml_masks)
+ {
+ auto tdesc = amd64_linux_read_description (a.mask,
+ startswith (a.xml,
+ "i386/x32"));
+
+ selftests::record_xml_tdesc (a.xml, tdesc);
+ }
+#endif /* GDB_SELF_TEST */
}
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 5a59e78..d26eea2 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -248,7 +248,16 @@ FEATURE_XMLFILES = i386/32bit-core.xml \
i386/32bit-avx.xml \
i386/32bit-mpx.xml \
i386/32bit-avx512.xml \
- i386/32bit-pkeys.xml
+ i386/32bit-pkeys.xml \
+ i386/64bit-avx512.xml \
+ i386/64bit-core.xml \
+ i386/64bit-mpx.xml \
+ i386/64bit-segments.xml \
+ i386/64bit-avx.xml \
+ i386/64bit-linux.xml \
+ i386/64bit-pkeys.xml \
+ i386/64bit-sse.xml \
+ i386/x32-core.xml
FEATURE_CFILES = $(patsubst %.xml,%.c,$(FEATURE_XMLFILES))
diff --git a/gdb/features/i386/64bit-avx.c b/gdb/features/i386/64bit-avx.c
new file mode 100644
index 0000000..d8e3914
--- /dev/null
+++ b/gdb/features/i386/64bit-avx.c
@@ -0,0 +1,29 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-avx.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_avx (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx", "64bit-avx.xml");
+ tdesc_create_reg (feature, "ymm0h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm1h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm2h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm3h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm4h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm5h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm6h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm7h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm8h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm9h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm10h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm11h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm12h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm13h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm14h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm15h", regnum++, 1, NULL, 128, "uint128");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-avx512.c b/gdb/features/i386/64bit-avx512.c
new file mode 100644
index 0000000..fb50960
--- /dev/null
+++ b/gdb/features/i386/64bit-avx512.c
@@ -0,0 +1,124 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-avx512.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_avx512 (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512", "64bit-avx512.xml");
+ struct tdesc_type *field_type;
+ field_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", field_type, 4);
+
+ field_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", field_type, 2);
+
+ field_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", field_type, 16);
+
+ field_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", field_type, 8);
+
+ field_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", field_type, 4);
+
+ field_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", field_type, 2);
+
+ struct tdesc_type *type;
+ type = tdesc_create_union (feature, "vec128");
+ field_type = tdesc_named_type (feature, "v4f");
+ tdesc_add_field (type, "v4_float", field_type);
+ field_type = tdesc_named_type (feature, "v2d");
+ tdesc_add_field (type, "v2_double", field_type);
+ field_type = tdesc_named_type (feature, "v16i8");
+ tdesc_add_field (type, "v16_int8", field_type);
+ field_type = tdesc_named_type (feature, "v8i16");
+ tdesc_add_field (type, "v8_int16", field_type);
+ field_type = tdesc_named_type (feature, "v4i32");
+ tdesc_add_field (type, "v4_int32", field_type);
+ field_type = tdesc_named_type (feature, "v2i64");
+ tdesc_add_field (type, "v2_int64", field_type);
+ field_type = tdesc_named_type (feature, "uint128");
+ tdesc_add_field (type, "uint128", field_type);
+
+ field_type = tdesc_named_type (feature, "uint128");
+ tdesc_create_vector (feature, "v2ui128", field_type, 2);
+
+ tdesc_create_reg (feature, "xmm16", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm17", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm18", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm19", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm20", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm21", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm22", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm23", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm24", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm25", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm26", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm27", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm28", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm29", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm30", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm31", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "ymm16h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm17h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm18h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm19h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm20h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm21h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm22h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm23h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm24h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm25h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm26h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm27h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm28h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm29h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm30h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "ymm31h", regnum++, 1, NULL, 128, "uint128");
+ tdesc_create_reg (feature, "k0", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k1", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k2", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k3", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k4", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k5", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k6", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "k7", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "zmm0h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm1h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm2h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm3h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm4h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm5h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm6h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm7h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm8h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm9h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm10h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm11h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm12h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm13h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm14h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm15h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm16h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm17h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm18h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm19h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm20h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm21h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm22h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm23h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm24h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm25h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm26h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm27h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm28h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm29h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm30h", regnum++, 1, NULL, 256, "v2ui128");
+ tdesc_create_reg (feature, "zmm31h", regnum++, 1, NULL, 256, "v2ui128");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-core.c b/gdb/features/i386/64bit-core.c
new file mode 100644
index 0000000..14d4a19
--- /dev/null
+++ b/gdb/features/i386/64bit-core.c
@@ -0,0 +1,74 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-core.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_core (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "64bit-core.xml");
+ struct tdesc_type *field_type;
+ struct tdesc_type *type;
+ type = tdesc_create_flags (feature, "i386_eflags", 4);
+ tdesc_add_flag (type, 0, "CF");
+ tdesc_add_flag (type, 1, "");
+ tdesc_add_flag (type, 2, "PF");
+ tdesc_add_flag (type, 4, "AF");
+ tdesc_add_flag (type, 6, "ZF");
+ tdesc_add_flag (type, 7, "SF");
+ tdesc_add_flag (type, 8, "TF");
+ tdesc_add_flag (type, 9, "IF");
+ tdesc_add_flag (type, 10, "DF");
+ tdesc_add_flag (type, 11, "OF");
+ tdesc_add_flag (type, 14, "NT");
+ tdesc_add_flag (type, 16, "RF");
+ tdesc_add_flag (type, 17, "VM");
+ tdesc_add_flag (type, 18, "AC");
+ tdesc_add_flag (type, 19, "VIF");
+ tdesc_add_flag (type, 20, "VIP");
+ tdesc_add_flag (type, 21, "ID");
+
+ tdesc_create_reg (feature, "rax", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rbx", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rcx", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rdx", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rsi", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rdi", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rbp", regnum++, 1, NULL, 64, "data_ptr");
+ tdesc_create_reg (feature, "rsp", regnum++, 1, NULL, 64, "data_ptr");
+ tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rip", regnum++, 1, NULL, 64, "code_ptr");
+ tdesc_create_reg (feature, "eflags", regnum++, 1, NULL, 32, "i386_eflags");
+ tdesc_create_reg (feature, "cs", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "ss", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "ds", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "es", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "fs", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "gs", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "st0", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st1", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st2", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st3", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st4", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st5", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st6", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st7", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "fctrl", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fstat", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "ftag", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fiseg", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fioff", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "foseg", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fooff", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fop", regnum++, 1, "float", 32, "int");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-linux.c b/gdb/features/i386/64bit-linux.c
new file mode 100644
index 0000000..570910b
--- /dev/null
+++ b/gdb/features/i386/64bit-linux.c
@@ -0,0 +1,15 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-linux.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_linux (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux", "64bit-linux.xml");
+ regnum = 57;
+ tdesc_create_reg (feature, "orig_rax", regnum++, 1, NULL, 64, "int");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-mpx.c b/gdb/features/i386/64bit-mpx.c
new file mode 100644
index 0000000..2751e03
--- /dev/null
+++ b/gdb/features/i386/64bit-mpx.c
@@ -0,0 +1,51 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-mpx.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_mpx (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx", "64bit-mpx.xml");
+ struct tdesc_type *field_type;
+ struct tdesc_type *type;
+ type = tdesc_create_struct (feature, "br128");
+ field_type = tdesc_named_type (feature, "uint64");
+ tdesc_add_field (type, "lbound", field_type);
+ field_type = tdesc_named_type (feature, "uint64");
+ tdesc_add_field (type, "ubound_raw", field_type);
+
+ type = tdesc_create_struct (feature, "_bndstatus");
+ tdesc_set_struct_size (type, 8);
+ tdesc_add_bitfield (type, "bde", 2, 63);
+ tdesc_add_bitfield (type, "error", 0, 1);
+
+ type = tdesc_create_union (feature, "status");
+ field_type = tdesc_named_type (feature, "data_ptr");
+ tdesc_add_field (type, "raw", field_type);
+ field_type = tdesc_named_type (feature, "_bndstatus");
+ tdesc_add_field (type, "status", field_type);
+
+ type = tdesc_create_struct (feature, "_bndcfgu");
+ tdesc_set_struct_size (type, 8);
+ tdesc_add_bitfield (type, "base", 12, 63);
+ tdesc_add_bitfield (type, "reserved", 2, 11);
+ tdesc_add_bitfield (type, "preserved", 1, 1);
+ tdesc_add_bitfield (type, "enabled", 0, 0);
+
+ type = tdesc_create_union (feature, "cfgu");
+ field_type = tdesc_named_type (feature, "data_ptr");
+ tdesc_add_field (type, "raw", field_type);
+ field_type = tdesc_named_type (feature, "_bndcfgu");
+ tdesc_add_field (type, "config", field_type);
+
+ tdesc_create_reg (feature, "bnd0raw", regnum++, 1, NULL, 128, "br128");
+ tdesc_create_reg (feature, "bnd1raw", regnum++, 1, NULL, 128, "br128");
+ tdesc_create_reg (feature, "bnd2raw", regnum++, 1, NULL, 128, "br128");
+ tdesc_create_reg (feature, "bnd3raw", regnum++, 1, NULL, 128, "br128");
+ tdesc_create_reg (feature, "bndcfgu", regnum++, 1, NULL, 64, "cfgu");
+ tdesc_create_reg (feature, "bndstatus", regnum++, 1, NULL, 64, "status");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-pkeys.c b/gdb/features/i386/64bit-pkeys.c
new file mode 100644
index 0000000..9d974c3
--- /dev/null
+++ b/gdb/features/i386/64bit-pkeys.c
@@ -0,0 +1,14 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-pkeys.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_pkeys (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys", "64bit-pkeys.xml");
+ tdesc_create_reg (feature, "pkru", regnum++, 1, NULL, 32, "uint32");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-segments.c b/gdb/features/i386/64bit-segments.c
new file mode 100644
index 0000000..7a1fbf5
--- /dev/null
+++ b/gdb/features/i386/64bit-segments.c
@@ -0,0 +1,15 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-segments.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_segments (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments", "64bit-segments.xml");
+ tdesc_create_reg (feature, "fs_base", regnum++, 1, NULL, 64, "int");
+ tdesc_create_reg (feature, "gs_base", regnum++, 1, NULL, 64, "int");
+ return regnum;
+}
diff --git a/gdb/features/i386/64bit-sse.c b/gdb/features/i386/64bit-sse.c
new file mode 100644
index 0000000..bc38498
--- /dev/null
+++ b/gdb/features/i386/64bit-sse.c
@@ -0,0 +1,83 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: 64bit-sse.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_64bit_sse (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse", "64bit-sse.xml");
+ struct tdesc_type *field_type;
+ field_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", field_type, 4);
+
+ field_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", field_type, 2);
+
+ field_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", field_type, 16);
+
+ field_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", field_type, 8);
+
+ field_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", field_type, 4);
+
+ field_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", field_type, 2);
+
+ struct tdesc_type *type;
+ type = tdesc_create_union (feature, "vec128");
+ field_type = tdesc_named_type (feature, "v4f");
+ tdesc_add_field (type, "v4_float", field_type);
+ field_type = tdesc_named_type (feature, "v2d");
+ tdesc_add_field (type, "v2_double", field_type);
+ field_type = tdesc_named_type (feature, "v16i8");
+ tdesc_add_field (type, "v16_int8", field_type);
+ field_type = tdesc_named_type (feature, "v8i16");
+ tdesc_add_field (type, "v8_int16", field_type);
+ field_type = tdesc_named_type (feature, "v4i32");
+ tdesc_add_field (type, "v4_int32", field_type);
+ field_type = tdesc_named_type (feature, "v2i64");
+ tdesc_add_field (type, "v2_int64", field_type);
+ field_type = tdesc_named_type (feature, "uint128");
+ tdesc_add_field (type, "uint128", field_type);
+
+ type = tdesc_create_flags (feature, "i386_mxcsr", 4);
+ tdesc_add_flag (type, 0, "IE");
+ tdesc_add_flag (type, 1, "DE");
+ tdesc_add_flag (type, 2, "ZE");
+ tdesc_add_flag (type, 3, "OE");
+ tdesc_add_flag (type, 4, "UE");
+ tdesc_add_flag (type, 5, "PE");
+ tdesc_add_flag (type, 6, "DAZ");
+ tdesc_add_flag (type, 7, "IM");
+ tdesc_add_flag (type, 8, "DM");
+ tdesc_add_flag (type, 9, "ZM");
+ tdesc_add_flag (type, 10, "OM");
+ tdesc_add_flag (type, 11, "UM");
+ tdesc_add_flag (type, 12, "PM");
+ tdesc_add_flag (type, 15, "FZ");
+
+ regnum = 40;
+ tdesc_create_reg (feature, "xmm0", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm1", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm2", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm3", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm4", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm5", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm6", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm7", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm8", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm9", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm10", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm11", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm12", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm13", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm14", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "xmm15", regnum++, 1, NULL, 128, "vec128");
+ tdesc_create_reg (feature, "mxcsr", regnum++, 1, "vector", 32, "i386_mxcsr");
+ return regnum;
+}
diff --git a/gdb/features/i386/x32-core.c b/gdb/features/i386/x32-core.c
new file mode 100644
index 0000000..3939abc
--- /dev/null
+++ b/gdb/features/i386/x32-core.c
@@ -0,0 +1,74 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: x32-core.xml */
+
+#include "arch/tdesc.h"
+
+static int
+create_feature_i386_x32_core (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "x32-core.xml");
+ struct tdesc_type *field_type;
+ struct tdesc_type *type;
+ type = tdesc_create_flags (feature, "i386_eflags", 4);
+ tdesc_add_flag (type, 0, "CF");
+ tdesc_add_flag (type, 1, "");
+ tdesc_add_flag (type, 2, "PF");
+ tdesc_add_flag (type, 4, "AF");
+ tdesc_add_flag (type, 6, "ZF");
+ tdesc_add_flag (type, 7, "SF");
+ tdesc_add_flag (type, 8, "TF");
+ tdesc_add_flag (type, 9, "IF");
+ tdesc_add_flag (type, 10, "DF");
+ tdesc_add_flag (type, 11, "OF");
+ tdesc_add_flag (type, 14, "NT");
+ tdesc_add_flag (type, 16, "RF");
+ tdesc_add_flag (type, 17, "VM");
+ tdesc_add_flag (type, 18, "AC");
+ tdesc_add_flag (type, 19, "VIF");
+ tdesc_add_flag (type, 20, "VIP");
+ tdesc_add_flag (type, 21, "ID");
+
+ tdesc_create_reg (feature, "rax", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rbx", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rcx", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rdx", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rsi", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rdi", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rbp", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rsp", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 64, "int64");
+ tdesc_create_reg (feature, "rip", regnum++, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "eflags", regnum++, 1, NULL, 32, "i386_eflags");
+ tdesc_create_reg (feature, "cs", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "ss", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "ds", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "es", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "fs", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "gs", regnum++, 1, NULL, 32, "int32");
+ tdesc_create_reg (feature, "st0", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st1", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st2", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st3", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st4", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st5", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st6", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "st7", regnum++, 1, NULL, 80, "i387_ext");
+ tdesc_create_reg (feature, "fctrl", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fstat", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "ftag", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fiseg", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fioff", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "foseg", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fooff", regnum++, 1, "float", 32, "int");
+ tdesc_create_reg (feature, "fop", regnum++, 1, "float", 32, "int");
+ return regnum;
+}
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 7a8dac0..2b3c146 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -2329,7 +2329,9 @@ maint_print_c_tdesc_cmd (char *args, int from_tty)
/* Print c files for target features instead of target descriptions,
because c files got from target features are more flexible than the
counterparts. */
- if (startswith (filename_after_features.c_str (), "i386/32bit-"))
+ if (startswith (filename_after_features.c_str (), "i386/32bit-")
+ || startswith (filename_after_features.c_str (), "i386/64bit-")
+ || startswith (filename_after_features.c_str (), "i386/x32-core.xml"))
{
print_c_feature v (filename_after_features);
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 06/22] Use VEC for target_desc.reg_defs
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (18 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 17/22] Lazily and dynamically create amd64-linux target descriptions Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 07/22] Return X86_TDESC_MMX in x86_get_ipa_tdesc_idx Yao Qi
` (2 subsequent siblings)
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
Nowadays, target_desc.reg_defs is a pointer points to a pre-generated
array, which is not flexible. This patch changes it from an array
to a VEC so that GDBserver can create target descriptions dynamically
later. Instead of using pre-generated array, the -generated.c calls
VEC_safe_push to add each register to vector.
Since target_desc.reg_defs is used in IPA, we need to build common/vec.c
for IPA too.
gdb/gdbserver:
2017-05-23 Yao Qi <yao.qi@linaro.org>
* Makefile.in (IPA_OBJS): Add vec-ipa.o
* regcache.c (get_thread_regcache): Use VEC_length.
(init_register_cache): Likewise.
(regcache_cpy): Likewise.
(registers_to_string): Iterate reg_defs via VEC_iterate.
(find_regno): Likewise.
(find_register_by_number): Use VEC_index.
(register_size): Call find_register_by_number.
(register_data): Call find_register_by_number.
(supply_regblock): Use VEC_length.
(regcache_raw_read_unsigned): Likewise.
* tdesc.c (init_target_desc): Iterate reg_defs via
VEC_iterate.
(default_description): Update initializer.
(copy_target_description): Don't update field num_registers.
* tdesc.h (struct target_desc) <reg_defs>: Change it to VEC.
<num_registers>: Remove.
gdb:
2017-05-23 Yao Qi <yao.qi@linaro.org>
* regformats/regdat.sh: Update generated code.
---
gdb/gdbserver/Makefile.in | 1 +
gdb/gdbserver/regcache.c | 34 +++++++++++++++++++---------------
gdb/gdbserver/tdesc.c | 10 +++++-----
gdb/gdbserver/tdesc.h | 11 +++++------
gdb/regformats/regdat.sh | 13 +++++++------
5 files changed, 37 insertions(+), 32 deletions(-)
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 6cd0959..9b5982b 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -400,6 +400,7 @@ IPA_OBJS = \
tdesc-ipa.o \
tracepoint-ipa.o \
utils-ipa.o \
+ vec-ipa.o \
${IPA_DEPFILES}
IPA_LIB = libinproctrace.so
diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c
index 0f16f60..d1bcdc3 100644
--- a/gdb/gdbserver/regcache.c
+++ b/gdb/gdbserver/regcache.c
@@ -54,7 +54,7 @@ get_thread_regcache (struct thread_info *thread, int fetch)
current_thread = thread;
/* Invalidate all registers, to prevent stale left-overs. */
memset (regcache->register_status, REG_UNAVAILABLE,
- regcache->tdesc->num_registers);
+ VEC_length (tdesc_reg_p, regcache->tdesc->reg_defs));
fetch_inferior_registers (regcache, -1);
current_thread = saved_thread;
regcache->registers_valid = 1;
@@ -145,9 +145,9 @@ init_register_cache (struct regcache *regcache,
= (unsigned char *) xcalloc (1, tdesc->registers_size);
regcache->registers_owned = 1;
regcache->register_status
- = (unsigned char *) xmalloc (tdesc->num_registers);
+ = (unsigned char *) xmalloc (VEC_length (tdesc_reg_p, tdesc->reg_defs));
memset ((void *) regcache->register_status, REG_UNAVAILABLE,
- tdesc->num_registers);
+ VEC_length (tdesc_reg_p, tdesc->reg_defs));
#else
gdb_assert_not_reached ("can't allocate memory from the heap");
#endif
@@ -204,7 +204,7 @@ regcache_cpy (struct regcache *dst, struct regcache *src)
#ifndef IN_PROCESS_AGENT
if (dst->register_status != NULL && src->register_status != NULL)
memcpy (dst->register_status, src->register_status,
- src->tdesc->num_registers);
+ VEC_length (tdesc_reg_p, src->tdesc->reg_defs));
#endif
dst->registers_valid = src->registers_valid;
}
@@ -218,8 +218,9 @@ registers_to_string (struct regcache *regcache, char *buf)
unsigned char *registers = regcache->registers;
const struct target_desc *tdesc = regcache->tdesc;
int i;
+ reg *reg;
- for (i = 0; i < tdesc->num_registers; i++)
+ for (i = 0; VEC_iterate (tdesc_reg_p, tdesc->reg_defs, i, reg); i++)
{
if (regcache->register_status[i] == REG_VALID)
{
@@ -257,22 +258,23 @@ int
find_regno (const struct target_desc *tdesc, const char *name)
{
int i;
+ reg *reg;
- for (i = 0; i < tdesc->num_registers; i++)
- if (strcmp (name, tdesc->reg_defs[i].name) == 0)
+ for (i = 0; VEC_iterate (tdesc_reg_p, tdesc->reg_defs, i, reg); i++)
+ if (strcmp (name, reg->name) == 0)
return i;
internal_error (__FILE__, __LINE__, "Unknown register %s requested",
name);
}
+#endif
+
struct reg *
find_register_by_number (const struct target_desc *tdesc, int n)
{
- return &tdesc->reg_defs[n];
+ return VEC_index (tdesc_reg_p, tdesc->reg_defs, n);
}
-#endif
-
#ifndef IN_PROCESS_AGENT
static void
free_register_cache_thread (struct thread_info *thread)
@@ -312,7 +314,7 @@ register_cache_size (const struct target_desc *tdesc)
int
register_size (const struct target_desc *tdesc, int n)
{
- return tdesc->reg_defs[n].size / 8;
+ return find_register_by_number (tdesc, n)->size / 8;
}
/* See common/common-regcache.h. */
@@ -326,7 +328,8 @@ regcache_register_size (const struct regcache *regcache, int n)
static unsigned char *
register_data (struct regcache *regcache, int n, int fetch)
{
- return regcache->registers + regcache->tdesc->reg_defs[n].offset / 8;
+ return (regcache->registers
+ + find_register_by_number (regcache->tdesc, n)->offset / 8);
}
/* Supply register N, whose contents are stored in BUF, to REGCACHE.
@@ -385,7 +388,7 @@ supply_regblock (struct regcache *regcache, const void *buf)
{
int i;
- for (i = 0; i < tdesc->num_registers; i++)
+ for (i = 0; i < VEC_length (tdesc_reg_p, tdesc->reg_defs); i++)
regcache->register_status[i] = REG_VALID;
}
#endif
@@ -399,7 +402,7 @@ supply_regblock (struct regcache *regcache, const void *buf)
{
int i;
- for (i = 0; i < tdesc->num_registers; i++)
+ for (i = 0; i < VEC_length (tdesc_reg_p, tdesc->reg_defs); i++)
regcache->register_status[i] = REG_UNAVAILABLE;
}
#endif
@@ -431,7 +434,8 @@ regcache_raw_read_unsigned (struct regcache *regcache, int regnum,
int size;
gdb_assert (regcache != NULL);
- gdb_assert (regnum >= 0 && regnum < regcache->tdesc->num_registers);
+ gdb_assert (regnum >= 0
+ && regnum < VEC_length (tdesc_reg_p, regcache->tdesc->reg_defs));
size = register_size (regcache->tdesc, regnum);
diff --git a/gdb/gdbserver/tdesc.c b/gdb/gdbserver/tdesc.c
index fdd35197..1b1882e 100644
--- a/gdb/gdbserver/tdesc.c
+++ b/gdb/gdbserver/tdesc.c
@@ -23,12 +23,13 @@ void
init_target_desc (struct target_desc *tdesc)
{
int offset, i;
+ struct reg *reg;
offset = 0;
- for (i = 0; i < tdesc->num_registers; i++)
+ for (i = 0; VEC_iterate (tdesc_reg_p, tdesc->reg_defs, i, reg); i++)
{
- tdesc->reg_defs[i].offset = offset;
- offset += tdesc->reg_defs[i].size;
+ reg->offset = offset;
+ offset += reg->size;
}
tdesc->registers_size = offset / 8;
@@ -40,14 +41,13 @@ init_target_desc (struct target_desc *tdesc)
#ifndef IN_PROCESS_AGENT
-static const struct target_desc default_description = { 0 };
+static const struct target_desc default_description = { NULL, 0, NULL, NULL };
void
copy_target_description (struct target_desc *dest,
const struct target_desc *src)
{
dest->reg_defs = src->reg_defs;
- dest->num_registers = src->num_registers;
dest->expedite_regs = src->expedite_regs;
dest->registers_size = src->registers_size;
dest->xmltarget = src->xmltarget;
diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h
index 0341278..424a2fd 100644
--- a/gdb/gdbserver/tdesc.h
+++ b/gdb/gdbserver/tdesc.h
@@ -21,17 +21,16 @@
struct reg;
+typedef struct reg *tdesc_reg_p;
+DEF_VEC_P(tdesc_reg_p);
+
/* A target description. */
struct target_desc
{
- /* An array of NUM_REGISTERS elements of register definitions that
+ /* A vector of elements of register definitions that
describe the inferior's register set. */
- struct reg *reg_defs;
-
- /* The number of registers in inferior's register set (and thus in
- the regcache). */
- int num_registers;
+ VEC(tdesc_reg_p) *reg_defs;
/* The register cache size, in bytes. */
int registers_size;
diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index 2c764cd..236cd93 100755
--- a/gdb/regformats/regdat.sh
+++ b/gdb/regformats/regdat.sh
@@ -131,8 +131,8 @@ do
echo "{"
echo " static struct target_desc tdesc_${name}_s;"
echo " struct target_desc *result = &tdesc_${name}_s;"
+ echo " memset (result, 0, sizeof (*result));"
- echo "static struct reg regs_${name}[] = {"
continue
elif test "${type}" = "xmltarget"; then
xmltarget="${entry}"
@@ -150,13 +150,17 @@ do
echo "$0: $1 does not specify \`\`name''." 1>&2
exit 1
else
- echo " { \"${entry}\", ${offset}, ${type} },"
+ echo " {struct reg *reg = XCNEW (struct reg);"
+ echo " reg->name = \"${entry}\";"
+ echo " reg->offset = ${offset};"
+ echo " reg->size = ${type};"
+ echo " VEC_safe_push (tdesc_reg_p, result->reg_defs, reg);"
+ echo " };"
offset=`expr ${offset} + ${type}`
i=`expr $i + 1`
fi
done
-echo "};"
echo
echo "static const char *expedite_regs_${name}[] = { \"`echo ${expedite} | sed 's/,/", "/g'`\", 0 };"
if test "${xmltarget}" = x; then
@@ -178,9 +182,6 @@ fi
echo
cat <<EOF
- result->reg_defs = regs_${name};
- result->num_registers = sizeof (regs_${name}) / sizeof (regs_${name}[0]);
-
#ifndef IN_PROCESS_AGENT
result->expedite_regs = expedite_regs_${name};
result->xmltarget = xmltarget_${name};
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 07/22] Return X86_TDESC_MMX in x86_get_ipa_tdesc_idx
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (19 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 06/22] Use VEC for target_desc.reg_defs Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 15:31 ` [PATCH 02/22] Use i386_target_description to get tdesc_i386 Yao Qi
2017-09-05 9:04 ` [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches
gdb/gdbserver:
2017-07-10 Yao Qi <yao.qi@linaro.org>
* linux-x86-low.c (x86_get_ipa_tdesc_idx): Use X86_TDESC_MMX
instead of 0.
---
gdb/gdbserver/linux-x86-low.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index 12c7a1b..5c56a5d 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -2927,7 +2927,8 @@ x86_get_ipa_tdesc_idx (void)
if (tdesc == tdesc_i386_avx_avx512_linux)
return X86_TDESC_AVX_AVX512;
- return 0;
+ /* If none tdesc is found, return the one with minimum features. */
+ return X86_TDESC_MMX;
}
/* This is initialized assuming an amd64 target.
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* [PATCH 02/22] Use i386_target_description to get tdesc_i386
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (20 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 07/22] Return X86_TDESC_MMX in x86_get_ipa_tdesc_idx Yao Qi
@ 2017-08-21 15:31 ` Yao Qi
2017-08-21 16:23 ` John Baldwin
2017-09-05 9:04 ` [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
22 siblings, 1 reply; 28+ messages in thread
From: Yao Qi @ 2017-08-21 15:31 UTC (permalink / raw)
To: gdb-patches; +Cc: jhb
GDB can call function i386_target_description to get the right target
description rather than tdesc_i386.
gdb:
2017-08-18 Yao Qi <yao.qi@linaro.org>
* amd64-fbsd-nat.c (amd64fbsd_read_description): Call
i386_target_description.
* i386-fbsd-nat.c (i386fbsd_read_description): Call
i386_target_description.
* i386-tdep.c (i386_gdbarch_init): Likewise.
---
gdb/amd64-fbsd-nat.c | 2 +-
gdb/i386-fbsd-nat.c | 10 ++++------
gdb/i386-tdep.c | 2 +-
3 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/gdb/amd64-fbsd-nat.c b/gdb/amd64-fbsd-nat.c
index f3ddbdd..a22b82b 100644
--- a/gdb/amd64-fbsd-nat.c
+++ b/gdb/amd64-fbsd-nat.c
@@ -181,7 +181,7 @@ amd64fbsd_read_description (struct target_ops *ops)
if (is64)
return amd64_target_description (X86_XSTATE_SSE_MASK);
else
- return tdesc_i386;
+ return i386_target_description (X86_XSTATE_SSE_MASK);
}
/* Provide a prototype to silence -Wmissing-prototypes. */
diff --git a/gdb/i386-fbsd-nat.c b/gdb/i386-fbsd-nat.c
index dca6c01..ab671ef 100644
--- a/gdb/i386-fbsd-nat.c
+++ b/gdb/i386-fbsd-nat.c
@@ -139,12 +139,10 @@ i386fbsd_read_description (struct target_ops *ops)
xsave_probed = 1;
}
- if (x86bsd_xsave_len != 0)
- {
- return i386_target_description (xcr0);
- }
- else
- return tdesc_i386;
+ if (x86bsd_xsave_len == 0)
+ xcr0 = X86_XSTATE_SSE_MASK;
+
+ return i386_target_description (xcr0);
}
#endif
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index b1e5afd..9d0dd3d 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -8549,7 +8549,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Get the x86 target description from INFO. */
tdesc = info.target_desc;
if (! tdesc_has_registers (tdesc))
- tdesc = tdesc_i386;
+ tdesc = i386_target_description (X86_XSTATE_SSE_MASK);
tdep->tdesc = tdesc;
tdep->num_core_regs = I386_NUM_GREGS + I387_NUM_REGS;
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: [PATCH 02/22] Use i386_target_description to get tdesc_i386
2017-08-21 15:31 ` [PATCH 02/22] Use i386_target_description to get tdesc_i386 Yao Qi
@ 2017-08-21 16:23 ` John Baldwin
0 siblings, 0 replies; 28+ messages in thread
From: John Baldwin @ 2017-08-21 16:23 UTC (permalink / raw)
To: Yao Qi; +Cc: gdb-patches
On Monday, August 21, 2017 04:28:47 PM Yao Qi wrote:
> GDB can call function i386_target_description to get the right target
> description rather than tdesc_i386.
>
> gdb:
>
> 2017-08-18 Yao Qi <yao.qi@linaro.org>
>
> * amd64-fbsd-nat.c (amd64fbsd_read_description): Call
> i386_target_description.
> * i386-fbsd-nat.c (i386fbsd_read_description): Call
> i386_target_description.
> * i386-tdep.c (i386_gdbarch_init): Likewise.
> ---
> gdb/amd64-fbsd-nat.c | 2 +-
> gdb/i386-fbsd-nat.c | 10 ++++------
> gdb/i386-tdep.c | 2 +-
> 3 files changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/gdb/amd64-fbsd-nat.c b/gdb/amd64-fbsd-nat.c
> index f3ddbdd..a22b82b 100644
> --- a/gdb/amd64-fbsd-nat.c
> +++ b/gdb/amd64-fbsd-nat.c
> @@ -181,7 +181,7 @@ amd64fbsd_read_description (struct target_ops *ops)
> if (is64)
> return amd64_target_description (X86_XSTATE_SSE_MASK);
> else
> - return tdesc_i386;
> + return i386_target_description (X86_XSTATE_SSE_MASK);
> }
Hmm, I think we can further simplify amd64fbsd_read_description by always
using amd64/i386_target_description and just setting xcr0 to
X86_XSTATE_SSE_MASK in the #else case and if xsave_len is 0.
--
John Baldwin
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible
2017-08-21 15:29 [PATCH 00/22 v4] Make GDB builtin target descriptions more flexible Yao Qi
` (21 preceding siblings ...)
2017-08-21 15:31 ` [PATCH 02/22] Use i386_target_description to get tdesc_i386 Yao Qi
@ 2017-09-05 9:04 ` Yao Qi
22 siblings, 0 replies; 28+ messages in thread
From: Yao Qi @ 2017-09-05 9:04 UTC (permalink / raw)
To: gdb-patches
Yao Qi <qiyaoltc@gmail.com> writes:
> This patch series is to change GDB and GDBserver builtin target
> descriptions more flexible, by removing pre-generated ones. Nowadays,
> GDB builtin target descriptions are created from initialize_tdesc_*
> functions in features/*.c files, while GDBserver builtin target
> descriptions are generated from regformats/*.dat files. Instead,
> with these patches applied, these builtin target descriptions can be
> got lazily and dynamically.
I regression tested them again yesterday and pushed them in. I'll start
to convert other target descriptions.
--
Yao (齐尧)
^ permalink raw reply [flat|nested] 28+ messages in thread