From 15c429945dc4674b62e6b956c0ba9059206055ed Mon Sep 17 00:00:00 2001 From: Walfred Tedeschi Date: Fri, 13 May 2016 15:36:43 +0200 Subject: [PATCH 1/1] Add target descriptions for AVX + MPX The current MPX target descriptions assume that MPX is always combined with AVX, however that's not correct. We can have machines with MPX and without AVX; or machines with AVX and without MPX. This patch adds new target descriptions for machines that support both MPX and AVX, as duplicates of the existing MPX descriptions. The following commit will remove AVX from the MPX-only descriptions. 2016-04-16 Walfred Tedeschi gdb/ChangeLog: * amd64-linux-tdep.c (features/i386/amd64-avx-mpx-linux.c): New include. (amd64_linux_core_read_description): Add case for X86_XSTATE_AVX_MPX_MASK. (_initialize_amd64_linux_tdep): Call initialize_tdesc_amd64_avx_mpx_linux. * amd64-linux-tdep.h (tdesc_amd64_avx_mpx_linux): New definition. * amd64-tdep.c (features/i386/amd64-avx-mpx.c): New include. (amd64_target_description): Add case for X86_XSTATE_AVX_MPX_MASK. (_initialize_amd64_tdep): Call initialize_tdesc_amd64_avx_mpx. * common/x86-xstate.h (X86_XSTATE_MPX_MASK): Remove AVX bits. (X86_XSTATE_AVX_MPX_MASK): New case. * features/Makefile (i386/i386-avx-mpx, i386/i386-avx-mpx-linux) (i386/amd64-avx-mpx, i386/amd64-avx-mpx-linux): New rules. (i386/i386-avx-mpx-expedite, i386/i386-avx-mpx-linux-expedite) (i386/amd64-avx-mpx-expedite, i386/amd64-avx-mpx-linux-expedite): New expedites. * i386-linux-tdep.c (features/i386/i386-avx-mpx-linux.c): New include. (i386_linux_core_read_description): Add case X86_XSTATE_AVX_MPX_MASK. (_initialize_i386_linux_tdep): Call initialize_tdesc_i386_avx_mpx_linux. * i386-linux-tdep.h (tdesc_i386_avx_mpx_linux): New include. * i386-tdep.c (features/i386/i386-avx-mpx.c): New include. (i386_target_description): Add case for X86_XSTATE_AVX_MPX_MASK. * x86-linux-nat.c (x86_linux_read_description): Add case for X86_XSTATE_AVX_MPX_MASK. * features/i386/amd64-avx-mpx-linux.xml: New file. * features/i386/i386-avx-mpx-linux.xml: New file. * features/i386/i386-avx-mpx.xml: New file. * features/i386/amd64-avx-mpx.xml: New file. * features/i386/amd64-avx-mpx-linux.c: Generated. * features/i386/amd64-avx-mpx.c: Generated. * features/i386/i386-avx-mpx-linux.c: Generated. * features/i386/i386-avx-mpx.c: Generated. * regformats/i386/amd64-avx-mpx-linux.dat: Generated. * regformats/i386/amd64-avx-mpx.dat: Generated. * regformats/i386/i386-avx-mpx-linux.dat: Generated. * regformats/i386/i386-avx-mpx.dat: Generated. gdb/gdbserver/ChangeLog: * Makefile.in (clean): Add removal for i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c. (i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c) (amd64-avx-mpx-linux.c): New rules. (amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule. * configure.srv (srv_i386_regobj): Add i386-avx-mpx.o. (srv_i386_linux_regobj): Add i386-avx-mpx-linux.o. (srv_amd64_regobj): Add amd64-avx-mpx.o. (srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o. (srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml. (srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml. (srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml. (srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml. (ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o. (ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o. * linux-x86-low.c (x86_linux_read_description): Add case for X86_XSTATE_AVX_MPX_MASK. (x86_get_ipa_tdesc_idx): Add cases for avx_mpx. (initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and init_registers_i386_avx_mpx_linux. * linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx. (initialize_low_tracepoint): Call init_registers_i386_avx_mpx_linux. * linux-amd64-ipa.c (get_ipa_tdesc): Add case for avx_mpx. (initialize_low_tracepoint): Call init_registers_amd64_avx_mpx_linux. * linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value. (init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux) (init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New declarations. Change-Id: I7b0642263cfa3e47b626022796e5dd3627b92ba8 Upstream-Status: Backport Signed-off-by: Saul Wold # Conflicts: # gdb/amd64-tdep.c # gdb/i386-tdep.c --- gdb/ChangeLog | 57 ++++++++ gdb/amd64-linux-tdep.c | 7 + gdb/amd64-linux-tdep.h | 1 + gdb/amd64-tdep.c | 2 + gdb/common/x86-xstate.h | 5 +- gdb/features/Makefile | 18 +++ gdb/features/i386/amd64-avx-mpx-linux.c | 211 ++++++++++++++++++++++++++++ gdb/features/i386/amd64-avx-mpx-linux.xml | 19 +++ gdb/features/i386/amd64-avx-mpx.c | 206 +++++++++++++++++++++++++++ gdb/features/i386/amd64-avx-mpx.xml | 17 +++ gdb/features/i386/amd64-mpx-linux.c | 30 +--- gdb/features/i386/amd64-mpx-linux.xml | 1 - gdb/features/i386/amd64-mpx.c | 30 +--- gdb/features/i386/amd64-mpx.xml | 1 - gdb/features/i386/i386-avx-mpx-linux.c | 187 ++++++++++++++++++++++++ gdb/features/i386/i386-avx-mpx-linux.xml | 19 +++ gdb/features/i386/i386-avx-mpx.c | 182 ++++++++++++++++++++++++ gdb/features/i386/i386-avx-mpx.xml | 17 +++ gdb/features/i386/i386-mpx-linux.c | 22 +-- gdb/features/i386/i386-mpx-linux.xml | 1 - gdb/features/i386/i386-mpx.c | 22 +-- gdb/features/i386/i386-mpx.xml | 1 - gdb/gdbserver/ChangeLog | 33 +++++ gdb/gdbserver/Makefile.in | 10 ++ gdb/gdbserver/configure.srv | 17 +-- gdb/gdbserver/linux-x86-low.c | 16 +++ gdb/i386-linux-tdep.c | 4 + gdb/i386-linux-tdep.h | 1 + gdb/i386-tdep.c | 2 + gdb/regformats/i386/amd64-avx-mpx-linux.dat | 85 +++++++++++ gdb/regformats/i386/amd64-avx-mpx.dat | 84 +++++++++++ gdb/regformats/i386/amd64-mpx-linux.dat | 16 --- gdb/regformats/i386/amd64-mpx.dat | 16 --- gdb/regformats/i386/i386-avx-mpx-linux.dat | 61 ++++++++ gdb/regformats/i386/i386-avx-mpx.dat | 60 ++++++++ gdb/regformats/i386/i386-mpx-linux.dat | 8 -- gdb/regformats/i386/i386-mpx.dat | 8 -- gdb/x86-linux-nat.c | 7 + 38 files changed, 1342 insertions(+), 142 deletions(-) create mode 100644 gdb/features/i386/amd64-avx-mpx-linux.c create mode 100644 gdb/features/i386/amd64-avx-mpx-linux.xml create mode 100644 gdb/features/i386/amd64-avx-mpx.c create mode 100644 gdb/features/i386/amd64-avx-mpx.xml create mode 100644 gdb/features/i386/i386-avx-mpx-linux.c create mode 100644 gdb/features/i386/i386-avx-mpx-linux.xml create mode 100644 gdb/features/i386/i386-avx-mpx.c create mode 100644 gdb/features/i386/i386-avx-mpx.xml create mode 100644 gdb/regformats/i386/amd64-avx-mpx-linux.dat create mode 100644 gdb/regformats/i386/amd64-avx-mpx.dat create mode 100644 gdb/regformats/i386/i386-avx-mpx-linux.dat create mode 100644 gdb/regformats/i386/i386-avx-mpx.dat Index: gdb-7.9.1/gdb/ChangeLog =================================================================== --- gdb-7.9.1.orig/gdb/ChangeLog +++ gdb-7.9.1/gdb/ChangeLog @@ -1,3 +1,60 @@ +2016-04-14 Walfred Tedeschi + + * features/i386/amd64-mpx-linux.xml: Remove AVX feature. + * features/i386/amd64-mpx.xml: Remove AVX feature. + * features/i386/i386-mpx-linux.xml: Remove AVX feature. + * features/i386/i386-mpx.xml: Remove AVX feature. + * features/i386/amd64-mpx-linux.c: Regenerate. + * features/i386/amd64-mpx.c: Regenerate. + * features/i386/i386-mpx-linux.c: Regenerate. + * features/i386/i386-mpx.c: Regenerate. + * regformats/i386/amd64-mpx-linux.dat: Regenerate. + * regformats/i386/amd64-mpx.dat: Regenerate. + * regformats/i386/i386-mpx-linux.dat: Regenerate. + * regformats/i386/i386-mpx.dat: Regenerate. + +2016-04-16 Walfred Tedeschi + + * amd64-linux-tdep.c (features/i386/amd64-avx-mpx-linux.c): + New include. + (amd64_linux_core_read_description): Add case for + X86_XSTATE_AVX_MPX_MASK. + (_initialize_amd64_linux_tdep): Call initialize_tdesc_amd64_avx_mpx_linux. + * amd64-linux-tdep.h (tdesc_amd64_avx_mpx_linux): New definition. + * amd64-tdep.c (features/i386/amd64-avx-mpx.c): New include. + (amd64_target_description): Add case for X86_XSTATE_AVX_MPX_MASK. + (_initialize_amd64_tdep): Call initialize_tdesc_amd64_avx_mpx. + * common/x86-xstate.h (X86_XSTATE_MPX_MASK): Remove AVX bits. + (X86_XSTATE_AVX_MPX_MASK): New case. + * features/Makefile (i386/i386-avx-mpx, i386/i386-avx-mpx-linux) + (i386/amd64-avx-mpx, i386/amd64-avx-mpx-linux): New rules. + (i386/i386-avx-mpx-expedite, i386/i386-avx-mpx-linux-expedite) + (i386/amd64-avx-mpx-expedite, i386/amd64-avx-mpx-linux-expedite): + New expedites. + * i386-linux-tdep.c (features/i386/i386-avx-mpx-linux.c): New + include. + (i386_linux_core_read_description): Add case + X86_XSTATE_AVX_MPX_MASK. + (_initialize_i386_linux_tdep): Call + initialize_tdesc_i386_avx_mpx_linux. + * i386-linux-tdep.h (tdesc_i386_avx_mpx_linux): New include. + * i386-tdep.c (features/i386/i386-avx-mpx.c): New include. + (i386_target_description): Add case for X86_XSTATE_AVX_MPX_MASK. + * x86-linux-nat.c (x86_linux_read_description): Add case for + X86_XSTATE_AVX_MPX_MASK. + * features/i386/amd64-avx-mpx-linux.xml: New file. + * features/i386/i386-avx-mpx-linux.xml: New file. + * features/i386/i386-avx-mpx.xml: New file. + * features/i386/amd64-avx-mpx.xml: New file. + * features/i386/amd64-avx-mpx-linux.c: Generated. + * features/i386/amd64-avx-mpx.c: Generated. + * features/i386/i386-avx-mpx-linux.c: Generated. + * features/i386/i386-avx-mpx.c: Generated. + * regformats/i386/amd64-avx-mpx-linux.dat: Generated. + * regformats/i386/amd64-avx-mpx.dat: Generated. + * regformats/i386/i386-avx-mpx-linux.dat: Generated. + * regformats/i386/i386-avx-mpx.dat: Generated. + 2015-05-13 Joel Brobecker * version.in: Set GDB version number to 7.9.1. Index: gdb-7.9.1/gdb/amd64-linux-tdep.c =================================================================== --- gdb-7.9.1.orig/gdb/amd64-linux-tdep.c +++ gdb-7.9.1/gdb/amd64-linux-tdep.c @@ -41,6 +41,7 @@ #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-avx512-linux.c" #include "features/i386/x32-linux.c" @@ -1587,6 +1588,11 @@ amd64_linux_core_read_description (struc return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */ else return tdesc_amd64_mpx_linux; + case X86_XSTATE_AVX_MPX_MASK: + if (gdbarch_ptr_bit (gdbarch) == 32) + return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */ + else + return tdesc_amd64_avx_mpx_linux; case X86_XSTATE_AVX_MASK: if (gdbarch_ptr_bit (gdbarch) == 32) return tdesc_x32_avx_linux; @@ -2134,6 +2140,7 @@ _initialize_amd64_linux_tdep (void) initialize_tdesc_amd64_linux (); initialize_tdesc_amd64_avx_linux (); initialize_tdesc_amd64_mpx_linux (); + initialize_tdesc_amd64_avx_mpx_linux (); initialize_tdesc_amd64_avx512_linux (); initialize_tdesc_x32_linux (); Index: gdb-7.9.1/gdb/amd64-linux-tdep.h =================================================================== --- gdb-7.9.1.orig/gdb/amd64-linux-tdep.h +++ gdb-7.9.1/gdb/amd64-linux-tdep.h @@ -35,6 +35,7 @@ extern struct target_desc *tdesc_amd64_linux; extern struct target_desc *tdesc_amd64_avx_linux; extern struct target_desc *tdesc_amd64_mpx_linux; +extern struct target_desc *tdesc_amd64_avx_mpx_linux; extern struct target_desc *tdesc_amd64_avx512_linux; extern struct target_desc *tdesc_x32_linux; Index: gdb-7.9.1/gdb/amd64-tdep.c =================================================================== --- gdb-7.9.1.orig/gdb/amd64-tdep.c +++ gdb-7.9.1/gdb/amd64-tdep.c @@ -43,6 +43,7 @@ #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-avx512.c" #include "features/i386/x32.c" @@ -3119,6 +3120,7 @@ _initialize_amd64_tdep (void) initialize_tdesc_amd64 (); initialize_tdesc_amd64_avx (); initialize_tdesc_amd64_mpx (); + initialize_tdesc_amd64_avx_mpx (); initialize_tdesc_amd64_avx512 (); initialize_tdesc_x32 (); Index: gdb-7.9.1/gdb/common/x86-xstate.h =================================================================== --- gdb-7.9.1.orig/gdb/common/x86-xstate.h +++ gdb-7.9.1/gdb/common/x86-xstate.h @@ -39,9 +39,10 @@ #define X86_XSTATE_X87_MASK X86_XSTATE_X87 #define X86_XSTATE_SSE_MASK (X86_XSTATE_X87 | X86_XSTATE_SSE) #define X86_XSTATE_AVX_MASK (X86_XSTATE_SSE_MASK | X86_XSTATE_AVX) -#define X86_XSTATE_MPX_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_MPX) +#define X86_XSTATE_MPX_MASK (X86_XSTATE_SSE_MASK | X86_XSTATE_MPX) +#define X86_XSTATE_AVX_MPX_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_MPX) #define X86_XSTATE_AVX512_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_AVX512) -#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_MPX_MASK | X86_XSTATE_AVX512) +#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_AVX_MPX_MASK | X86_XSTATE_AVX512) #define X86_XSTATE_ALL_MASK (X86_XSTATE_MPX_AVX512_MASK) Index: gdb-7.9.1/gdb/features/Makefile =================================================================== --- gdb-7.9.1.orig/gdb/features/Makefile +++ gdb-7.9.1/gdb/features/Makefile @@ -50,9 +50,11 @@ WHICH = aarch64 \ i386/amd64 i386/amd64-linux \ i386/i386-avx i386/i386-avx-linux \ i386/i386-mpx i386/i386-mpx-linux \ + i386/i386-avx-mpx i386/i386-avx-mpx-linux \ i386/i386-avx512 i386/i386-avx512-linux \ i386/amd64-avx i386/amd64-avx-linux \ i386/amd64-mpx i386/amd64-mpx-linux \ + i386/amd64-avx-mpx i386/amd64-avx-mpx-linux \ i386/amd64-avx512 i386/amd64-avx512-linux \ i386/x32 i386/x32-linux \ i386/x32-avx i386/x32-avx-linux \ @@ -82,7 +84,9 @@ i386/amd64-linux-expedite = rbp,rsp,rip i386/i386-avx-expedite = ebp,esp,eip i386/i386-avx-linux-expedite = ebp,esp,eip i386/i386-mpx-expedite = ebp,esp,eip +i386/i386-avx-mpx-expedite = ebp,esp,eip i386/i386-mpx-linux-expedite = ebp,esp,eip +i386/i386-avx-mpx-linux-expedite = ebp,esp,eip i386/i386-avx512-expedite = ebp,esp,eip i386/i386-avx512-linux-expedite = ebp,esp,eip i386/i386-mmx-expedite = ebp,esp,eip @@ -90,7 +94,9 @@ i386/i386-mmx-linux-expedite = ebp,esp,e i386/amd64-avx-expedite = rbp,rsp,rip i386/amd64-avx-linux-expedite = rbp,rsp,rip i386/amd64-mpx-expedite = rbp,rsp,rip +i386/amd64-avx-mpx-expedite = rbp,rsp,rip i386/amd64-mpx-linux-expedite = rbp,rsp,rip +i386/amd64-avx-mpx-linux-expedite = rbp,rsp,rip i386/amd64-avx512-expedite = rbp,rsp,rip i386/amd64-avx512-linux-expedite = rbp,rsp,rip i386/x32-expedite = rbp,rsp,rip @@ -151,6 +157,8 @@ XMLTOC = \ 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-linux.xml \ i386/i386-avx.xml \ @@ -161,6 +169,8 @@ XMLTOC = \ 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 \ i386/x32-avx.xml \ @@ -266,6 +276,10 @@ $(outdir)/i386/i386-mpx.dat: i386/32bit- i386/32bit-mpx.xml $(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \ i386/32bit-linux.xml i386/32bit-mpx.xml +$(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml \ + i386/32bit-linux.xml i386/32bit-mpx.xml +$(outdir)/i386/i386-avx-mpx-linux.dat: i386/32bit-core.xml \ + i386/32bit-linux.xml i386/32bit-mpx.xml $(outdir)/i386/i386-avx512.dat: i386/32bit-core.xml i386/32bit-avx.xml \ i386/32bit-mpx.xml i386/32bit-avx512.xml $(outdir)/i386/i386-avx512-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \ @@ -277,8 +291,12 @@ $(outdir)/i386/amd64-avx-linux.dat: i386 i386/64bit-linux.xml $(outdir)/i386/amd64-mpx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \ i386/64bit-linux.xml i386/64bit-mpx.xml +$(outdir)/i386/amd64-avx-mpx-linux.dat: i386/64bit-core.xml \ + i386/64bit-linux.xml i386/64bit-mpx.xml $(outdir)/i386/amd64-mpx.dat: i386/64bit-core.xml i386/64bit-avx.xml \ i386/64bit-mpx.xml +$(outdir)/i386/amd64-avx-mpx.dat: i386/64bit-core.xml \ + i386/64bit-mpx.xml $(outdir)/i386/amd64-avx512.dat: i386/64bit-core.xml i386/64bit-avx.xml \ i386/64bit-mpx.xml i386/64bit-avx512.xml $(outdir)/i386/amd64-avx512-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \ Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.c =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.c @@ -0,0 +1,211 @@ +/* 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 (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + struct tdesc_type *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_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); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_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.avx"); + tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm15h", 73, 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", 74, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu"); + tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status"); + + tdesc_amd64_avx_mpx_linux = result; +} Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.xml =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.xml @@ -0,0 +1,19 @@ + + + + + + + + i386:x86-64 + GNU/Linux + + + + + + Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.c =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.c @@ -0,0 +1,206 @@ +/* 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 (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + struct tdesc_type *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_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); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_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.avx"); + tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm15h", 72, 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", 73, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd1raw", 74, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd2raw", 75, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd3raw", 76, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bndcfgu", 77, 1, NULL, 64, "cfgu"); + tdesc_create_reg (feature, "bndstatus", 78, 1, NULL, 64, "status"); + + tdesc_amd64_avx_mpx = result; +} Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.xml =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.xml @@ -0,0 +1,17 @@ + + + + + + + + i386:x86-64 + + + + + Index: gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.c =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx-linux.c +++ gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.c @@ -151,24 +151,6 @@ initialize_tdesc_amd64_mpx_linux (void) 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.avx"); - tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm15h", 73, 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"); @@ -200,12 +182,12 @@ initialize_tdesc_amd64_mpx_linux (void) field_type = tdesc_named_type (feature, "_bndcfgu"); tdesc_add_field (type, "config", field_type); - tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu"); - tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status"); + tdesc_create_reg (feature, "bnd0raw", 58, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd1raw", 59, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd2raw", 60, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd3raw", 61, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bndcfgu", 62, 1, NULL, 64, "cfgu"); + tdesc_create_reg (feature, "bndstatus", 63, 1, NULL, 64, "status"); tdesc_amd64_mpx_linux = result; } Index: gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.xml =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx-linux.xml +++ gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.xml @@ -14,6 +14,5 @@ - Index: gdb-7.9.1/gdb/features/i386/amd64-mpx.c =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx.c +++ gdb-7.9.1/gdb/features/i386/amd64-mpx.c @@ -146,24 +146,6 @@ initialize_tdesc_amd64_mpx (void) 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.avx"); - tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128"); - tdesc_create_reg (feature, "ymm15h", 72, 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"); @@ -195,12 +177,12 @@ initialize_tdesc_amd64_mpx (void) field_type = tdesc_named_type (feature, "_bndcfgu"); tdesc_add_field (type, "config", field_type); - tdesc_create_reg (feature, "bnd0raw", 73, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bnd1raw", 74, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bnd2raw", 75, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bnd3raw", 76, 1, NULL, 128, "br128"); - tdesc_create_reg (feature, "bndcfgu", 77, 1, NULL, 64, "cfgu"); - tdesc_create_reg (feature, "bndstatus", 78, 1, NULL, 64, "status"); + tdesc_create_reg (feature, "bnd0raw", 57, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd1raw", 58, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd2raw", 59, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bnd3raw", 60, 1, NULL, 128, "br128"); + tdesc_create_reg (feature, "bndcfgu", 61, 1, NULL, 64, "cfgu"); + tdesc_create_reg (feature, "bndstatus", 62, 1, NULL, 64, "status"); tdesc_amd64_mpx = result; } Index: gdb-7.9.1/gdb/features/i386/amd64-mpx.xml =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx.xml +++ gdb-7.9.1/gdb/features/i386/amd64-mpx.xml @@ -12,6 +12,5 @@ i386:x86-64 - Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.c =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.c @@ -0,0 +1,187 @@ +/* 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 (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + struct tdesc_type *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_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); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_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, 1); + + 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; +} Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.xml =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.xml @@ -0,0 +1,19 @@ + + + + + + + + i386 + GNU/Linux + + + + + + Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx.c =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx.c @@ -0,0 +1,182 @@ +/* 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 (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + struct tdesc_type *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_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); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_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, 1); + + 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; +} Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx.xml =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx.xml @@ -0,0 +1,17 @@ + + + + + + + + i386 + + + + + Index: gdb-7.9.1/gdb/features/i386/i386-mpx-linux.c =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/i386-mpx-linux.c +++ gdb-7.9.1/gdb/features/i386/i386-mpx-linux.c @@ -135,16 +135,6 @@ initialize_tdesc_i386_mpx_linux (void) 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"); @@ -176,12 +166,12 @@ initialize_tdesc_i386_mpx_linux (void) 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_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; } Index: gdb-7.9.1/gdb/features/i386/i386-mpx-linux.xml =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/i386-mpx-linux.xml +++ gdb-7.9.1/gdb/features/i386/i386-mpx-linux.xml @@ -14,6 +14,5 @@ - Index: gdb-7.9.1/gdb/features/i386/i386-mpx.c =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/i386-mpx.c +++ gdb-7.9.1/gdb/features/i386/i386-mpx.c @@ -130,16 +130,6 @@ initialize_tdesc_i386_mpx (void) 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"); @@ -171,12 +161,12 @@ initialize_tdesc_i386_mpx (void) 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_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; } Index: gdb-7.9.1/gdb/features/i386/i386-mpx.xml =================================================================== --- gdb-7.9.1.orig/gdb/features/i386/i386-mpx.xml +++ gdb-7.9.1/gdb/features/i386/i386-mpx.xml @@ -12,6 +12,5 @@ i386 - Index: gdb-7.9.1/gdb/gdbserver/ChangeLog =================================================================== --- gdb-7.9.1.orig/gdb/gdbserver/ChangeLog +++ gdb-7.9.1/gdb/gdbserver/ChangeLog @@ -1,3 +1,36 @@ +2016-04-16 Walfred Tedeschi + + * Makefile.in (clean): Add removal for i386-avx-mpx.c, + i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c. + (i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c) + (amd64-avx-mpx-linux.c): New rules. + (amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule. + * configure.srv (srv_i386_regobj): Add i386-avx-mpx.o. + (srv_i386_linux_regobj): Add i386-avx-mpx-linux.o. + (srv_amd64_regobj): Add amd64-avx-mpx.o. + (srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o. + (srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml. + (srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml. + (srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml. + (srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml. + (ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o. + (ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o. + * linux-x86-low.c (x86_linux_read_description): Add case for + X86_XSTATE_AVX_MPX_MASK. + (x86_get_ipa_tdesc_idx): Add cases for avx_mpx. + (initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and + init_registers_i386_avx_mpx_linux. + * linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx. + (initialize_low_tracepoint): Call + init_registers_i386_avx_mpx_linux. + * linux-amd64-ipa.c (get_ipa_tdesc): Add case for avx_mpx. + (initialize_low_tracepoint): Call + init_registers_amd64_avx_mpx_linux. + * linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value. + (init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux) + (init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New + declarations. + 2015-01-10 Joel Brobecker * i387-fp.c (i387_cache_to_xsave): In look over Index: gdb-7.9.1/gdb/gdbserver/Makefile.in =================================================================== --- gdb-7.9.1.orig/gdb/gdbserver/Makefile.in +++ gdb-7.9.1/gdb/gdbserver/Makefile.in @@ -361,9 +361,11 @@ clean: rm -f xml-builtin.c stamp-xml rm -f i386-avx.c i386-avx-linux.c rm -f i386-mpx.c i386-mpx-linux.c + rm -f i386-avx-mpx.c i386-avx-mpx-linux.c rm -f i386-avx512.c i386-avx512-linux.c rm -f amd64-avx.c amd64-avx-linux.c rm -f amd64-mpx.c amd64-mpx-linux.c + rm -f amd64-avx-mpx.c amd64-avx-mpx-linux.c rm -f amd64-avx512.c amd64-avx512-linux.c rm -f i386-mmx.c i386-mmx-linux.c rm -f x32.c x32-linux.c @@ -616,6 +618,10 @@ i386-mpx.c : $(srcdir)/../regformats/i38 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mpx.dat i386-mpx.c i386-mpx-linux.c : $(srcdir)/../regformats/i386/i386-mpx-linux.dat $(regdat_sh) $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mpx-linux.dat i386-mpx-linux.c +i386-avx-mpx.c : $(srcdir)/../regformats/i386/i386-avx-mpx.dat $(regdat_sh) + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-mpx.dat i386-avx-mpx.c +i386-avx-mpx-linux.c : $(srcdir)/../regformats/i386/i386-avx-mpx-linux.dat $(regdat_sh) + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-mpx-linux.dat i386-avx-mpx-linux.c i386-mmx.c : $(srcdir)/../regformats/i386/i386-mmx.dat $(regdat_sh) $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mmx.dat i386-mmx.c i386-mmx-linux.c : $(srcdir)/../regformats/i386/i386-mmx-linux.dat $(regdat_sh) @@ -722,6 +728,10 @@ amd64-mpx.c : $(srcdir)/../regformats/i3 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-mpx.dat amd64-mpx.c amd64-mpx-linux.c : $(srcdir)/../regformats/i386/amd64-mpx-linux.dat $(regdat_sh) $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-mpx-linux.dat amd64-mpx-linux.c +amd64-avx-mpx.c : $(srcdir)/../regformats/i386/amd64-avx-mpx.dat $(regdat_sh) + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-mpx.dat amd64-avx-mpx.c +amd64-avx-mpx-linux.c : $(srcdir)/../regformats/i386/amd64-avx-mpx-linux.dat $(regdat_sh) + $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-mpx-linux.dat amd64-avx-mpx-linux.c x32.c : $(srcdir)/../regformats/i386/x32.dat $(regdat_sh) $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32.dat x32.c x32-linux.c : $(srcdir)/../regformats/i386/x32-linux.dat $(regdat_sh) Index: gdb-7.9.1/gdb/gdbserver/configure.srv =================================================================== --- gdb-7.9.1.orig/gdb/gdbserver/configure.srv +++ gdb-7.9.1/gdb/gdbserver/configure.srv @@ -24,20 +24,21 @@ # Default hostio_last_error implementation srv_hostio_err_objs="hostio-errno.o" -srv_i386_regobj="i386.o i386-avx.o i386-avx512.o i386-mpx.o i386-mmx.o" -srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx512-linux.o i386-mpx-linux.o i386-mmx-linux.o" -srv_amd64_regobj="amd64.o amd64-avx.o amd64-avx512.o amd64-mpx.o x32.o x32-avx.o x32-avx512.o" -srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx512-linux.o amd64-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx512-linux.o" +srv_i386_regobj="i386.o i386-avx.o i386-avx512.o i386-mpx.o i386-avx-mpx.o i386-mmx.o" +srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx512-linux.o i386-mpx-linux.o i386-avx-mpx-linux.o i386-mmx-linux.o" +srv_amd64_regobj="amd64.o amd64-avx.o amd64-avx512.o amd64-mpx.o amd64-avx-mpx.o x32.o x32-avx.o x32-avx512.o" +srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx512-linux.o amd64-mpx-linux.o amd64-avx-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx512-linux.o" ipa_i386_linux_regobj=i386-linux-ipa.o ipa_amd64_linux_regobj=amd64-linux-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" srv_i386_64bit_xmlfiles="i386/64bit-core.xml i386/64bit-sse.xml i386/64bit-avx.xml i386/64bit-avx512.xml i386/x32-core.xml i386/64bit-mpx.xml" -srv_i386_xmlfiles="i386/i386.xml i386/i386-avx.xml i386/i386-avx512.xml i386/i386-mpx.xml i386/i386-mmx.xml $srv_i386_32bit_xmlfiles" -srv_amd64_xmlfiles="i386/amd64.xml i386/amd64-avx.xml i386/amd64-avx512.xml i386/x32.xml i386/x32-avx.xml i386/x32-avx512.xml i386/amd64-mpx.xml $srv_i386_64bit_xmlfiles" -srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-avx512-linux.xml i386/i386-mmx-linux.xml i386/32bit-linux.xml i386/i386-mpx-linux.xml $srv_i386_32bit_xmlfiles" -srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx512-linux.xml i386/64bit-linux.xml i386/amd64-mpx-linux.xml i386/x32-linux.xml i386/x32-avx-linux.xml i386/x32-avx512-linux.xml $srv_i386_64bit_xmlfiles" +srv_i386_xmlfiles="i386/i386.xml i386/i386-avx.xml i386/i386-avx512.xml i386/i386-mpx.xml i386/i386-avx-mpx.xml i386/i386-mmx.xml $srv_i386_32bit_xmlfiles" +srv_amd64_xmlfiles="i386/amd64.xml i386/amd64-avx.xml i386/amd64-avx512.xml i386/x32.xml i386/x32-avx.xml i386/x32-avx512.xml i386/amd64-mpx.xml i386/amd64-mpx-avx.xml $srv_i386_64bit_xmlfiles" +srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-avx512-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_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx512-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-avx512-linux.xml $srv_i386_64bit_xmlfiles" # Linux object files. This is so we don't have to repeat Index: gdb-7.9.1/gdb/gdbserver/linux-x86-low.c =================================================================== --- gdb-7.9.1.orig/gdb/gdbserver/linux-x86-low.c +++ gdb-7.9.1/gdb/gdbserver/linux-x86-low.c @@ -55,6 +55,10 @@ extern const struct target_desc *tdesc_a void init_registers_amd64_mpx_linux (void); extern const struct target_desc *tdesc_amd64_mpx_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 x32-linux.c. */ void init_registers_x32_linux (void); extern const struct target_desc *tdesc_x32_linux; @@ -81,6 +85,10 @@ extern const struct target_desc *tdesc_i 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-avx512-linux.c. */ void init_registers_i386_avx512_linux (void); extern const struct target_desc *tdesc_i386_avx512_linux; @@ -1394,6 +1402,9 @@ x86_linux_read_description (void) case X86_XSTATE_AVX512_MASK: return tdesc_amd64_avx512_linux; + case X86_XSTATE_AVX_MPX_MASK: + return tdesc_amd64_avx_mpx_linux; + case X86_XSTATE_MPX_MASK: return tdesc_amd64_mpx_linux; @@ -1441,6 +1452,9 @@ x86_linux_read_description (void) case (X86_XSTATE_MPX_MASK): return tdesc_i386_mpx_linux; + case (X86_XSTATE_AVX_MPX_MASK): + return tdesc_i386_avx_mpx_linux; + case (X86_XSTATE_AVX_MASK): return tdesc_i386_avx_linux; @@ -3447,6 +3461,7 @@ initialize_low_arch (void) init_registers_amd64_avx_linux (); init_registers_amd64_avx512_linux (); init_registers_amd64_mpx_linux (); + init_registers_amd64_avx_mpx_linux (); init_registers_x32_linux (); init_registers_x32_avx_linux (); @@ -3461,6 +3476,7 @@ initialize_low_arch (void) init_registers_i386_avx_linux (); init_registers_i386_avx512_linux (); init_registers_i386_mpx_linux (); + init_registers_i386_avx_mpx_linux (); tdesc_i386_linux_no_xml = xmalloc (sizeof (struct target_desc)); copy_target_description (tdesc_i386_linux_no_xml, tdesc_i386_linux); Index: gdb-7.9.1/gdb/i386-linux-tdep.c =================================================================== --- gdb-7.9.1.orig/gdb/i386-linux-tdep.c +++ gdb-7.9.1/gdb/i386-linux-tdep.c @@ -49,6 +49,7 @@ #include "features/i386/i386-linux.c" #include "features/i386/i386-mmx-linux.c" #include "features/i386/i386-mpx-linux.c" +#include "features/i386/i386-avx-mpx-linux.c" #include "features/i386/i386-avx-linux.c" #include "features/i386/i386-avx512-linux.c" @@ -632,6 +633,8 @@ i386_linux_core_read_description (struct return tdesc_i386_avx512_linux; case X86_XSTATE_MPX_MASK: return tdesc_i386_mpx_linux; + case X86_XSTATE_AVX_MPX_MASK: + return tdesc_i386_avx_mpx_linux; case X86_XSTATE_AVX_MASK: return tdesc_i386_avx_linux; case X86_XSTATE_SSE_MASK: @@ -1015,5 +1018,6 @@ _initialize_i386_linux_tdep (void) initialize_tdesc_i386_mmx_linux (); initialize_tdesc_i386_avx_linux (); initialize_tdesc_i386_mpx_linux (); + initialize_tdesc_i386_avx_mpx_linux (); initialize_tdesc_i386_avx512_linux (); } Index: gdb-7.9.1/gdb/i386-linux-tdep.h =================================================================== --- gdb-7.9.1.orig/gdb/i386-linux-tdep.h +++ gdb-7.9.1/gdb/i386-linux-tdep.h @@ -42,6 +42,7 @@ extern struct target_desc *tdesc_i386_li extern struct target_desc *tdesc_i386_mmx_linux; extern struct target_desc *tdesc_i386_avx_linux; extern struct target_desc *tdesc_i386_mpx_linux; +extern struct target_desc *tdesc_i386_avx_mpx_linux; extern struct target_desc *tdesc_i386_avx512_linux; /* Format of XSAVE extended state is: Index: gdb-7.9.1/gdb/i386-tdep.c =================================================================== --- gdb-7.9.1.orig/gdb/i386-tdep.c +++ gdb-7.9.1/gdb/i386-tdep.c @@ -55,6 +55,7 @@ #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-avx512.c" #include "features/i386/i386-mmx.c" @@ -8635,6 +8636,7 @@ is \"default\"."), initialize_tdesc_i386_mmx (); initialize_tdesc_i386_avx (); initialize_tdesc_i386_mpx (); + initialize_tdesc_i386_avx_mpx (); initialize_tdesc_i386_avx512 (); /* Tell remote stub that we support XML target description. */ Index: gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx-linux.dat =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx-linux.dat @@ -0,0 +1,85 @@ +# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: +# Generated from: i386/amd64-avx-mpx-linux.xml +name:amd64_avx_mpx_linux +xmltarget:amd64-avx-mpx-linux.xml +expedite:rbp,rsp,rip +64:rax +64:rbx +64:rcx +64:rdx +64:rsi +64:rdi +64:rbp +64:rsp +64:r8 +64:r9 +64:r10 +64:r11 +64:r12 +64:r13 +64:r14 +64:r15 +64:rip +32:eflags +32:cs +32:ss +32:ds +32:es +32:fs +32:gs +80:st0 +80:st1 +80:st2 +80:st3 +80:st4 +80:st5 +80:st6 +80:st7 +32:fctrl +32:fstat +32:ftag +32:fiseg +32:fioff +32:foseg +32:fooff +32:fop +128:xmm0 +128:xmm1 +128:xmm2 +128:xmm3 +128:xmm4 +128:xmm5 +128:xmm6 +128:xmm7 +128:xmm8 +128:xmm9 +128:xmm10 +128:xmm11 +128:xmm12 +128:xmm13 +128:xmm14 +128:xmm15 +32:mxcsr +64:orig_rax +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h +128:ymm8h +128:ymm9h +128:ymm10h +128:ymm11h +128:ymm12h +128:ymm13h +128:ymm14h +128:ymm15h +128:bnd0raw +128:bnd1raw +128:bnd2raw +128:bnd3raw +64:bndcfgu +64:bndstatus Index: gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx.dat =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx.dat @@ -0,0 +1,84 @@ +# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: +# Generated from: i386/amd64-avx-mpx.xml +name:amd64_avx_mpx +xmltarget:amd64-avx-mpx.xml +expedite:rbp,rsp,rip +64:rax +64:rbx +64:rcx +64:rdx +64:rsi +64:rdi +64:rbp +64:rsp +64:r8 +64:r9 +64:r10 +64:r11 +64:r12 +64:r13 +64:r14 +64:r15 +64:rip +32:eflags +32:cs +32:ss +32:ds +32:es +32:fs +32:gs +80:st0 +80:st1 +80:st2 +80:st3 +80:st4 +80:st5 +80:st6 +80:st7 +32:fctrl +32:fstat +32:ftag +32:fiseg +32:fioff +32:foseg +32:fooff +32:fop +128:xmm0 +128:xmm1 +128:xmm2 +128:xmm3 +128:xmm4 +128:xmm5 +128:xmm6 +128:xmm7 +128:xmm8 +128:xmm9 +128:xmm10 +128:xmm11 +128:xmm12 +128:xmm13 +128:xmm14 +128:xmm15 +32:mxcsr +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h +128:ymm8h +128:ymm9h +128:ymm10h +128:ymm11h +128:ymm12h +128:ymm13h +128:ymm14h +128:ymm15h +128:bnd0raw +128:bnd1raw +128:bnd2raw +128:bnd3raw +64:bndcfgu +64:bndstatus Index: gdb-7.9.1/gdb/regformats/i386/amd64-mpx-linux.dat =================================================================== --- gdb-7.9.1.orig/gdb/regformats/i386/amd64-mpx-linux.dat +++ gdb-7.9.1/gdb/regformats/i386/amd64-mpx-linux.dat @@ -61,22 +61,6 @@ expedite:rbp,rsp,rip 128:xmm15 32:mxcsr 64:orig_rax -128:ymm0h -128:ymm1h -128:ymm2h -128:ymm3h -128:ymm4h -128:ymm5h -128:ymm6h -128:ymm7h -128:ymm8h -128:ymm9h -128:ymm10h -128:ymm11h -128:ymm12h -128:ymm13h -128:ymm14h -128:ymm15h 128:bnd0raw 128:bnd1raw 128:bnd2raw Index: gdb-7.9.1/gdb/regformats/i386/amd64-mpx.dat =================================================================== --- gdb-7.9.1.orig/gdb/regformats/i386/amd64-mpx.dat +++ gdb-7.9.1/gdb/regformats/i386/amd64-mpx.dat @@ -60,22 +60,6 @@ expedite:rbp,rsp,rip 128:xmm14 128:xmm15 32:mxcsr -128:ymm0h -128:ymm1h -128:ymm2h -128:ymm3h -128:ymm4h -128:ymm5h -128:ymm6h -128:ymm7h -128:ymm8h -128:ymm9h -128:ymm10h -128:ymm11h -128:ymm12h -128:ymm13h -128:ymm14h -128:ymm15h 128:bnd0raw 128:bnd1raw 128:bnd2raw Index: gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx-linux.dat =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx-linux.dat @@ -0,0 +1,61 @@ +# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: +# Generated from: i386/i386-avx-mpx-linux.xml +name:i386_avx_mpx_linux +xmltarget:i386-avx-mpx-linux.xml +expedite:ebp,esp,eip +32:eax +32:ecx +32:edx +32:ebx +32:esp +32:ebp +32:esi +32:edi +32:eip +32:eflags +32:cs +32:ss +32:ds +32:es +32:fs +32:gs +80:st0 +80:st1 +80:st2 +80:st3 +80:st4 +80:st5 +80:st6 +80:st7 +32:fctrl +32:fstat +32:ftag +32:fiseg +32:fioff +32:foseg +32:fooff +32:fop +128:xmm0 +128:xmm1 +128:xmm2 +128:xmm3 +128:xmm4 +128:xmm5 +128:xmm6 +128:xmm7 +32:mxcsr +32:orig_eax +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h +128:bnd0raw +128:bnd1raw +128:bnd2raw +128:bnd3raw +64:bndcfgu +64:bndstatus Index: gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx.dat =================================================================== --- /dev/null +++ gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx.dat @@ -0,0 +1,60 @@ +# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: +# Generated from: i386/i386-avx-mpx.xml +name:i386_avx_mpx +xmltarget:i386-avx-mpx.xml +expedite:ebp,esp,eip +32:eax +32:ecx +32:edx +32:ebx +32:esp +32:ebp +32:esi +32:edi +32:eip +32:eflags +32:cs +32:ss +32:ds +32:es +32:fs +32:gs +80:st0 +80:st1 +80:st2 +80:st3 +80:st4 +80:st5 +80:st6 +80:st7 +32:fctrl +32:fstat +32:ftag +32:fiseg +32:fioff +32:foseg +32:fooff +32:fop +128:xmm0 +128:xmm1 +128:xmm2 +128:xmm3 +128:xmm4 +128:xmm5 +128:xmm6 +128:xmm7 +32:mxcsr +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h +128:bnd0raw +128:bnd1raw +128:bnd2raw +128:bnd3raw +64:bndcfgu +64:bndstatus Index: gdb-7.9.1/gdb/regformats/i386/i386-mpx-linux.dat =================================================================== --- gdb-7.9.1.orig/gdb/regformats/i386/i386-mpx-linux.dat +++ gdb-7.9.1/gdb/regformats/i386/i386-mpx-linux.dat @@ -45,14 +45,6 @@ expedite:ebp,esp,eip 128:xmm7 32:mxcsr 32:orig_eax -128:ymm0h -128:ymm1h -128:ymm2h -128:ymm3h -128:ymm4h -128:ymm5h -128:ymm6h -128:ymm7h 128:bnd0raw 128:bnd1raw 128:bnd2raw Index: gdb-7.9.1/gdb/regformats/i386/i386-mpx.dat =================================================================== --- gdb-7.9.1.orig/gdb/regformats/i386/i386-mpx.dat +++ gdb-7.9.1/gdb/regformats/i386/i386-mpx.dat @@ -44,14 +44,6 @@ expedite:ebp,esp,eip 128:xmm6 128:xmm7 32:mxcsr -128:ymm0h -128:ymm1h -128:ymm2h -128:ymm3h -128:ymm4h -128:ymm5h -128:ymm6h -128:ymm7h 128:bnd0raw 128:bnd1raw 128:bnd2raw Index: gdb-7.9.1/gdb/x86-linux-nat.c =================================================================== --- gdb-7.9.1.orig/gdb/x86-linux-nat.c +++ gdb-7.9.1/gdb/x86-linux-nat.c @@ -391,6 +391,11 @@ x86_linux_read_description (struct targe 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; @@ -413,6 +418,8 @@ x86_linux_read_description (struct targe return tdesc_i386_avx512_linux; case X86_XSTATE_MPX_MASK: return tdesc_i386_mpx_linux; + case X86_XSTATE_AVX_MPX_MASK: + return tdesc_i386_avx_mpx_linux; case X86_XSTATE_AVX_MASK: return tdesc_i386_avx_linux; default: