diff options
| author | bavery <brian.avery@intel.com> | 2016-05-19 15:04:39 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-05-20 10:20:22 +0100 |
| commit | dee987b6f157b0bc245086d3af914d411ae6d1ab (patch) | |
| tree | 216bb6d395543fb7c220ed9a0891dc9c08157b89 | |
| parent | 0f1054e7db74bb4a196e00773915d7997b55bdf2 (diff) | |
| download | openembedded-core-dee987b6f157b0bc245086d3af914d411ae6d1ab.tar.gz openembedded-core-dee987b6f157b0bc245086d3af914d411ae6d1ab.tar.bz2 openembedded-core-dee987b6f157b0bc245086d3af914d411ae6d1ab.zip | |
gdb: Backport patch to changes with AVX and 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.
This commit is backported from 7.12
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb-common.inc | 2 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch | 2601 |
2 files changed, 2602 insertions, 1 deletions
diff --git a/meta/recipes-devtools/gdb/gdb-common.inc b/meta/recipes-devtools/gdb/gdb-common.inc index 1d1cf8fed3..3e00a2e9ff 100644 --- a/meta/recipes-devtools/gdb/gdb-common.inc +++ b/meta/recipes-devtools/gdb/gdb-common.inc @@ -36,6 +36,7 @@ SRC_URI = "git://sourceware.org/git/binutils-gdb.git;branch=gdb-7.11-branch \ file://0008-Use-exorted-definitions-of-SIGRTMIN.patch \ file://0009-Change-order-of-CFLAGS.patch \ file://0010-resolve-restrict-keyword-conflict.patch \ + file://0011-avx_mpx.patch \ " S = "${WORKDIR}/git" @@ -84,4 +85,3 @@ RRECOMMENDS_gdb_append_linux = " glibc-thread-db " RRECOMMENDS_gdb_append_linux-gnueabi = " glibc-thread-db " RRECOMMENDS_gdbserver_append_linux = " glibc-thread-db " RRECOMMENDS_gdbserver_append_linux-gnueabi = " glibc-thread-db " - diff --git a/meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch b/meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch new file mode 100644 index 0000000000..209c4fcbdf --- /dev/null +++ b/meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch @@ -0,0 +1,2601 @@ +gdb: Backport patch to support changes with AVX and 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. + +Upstream-Status: Backport + +Signed-off-by: bavery <brian.avery@intel.com> + + +Orignal patch changelog and author attribution: + +2016-04-16 Walfred Tedeschi <walfred.tedeschi@intel.com> + +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. + + + + +diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c +index 21bcd99..5327f7c 100644 +--- a/gdb/amd64-linux-tdep.c ++++ b/gdb/amd64-linux-tdep.c +@@ -43,6 +43,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" +@@ -1590,6 +1591,11 @@ amd64_linux_core_read_description (struct gdbarch *gdbarch, + 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; +@@ -2285,6 +2291,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 (); +diff --git a/gdb/amd64-linux-tdep.h b/gdb/amd64-linux-tdep.h +index 8673442..d64d5d6 100644 +--- a/gdb/amd64-linux-tdep.h ++++ b/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; +diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c +index fae92b2..88e3bf8 100644 +--- a/gdb/amd64-tdep.c ++++ b/gdb/amd64-tdep.c +@@ -44,6 +44,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" +@@ -3132,6 +3133,8 @@ amd64_target_description (uint64_t xcr0) + return tdesc_amd64_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: +@@ -3148,6 +3151,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 (); +diff --git a/gdb/common/x86-xstate.h b/gdb/common/x86-xstate.h +index 8386420..0aa9164 100644 +--- a/gdb/common/x86-xstate.h ++++ b/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) + +diff --git a/gdb/features/Makefile b/gdb/features/Makefile +index 10173cf..e5c5154 100644 +--- a/gdb/features/Makefile ++++ b/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 \ +@@ -83,7 +85,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 +@@ -91,7 +95,9 @@ i386/i386-mmx-linux-expedite = ebp,esp,eip + 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 +@@ -156,6 +162,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 \ +@@ -166,6 +174,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 \ +@@ -271,6 +281,10 @@ $(outdir)/i386/i386-mpx.dat: i386/32bit-core.xml i386/32bit-avx.xml \ + 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 \ +@@ -282,8 +296,12 @@ $(outdir)/i386/amd64-avx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \ + 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 \ +diff --git a/gdb/features/i386/amd64-avx-mpx-linux.c b/gdb/features/i386/amd64-avx-mpx-linux.c +new file mode 100644 +index 0000000..37b4c81 +--- /dev/null ++++ b/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; ++} +diff --git a/gdb/features/i386/amd64-avx-mpx-linux.xml b/gdb/features/i386/amd64-avx-mpx-linux.xml +new file mode 100644 +index 0000000..526c700 +--- /dev/null ++++ b/gdb/features/i386/amd64-avx-mpx-linux.xml +@@ -0,0 +1,19 @@ ++<?xml version="1.0"?> ++<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc. ++ ++ Copying and distribution of this file, with or without modification, ++ are permitted in any medium without royalty provided the copyright ++ notice and this notice are preserved. --> ++ ++<!-- AMD64 with AVX and MPX - Includes Linux-only special "register". --> ++ ++<!DOCTYPE target SYSTEM "gdb-target.dtd"> ++<target> ++ <architecture>i386:x86-64</architecture> ++ <osabi>GNU/Linux</osabi> ++ <xi:include href="64bit-core.xml"/> ++ <xi:include href="64bit-sse.xml"/> ++ <xi:include href="64bit-linux.xml"/> ++ <xi:include href="64bit-avx.xml"/> ++ <xi:include href="64bit-mpx.xml"/> ++</target> +diff --git a/gdb/features/i386/amd64-avx-mpx.c b/gdb/features/i386/amd64-avx-mpx.c +new file mode 100644 +index 0000000..1279f73 +--- /dev/null ++++ b/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; ++} +diff --git a/gdb/features/i386/amd64-avx-mpx.xml b/gdb/features/i386/amd64-avx-mpx.xml +new file mode 100644 +index 0000000..3eea6dd +--- /dev/null ++++ b/gdb/features/i386/amd64-avx-mpx.xml +@@ -0,0 +1,17 @@ ++<?xml version="1.0"?> ++<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc. ++ ++ Copying and distribution of this file, with or without modification, ++ are permitted in any medium without royalty provided the copyright ++ notice and this notice are preserved. --> ++ ++<!-- AMD64 with AVX and MPX --> ++ ++<!DOCTYPE target SYSTEM "gdb-target.dtd"> ++<target> ++ <architecture>i386:x86-64</architecture> ++ <xi:include href="64bit-core.xml"/> ++ <xi:include href="64bit-sse.xml"/> ++ <xi:include href="64bit-avx.xml"/> ++ <xi:include href="64bit-mpx.xml"/> ++</target> +diff --git a/gdb/features/i386/amd64-mpx-linux.c b/gdb/features/i386/amd64-mpx-linux.c +index 86a1774..5c1584b 100644 +--- a/gdb/features/i386/amd64-mpx-linux.c ++++ b/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; + } +diff --git a/gdb/features/i386/amd64-mpx-linux.xml b/gdb/features/i386/amd64-mpx-linux.xml +index 15e87b4..835126b 100644 +--- a/gdb/features/i386/amd64-mpx-linux.xml ++++ b/gdb/features/i386/amd64-mpx-linux.xml +@@ -14,6 +14,5 @@ + <xi:include href="64bit-core.xml"/> + <xi:include href="64bit-sse.xml"/> + <xi:include |
