summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaul Wold <sgw@linux.intel.com>2016-05-19 15:25:44 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-05-22 08:42:55 +0100
commit65306b0bfc1afd0de9b1d470fd78c8c69f55f791 (patch)
treeefde9c91fbe98a1d781b594e436a6c5156639939
parentf117786f2447d86810d2b8078f125363632c7662 (diff)
downloadpoky-65306b0bfc1afd0de9b1d470fd78c8c69f55f791.tar.gz
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 (From OE-Core rev: 059d459d48bd42a282005698c4dc4a3ecbd2d88f) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/gdb/gdb-7.9.1.inc1
-rw-r--r--meta/recipes-devtools/gdb/gdb/0001-7.9.1-Add-target-descriptions-for-AVX-MPX.patch2156
2 files changed, 2157 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gdb/gdb-7.9.1.inc b/meta/recipes-devtools/gdb/gdb-7.9.1.inc
index 1ca95afdcc..70da1fe4cf 100644
--- a/meta/recipes-devtools/gdb/gdb-7.9.1.inc
+++ b/meta/recipes-devtools/gdb/gdb-7.9.1.inc
@@ -7,3 +7,4 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
7SRC_URI[md5sum] = "f3b97de919a9dba84490b2e076ec4cb0" 7SRC_URI[md5sum] = "f3b97de919a9dba84490b2e076ec4cb0"
8SRC_URI[sha256sum] = "4994ad986726ac4128a6f1bd8020cd672e9a92aa76b80736563ef992992764ef" 8SRC_URI[sha256sum] = "4994ad986726ac4128a6f1bd8020cd672e9a92aa76b80736563ef992992764ef"
9 9
10SRC_URI += "file://0001-7.9.1-Add-target-descriptions-for-AVX-MPX.patch"
diff --git a/meta/recipes-devtools/gdb/gdb/0001-7.9.1-Add-target-descriptions-for-AVX-MPX.patch b/meta/recipes-devtools/gdb/gdb/0001-7.9.1-Add-target-descriptions-for-AVX-MPX.patch
new file mode 100644
index 0000000000..7db7fb9407
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0001-7.9.1-Add-target-descriptions-for-AVX-MPX.patch
@@ -0,0 +1,2156 @@
1From 15c429945dc4674b62e6b956c0ba9059206055ed Mon Sep 17 00:00:00 2001
2From: Walfred Tedeschi <walfred.tedeschi@intel.com>
3Date: Fri, 13 May 2016 15:36:43 +0200
4Subject: [PATCH 1/1] Add target descriptions for AVX + MPX
5
6The current MPX target descriptions assume that MPX is always combined
7with AVX, however that's not correct. We can have machines with MPX
8and without AVX; or machines with AVX and without MPX.
9
10This patch adds new target descriptions for machines that support
11both MPX and AVX, as duplicates of the existing MPX descriptions.
12
13The following commit will remove AVX from the MPX-only descriptions.
14
152016-04-16 Walfred Tedeschi <walfred.tedeschi@intel.com>
16
17gdb/ChangeLog:
18
19 * amd64-linux-tdep.c (features/i386/amd64-avx-mpx-linux.c):
20 New include.
21 (amd64_linux_core_read_description): Add case for
22 X86_XSTATE_AVX_MPX_MASK.
23 (_initialize_amd64_linux_tdep): Call initialize_tdesc_amd64_avx_mpx_linux.
24 * amd64-linux-tdep.h (tdesc_amd64_avx_mpx_linux): New definition.
25 * amd64-tdep.c (features/i386/amd64-avx-mpx.c): New include.
26 (amd64_target_description): Add case for X86_XSTATE_AVX_MPX_MASK.
27 (_initialize_amd64_tdep): Call initialize_tdesc_amd64_avx_mpx.
28 * common/x86-xstate.h (X86_XSTATE_MPX_MASK): Remove AVX bits.
29 (X86_XSTATE_AVX_MPX_MASK): New case.
30 * features/Makefile (i386/i386-avx-mpx, i386/i386-avx-mpx-linux)
31 (i386/amd64-avx-mpx, i386/amd64-avx-mpx-linux): New rules.
32 (i386/i386-avx-mpx-expedite, i386/i386-avx-mpx-linux-expedite)
33 (i386/amd64-avx-mpx-expedite, i386/amd64-avx-mpx-linux-expedite):
34 New expedites.
35 * i386-linux-tdep.c (features/i386/i386-avx-mpx-linux.c): New
36 include.
37 (i386_linux_core_read_description): Add case
38 X86_XSTATE_AVX_MPX_MASK.
39 (_initialize_i386_linux_tdep): Call
40 initialize_tdesc_i386_avx_mpx_linux.
41 * i386-linux-tdep.h (tdesc_i386_avx_mpx_linux): New include.
42 * i386-tdep.c (features/i386/i386-avx-mpx.c): New include.
43 (i386_target_description): Add case for X86_XSTATE_AVX_MPX_MASK.
44 * x86-linux-nat.c (x86_linux_read_description): Add case for
45 X86_XSTATE_AVX_MPX_MASK.
46 * features/i386/amd64-avx-mpx-linux.xml: New file.
47 * features/i386/i386-avx-mpx-linux.xml: New file.
48 * features/i386/i386-avx-mpx.xml: New file.
49 * features/i386/amd64-avx-mpx.xml: New file.
50 * features/i386/amd64-avx-mpx-linux.c: Generated.
51 * features/i386/amd64-avx-mpx.c: Generated.
52 * features/i386/i386-avx-mpx-linux.c: Generated.
53 * features/i386/i386-avx-mpx.c: Generated.
54 * regformats/i386/amd64-avx-mpx-linux.dat: Generated.
55 * regformats/i386/amd64-avx-mpx.dat: Generated.
56 * regformats/i386/i386-avx-mpx-linux.dat: Generated.
57 * regformats/i386/i386-avx-mpx.dat: Generated.
58
59gdb/gdbserver/ChangeLog:
60
61 * Makefile.in (clean): Add removal for i386-avx-mpx.c,
62 i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c.
63 (i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c)
64 (amd64-avx-mpx-linux.c): New rules.
65 (amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule.
66 * configure.srv (srv_i386_regobj): Add i386-avx-mpx.o.
67 (srv_i386_linux_regobj): Add i386-avx-mpx-linux.o.
68 (srv_amd64_regobj): Add amd64-avx-mpx.o.
69 (srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o.
70 (srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml.
71 (srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml.
72 (srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml.
73 (srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml.
74 (ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o.
75 (ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o.
76 * linux-x86-low.c (x86_linux_read_description): Add case for
77 X86_XSTATE_AVX_MPX_MASK.
78 (x86_get_ipa_tdesc_idx): Add cases for avx_mpx.
79 (initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and
80 init_registers_i386_avx_mpx_linux.
81 * linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
82 (initialize_low_tracepoint): Call
83 init_registers_i386_avx_mpx_linux.
84 * linux-amd64-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
85 (initialize_low_tracepoint): Call
86 init_registers_amd64_avx_mpx_linux.
87 * linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value.
88 (init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux)
89 (init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New
90 declarations.
91
92Change-Id: I7b0642263cfa3e47b626022796e5dd3627b92ba8
93
94Upstream-Status: Backport
95Signed-off-by: Saul Wold <sgw@linux.intel.com>
96
97# Conflicts:
98# gdb/amd64-tdep.c
99# gdb/i386-tdep.c
100---
101 gdb/ChangeLog | 57 ++++++++
102 gdb/amd64-linux-tdep.c | 7 +
103 gdb/amd64-linux-tdep.h | 1 +
104 gdb/amd64-tdep.c | 2 +
105 gdb/common/x86-xstate.h | 5 +-
106 gdb/features/Makefile | 18 +++
107 gdb/features/i386/amd64-avx-mpx-linux.c | 211 ++++++++++++++++++++++++++++
108 gdb/features/i386/amd64-avx-mpx-linux.xml | 19 +++
109 gdb/features/i386/amd64-avx-mpx.c | 206 +++++++++++++++++++++++++++
110 gdb/features/i386/amd64-avx-mpx.xml | 17 +++
111 gdb/features/i386/amd64-mpx-linux.c | 30 +---
112 gdb/features/i386/amd64-mpx-linux.xml | 1 -
113 gdb/features/i386/amd64-mpx.c | 30 +---
114 gdb/features/i386/amd64-mpx.xml | 1 -
115 gdb/features/i386/i386-avx-mpx-linux.c | 187 ++++++++++++++++++++++++
116 gdb/features/i386/i386-avx-mpx-linux.xml | 19 +++
117 gdb/features/i386/i386-avx-mpx.c | 182 ++++++++++++++++++++++++
118 gdb/features/i386/i386-avx-mpx.xml | 17 +++
119 gdb/features/i386/i386-mpx-linux.c | 22 +--
120 gdb/features/i386/i386-mpx-linux.xml | 1 -
121 gdb/features/i386/i386-mpx.c | 22 +--
122 gdb/features/i386/i386-mpx.xml | 1 -
123 gdb/gdbserver/ChangeLog | 33 +++++
124 gdb/gdbserver/Makefile.in | 10 ++
125 gdb/gdbserver/configure.srv | 17 +--
126 gdb/gdbserver/linux-x86-low.c | 16 +++
127 gdb/i386-linux-tdep.c | 4 +
128 gdb/i386-linux-tdep.h | 1 +
129 gdb/i386-tdep.c | 2 +
130 gdb/regformats/i386/amd64-avx-mpx-linux.dat | 85 +++++++++++
131 gdb/regformats/i386/amd64-avx-mpx.dat | 84 +++++++++++
132 gdb/regformats/i386/amd64-mpx-linux.dat | 16 ---
133 gdb/regformats/i386/amd64-mpx.dat | 16 ---
134 gdb/regformats/i386/i386-avx-mpx-linux.dat | 61 ++++++++
135 gdb/regformats/i386/i386-avx-mpx.dat | 60 ++++++++
136 gdb/regformats/i386/i386-mpx-linux.dat | 8 --
137 gdb/regformats/i386/i386-mpx.dat | 8 --
138 gdb/x86-linux-nat.c | 7 +
139 38 files changed, 1342 insertions(+), 142 deletions(-)
140 create mode 100644 gdb/features/i386/amd64-avx-mpx-linux.c
141 create mode 100644 gdb/features/i386/amd64-avx-mpx-linux.xml
142 create mode 100644 gdb/features/i386/amd64-avx-mpx.c
143 create mode 100644 gdb/features/i386/amd64-avx-mpx.xml
144 create mode 100644 gdb/features/i386/i386-avx-mpx-linux.c
145 create mode 100644 gdb/features/i386/i386-avx-mpx-linux.xml
146 create mode 100644 gdb/features/i386/i386-avx-mpx.c
147 create mode 100644 gdb/features/i386/i386-avx-mpx.xml
148 create mode 100644 gdb/regformats/i386/amd64-avx-mpx-linux.dat
149 create mode 100644 gdb/regformats/i386/amd64-avx-mpx.dat
150 create mode 100644 gdb/regformats/i386/i386-avx-mpx-linux.dat
151 create mode 100644 gdb/regformats/i386/i386-avx-mpx.dat
152
153Index: gdb-7.9.1/gdb/ChangeLog
154===================================================================
155--- gdb-7.9.1.orig/gdb/ChangeLog
156+++ gdb-7.9.1/gdb/ChangeLog
157@@ -1,3 +1,60 @@
158+2016-04-14 Walfred Tedeschi <walfred.tedeschi@intel.com>
159+
160+ * features/i386/amd64-mpx-linux.xml: Remove AVX feature.
161+ * features/i386/amd64-mpx.xml: Remove AVX feature.
162+ * features/i386/i386-mpx-linux.xml: Remove AVX feature.
163+ * features/i386/i386-mpx.xml: Remove AVX feature.
164+ * features/i386/amd64-mpx-linux.c: Regenerate.
165+ * features/i386/amd64-mpx.c: Regenerate.
166+ * features/i386/i386-mpx-linux.c: Regenerate.
167+ * features/i386/i386-mpx.c: Regenerate.
168+ * regformats/i386/amd64-mpx-linux.dat: Regenerate.
169+ * regformats/i386/amd64-mpx.dat: Regenerate.
170+ * regformats/i386/i386-mpx-linux.dat: Regenerate.
171+ * regformats/i386/i386-mpx.dat: Regenerate.
172+
173+2016-04-16 Walfred Tedeschi <walfred.tedeschi@intel.com>
174+
175+ * amd64-linux-tdep.c (features/i386/amd64-avx-mpx-linux.c):
176+ New include.
177+ (amd64_linux_core_read_description): Add case for
178+ X86_XSTATE_AVX_MPX_MASK.
179+ (_initialize_amd64_linux_tdep): Call initialize_tdesc_amd64_avx_mpx_linux.
180+ * amd64-linux-tdep.h (tdesc_amd64_avx_mpx_linux): New definition.
181+ * amd64-tdep.c (features/i386/amd64-avx-mpx.c): New include.
182+ (amd64_target_description): Add case for X86_XSTATE_AVX_MPX_MASK.
183+ (_initialize_amd64_tdep): Call initialize_tdesc_amd64_avx_mpx.
184+ * common/x86-xstate.h (X86_XSTATE_MPX_MASK): Remove AVX bits.
185+ (X86_XSTATE_AVX_MPX_MASK): New case.
186+ * features/Makefile (i386/i386-avx-mpx, i386/i386-avx-mpx-linux)
187+ (i386/amd64-avx-mpx, i386/amd64-avx-mpx-linux): New rules.
188+ (i386/i386-avx-mpx-expedite, i386/i386-avx-mpx-linux-expedite)
189+ (i386/amd64-avx-mpx-expedite, i386/amd64-avx-mpx-linux-expedite):
190+ New expedites.
191+ * i386-linux-tdep.c (features/i386/i386-avx-mpx-linux.c): New
192+ include.
193+ (i386_linux_core_read_description): Add case
194+ X86_XSTATE_AVX_MPX_MASK.
195+ (_initialize_i386_linux_tdep): Call
196+ initialize_tdesc_i386_avx_mpx_linux.
197+ * i386-linux-tdep.h (tdesc_i386_avx_mpx_linux): New include.
198+ * i386-tdep.c (features/i386/i386-avx-mpx.c): New include.
199+ (i386_target_description): Add case for X86_XSTATE_AVX_MPX_MASK.
200+ * x86-linux-nat.c (x86_linux_read_description): Add case for
201+ X86_XSTATE_AVX_MPX_MASK.
202+ * features/i386/amd64-avx-mpx-linux.xml: New file.
203+ * features/i386/i386-avx-mpx-linux.xml: New file.
204+ * features/i386/i386-avx-mpx.xml: New file.
205+ * features/i386/amd64-avx-mpx.xml: New file.
206+ * features/i386/amd64-avx-mpx-linux.c: Generated.
207+ * features/i386/amd64-avx-mpx.c: Generated.
208+ * features/i386/i386-avx-mpx-linux.c: Generated.
209+ * features/i386/i386-avx-mpx.c: Generated.
210+ * regformats/i386/amd64-avx-mpx-linux.dat: Generated.
211+ * regformats/i386/amd64-avx-mpx.dat: Generated.
212+ * regformats/i386/i386-avx-mpx-linux.dat: Generated.
213+ * regformats/i386/i386-avx-mpx.dat: Generated.
214+
215 2015-05-13 Joel Brobecker <brobecker@adacore.com>
216
217 * version.in: Set GDB version number to 7.9.1.
218Index: gdb-7.9.1/gdb/amd64-linux-tdep.c
219===================================================================
220--- gdb-7.9.1.orig/gdb/amd64-linux-tdep.c
221+++ gdb-7.9.1/gdb/amd64-linux-tdep.c
222@@ -41,6 +41,7 @@
223 #include "features/i386/amd64-linux.c"
224 #include "features/i386/amd64-avx-linux.c"
225 #include "features/i386/amd64-mpx-linux.c"
226+#include "features/i386/amd64-avx-mpx-linux.c"
227 #include "features/i386/amd64-avx512-linux.c"
228
229 #include "features/i386/x32-linux.c"
230@@ -1587,6 +1588,11 @@ amd64_linux_core_read_description (struc
231 return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */
232 else
233 return tdesc_amd64_mpx_linux;
234+ case X86_XSTATE_AVX_MPX_MASK:
235+ if (gdbarch_ptr_bit (gdbarch) == 32)
236+ return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */
237+ else
238+ return tdesc_amd64_avx_mpx_linux;
239 case X86_XSTATE_AVX_MASK:
240 if (gdbarch_ptr_bit (gdbarch) == 32)
241 return tdesc_x32_avx_linux;
242@@ -2134,6 +2140,7 @@ _initialize_amd64_linux_tdep (void)
243 initialize_tdesc_amd64_linux ();
244 initialize_tdesc_amd64_avx_linux ();
245 initialize_tdesc_amd64_mpx_linux ();
246+ initialize_tdesc_amd64_avx_mpx_linux ();
247 initialize_tdesc_amd64_avx512_linux ();
248
249 initialize_tdesc_x32_linux ();
250Index: gdb-7.9.1/gdb/amd64-linux-tdep.h
251===================================================================
252--- gdb-7.9.1.orig/gdb/amd64-linux-tdep.h
253+++ gdb-7.9.1/gdb/amd64-linux-tdep.h
254@@ -35,6 +35,7 @@
255 extern struct target_desc *tdesc_amd64_linux;
256 extern struct target_desc *tdesc_amd64_avx_linux;
257 extern struct target_desc *tdesc_amd64_mpx_linux;
258+extern struct target_desc *tdesc_amd64_avx_mpx_linux;
259 extern struct target_desc *tdesc_amd64_avx512_linux;
260
261 extern struct target_desc *tdesc_x32_linux;
262Index: gdb-7.9.1/gdb/amd64-tdep.c
263===================================================================
264--- gdb-7.9.1.orig/gdb/amd64-tdep.c
265+++ gdb-7.9.1/gdb/amd64-tdep.c
266@@ -43,6 +43,7 @@
267 #include "features/i386/amd64.c"
268 #include "features/i386/amd64-avx.c"
269 #include "features/i386/amd64-mpx.c"
270+#include "features/i386/amd64-avx-mpx.c"
271 #include "features/i386/amd64-avx512.c"
272
273 #include "features/i386/x32.c"
274@@ -3119,6 +3120,7 @@ _initialize_amd64_tdep (void)
275 initialize_tdesc_amd64 ();
276 initialize_tdesc_amd64_avx ();
277 initialize_tdesc_amd64_mpx ();
278+ initialize_tdesc_amd64_avx_mpx ();
279 initialize_tdesc_amd64_avx512 ();
280
281 initialize_tdesc_x32 ();
282Index: gdb-7.9.1/gdb/common/x86-xstate.h
283===================================================================
284--- gdb-7.9.1.orig/gdb/common/x86-xstate.h
285+++ gdb-7.9.1/gdb/common/x86-xstate.h
286@@ -39,9 +39,10 @@
287 #define X86_XSTATE_X87_MASK X86_XSTATE_X87
288 #define X86_XSTATE_SSE_MASK (X86_XSTATE_X87 | X86_XSTATE_SSE)
289 #define X86_XSTATE_AVX_MASK (X86_XSTATE_SSE_MASK | X86_XSTATE_AVX)
290-#define X86_XSTATE_MPX_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_MPX)
291+#define X86_XSTATE_MPX_MASK (X86_XSTATE_SSE_MASK | X86_XSTATE_MPX)
292+#define X86_XSTATE_AVX_MPX_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_MPX)
293 #define X86_XSTATE_AVX512_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_AVX512)
294-#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_MPX_MASK | X86_XSTATE_AVX512)
295+#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_AVX_MPX_MASK | X86_XSTATE_AVX512)
296
297 #define X86_XSTATE_ALL_MASK (X86_XSTATE_MPX_AVX512_MASK)
298
299Index: gdb-7.9.1/gdb/features/Makefile
300===================================================================
301--- gdb-7.9.1.orig/gdb/features/Makefile
302+++ gdb-7.9.1/gdb/features/Makefile
303@@ -50,9 +50,11 @@ WHICH = aarch64 \
304 i386/amd64 i386/amd64-linux \
305 i386/i386-avx i386/i386-avx-linux \
306 i386/i386-mpx i386/i386-mpx-linux \
307+ i386/i386-avx-mpx i386/i386-avx-mpx-linux \
308 i386/i386-avx512 i386/i386-avx512-linux \
309 i386/amd64-avx i386/amd64-avx-linux \
310 i386/amd64-mpx i386/amd64-mpx-linux \
311+ i386/amd64-avx-mpx i386/amd64-avx-mpx-linux \
312 i386/amd64-avx512 i386/amd64-avx512-linux \
313 i386/x32 i386/x32-linux \
314 i386/x32-avx i386/x32-avx-linux \
315@@ -82,7 +84,9 @@ i386/amd64-linux-expedite = rbp,rsp,rip
316 i386/i386-avx-expedite = ebp,esp,eip
317 i386/i386-avx-linux-expedite = ebp,esp,eip
318 i386/i386-mpx-expedite = ebp,esp,eip
319+i386/i386-avx-mpx-expedite = ebp,esp,eip
320 i386/i386-mpx-linux-expedite = ebp,esp,eip
321+i386/i386-avx-mpx-linux-expedite = ebp,esp,eip
322 i386/i386-avx512-expedite = ebp,esp,eip
323 i386/i386-avx512-linux-expedite = ebp,esp,eip
324 i386/i386-mmx-expedite = ebp,esp,eip
325@@ -90,7 +94,9 @@ i386/i386-mmx-linux-expedite = ebp,esp,e
326 i386/amd64-avx-expedite = rbp,rsp,rip
327 i386/amd64-avx-linux-expedite = rbp,rsp,rip
328 i386/amd64-mpx-expedite = rbp,rsp,rip
329+i386/amd64-avx-mpx-expedite = rbp,rsp,rip
330 i386/amd64-mpx-linux-expedite = rbp,rsp,rip
331+i386/amd64-avx-mpx-linux-expedite = rbp,rsp,rip
332 i386/amd64-avx512-expedite = rbp,rsp,rip
333 i386/amd64-avx512-linux-expedite = rbp,rsp,rip
334 i386/x32-expedite = rbp,rsp,rip
335@@ -151,6 +157,8 @@ XMLTOC = \
336 i386/amd64-linux.xml \
337 i386/amd64-mpx-linux.xml \
338 i386/amd64-mpx.xml \
339+ i386/amd64-avx-mpx-linux.xml \
340+ i386/amd64-avx-mpx.xml \
341 i386/amd64.xml \
342 i386/i386-avx-linux.xml \
343 i386/i386-avx.xml \
344@@ -161,6 +169,8 @@ XMLTOC = \
345 i386/i386-mmx.xml \
346 i386/i386-mpx-linux.xml \
347 i386/i386-mpx.xml \
348+ i386/i386-avx-mpx-linux.xml \
349+ i386/i386-avx-mpx.xml \
350 i386/i386.xml \
351 i386/x32-avx-linux.xml \
352 i386/x32-avx.xml \
353@@ -266,6 +276,10 @@ $(outdir)/i386/i386-mpx.dat: i386/32bit-
354 i386/32bit-mpx.xml
355 $(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
356 i386/32bit-linux.xml i386/32bit-mpx.xml
357+$(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml \
358+ i386/32bit-linux.xml i386/32bit-mpx.xml
359+$(outdir)/i386/i386-avx-mpx-linux.dat: i386/32bit-core.xml \
360+ i386/32bit-linux.xml i386/32bit-mpx.xml
361 $(outdir)/i386/i386-avx512.dat: i386/32bit-core.xml i386/32bit-avx.xml \
362 i386/32bit-mpx.xml i386/32bit-avx512.xml
363 $(outdir)/i386/i386-avx512-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
364@@ -277,8 +291,12 @@ $(outdir)/i386/amd64-avx-linux.dat: i386
365 i386/64bit-linux.xml
366 $(outdir)/i386/amd64-mpx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
367 i386/64bit-linux.xml i386/64bit-mpx.xml
368+$(outdir)/i386/amd64-avx-mpx-linux.dat: i386/64bit-core.xml \
369+ i386/64bit-linux.xml i386/64bit-mpx.xml
370 $(outdir)/i386/amd64-mpx.dat: i386/64bit-core.xml i386/64bit-avx.xml \
371 i386/64bit-mpx.xml
372+$(outdir)/i386/amd64-avx-mpx.dat: i386/64bit-core.xml \
373+ i386/64bit-mpx.xml
374 $(outdir)/i386/amd64-avx512.dat: i386/64bit-core.xml i386/64bit-avx.xml \
375 i386/64bit-mpx.xml i386/64bit-avx512.xml
376 $(outdir)/i386/amd64-avx512-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
377Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.c
378===================================================================
379--- /dev/null
380+++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.c
381@@ -0,0 +1,211 @@
382+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
383+ Original: amd64-avx-mpx-linux.xml */
384+
385+#include "defs.h"
386+#include "osabi.h"
387+#include "target-descriptions.h"
388+
389+struct target_desc *tdesc_amd64_avx_mpx_linux;
390+static void
391+initialize_tdesc_amd64_avx_mpx_linux (void)
392+{
393+ struct target_desc *result = allocate_target_description ();
394+ struct tdesc_feature *feature;
395+ struct tdesc_type *field_type;
396+ struct tdesc_type *type;
397+
398+ set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
399+
400+ set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
401+
402+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
403+ field_type = tdesc_create_flags (feature, "i386_eflags", 4);
404+ tdesc_add_flag (field_type, 0, "CF");
405+ tdesc_add_flag (field_type, 1, "");
406+ tdesc_add_flag (field_type, 2, "PF");
407+ tdesc_add_flag (field_type, 4, "AF");
408+ tdesc_add_flag (field_type, 6, "ZF");
409+ tdesc_add_flag (field_type, 7, "SF");
410+ tdesc_add_flag (field_type, 8, "TF");
411+ tdesc_add_flag (field_type, 9, "IF");
412+ tdesc_add_flag (field_type, 10, "DF");
413+ tdesc_add_flag (field_type, 11, "OF");
414+ tdesc_add_flag (field_type, 14, "NT");
415+ tdesc_add_flag (field_type, 16, "RF");
416+ tdesc_add_flag (field_type, 17, "VM");
417+ tdesc_add_flag (field_type, 18, "AC");
418+ tdesc_add_flag (field_type, 19, "VIF");
419+ tdesc_add_flag (field_type, 20, "VIP");
420+ tdesc_add_flag (field_type, 21, "ID");
421+
422+ tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
423+ tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
424+ tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
425+ tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
426+ tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
427+ tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
428+ tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
429+ tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
430+ tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
431+ tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
432+ tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
433+ tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
434+ tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
435+ tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
436+ tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
437+ tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
438+ tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
439+ tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
440+ tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
441+ tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
442+ tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
443+ tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
444+ tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
445+ tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
446+ tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
447+ tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
448+ tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
449+ tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
450+ tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
451+ tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
452+ tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
453+ tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
454+ tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
455+ tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
456+ tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
457+ tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
458+ tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
459+ tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
460+ tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
461+ tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
462+
463+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
464+ field_type = tdesc_named_type (feature, "ieee_single");
465+ tdesc_create_vector (feature, "v4f", field_type, 4);
466+
467+ field_type = tdesc_named_type (feature, "ieee_double");
468+ tdesc_create_vector (feature, "v2d", field_type, 2);
469+
470+ field_type = tdesc_named_type (feature, "int8");
471+ tdesc_create_vector (feature, "v16i8", field_type, 16);
472+
473+ field_type = tdesc_named_type (feature, "int16");
474+ tdesc_create_vector (feature, "v8i16", field_type, 8);
475+
476+ field_type = tdesc_named_type (feature, "int32");
477+ tdesc_create_vector (feature, "v4i32", field_type, 4);
478+
479+ field_type = tdesc_named_type (feature, "int64");
480+ tdesc_create_vector (feature, "v2i64", field_type, 2);
481+
482+ type = tdesc_create_union (feature, "vec128");
483+ field_type = tdesc_named_type (feature, "v4f");
484+ tdesc_add_field (type, "v4_float", field_type);
485+ field_type = tdesc_named_type (feature, "v2d");
486+ tdesc_add_field (type, "v2_double", field_type);
487+ field_type = tdesc_named_type (feature, "v16i8");
488+ tdesc_add_field (type, "v16_int8", field_type);
489+ field_type = tdesc_named_type (feature, "v8i16");
490+ tdesc_add_field (type, "v8_int16", field_type);
491+ field_type = tdesc_named_type (feature, "v4i32");
492+ tdesc_add_field (type, "v4_int32", field_type);
493+ field_type = tdesc_named_type (feature, "v2i64");
494+ tdesc_add_field (type, "v2_int64", field_type);
495+ field_type = tdesc_named_type (feature, "uint128");
496+ tdesc_add_field (type, "uint128", field_type);
497+
498+ field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
499+ tdesc_add_flag (field_type, 0, "IE");
500+ tdesc_add_flag (field_type, 1, "DE");
501+ tdesc_add_flag (field_type, 2, "ZE");
502+ tdesc_add_flag (field_type, 3, "OE");
503+ tdesc_add_flag (field_type, 4, "UE");
504+ tdesc_add_flag (field_type, 5, "PE");
505+ tdesc_add_flag (field_type, 6, "DAZ");
506+ tdesc_add_flag (field_type, 7, "IM");
507+ tdesc_add_flag (field_type, 8, "DM");
508+ tdesc_add_flag (field_type, 9, "ZM");
509+ tdesc_add_flag (field_type, 10, "OM");
510+ tdesc_add_flag (field_type, 11, "UM");
511+ tdesc_add_flag (field_type, 12, "PM");
512+ tdesc_add_flag (field_type, 15, "FZ");
513+
514+ tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
515+ tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
516+ tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
517+ tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
518+ tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
519+ tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
520+ tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
521+ tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
522+ tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
523+ tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
524+ tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
525+ tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
526+ tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
527+ tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
528+ tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
529+ tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
530+ tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
531+
532+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
533+ tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
534+
535+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
536+ tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
537+ tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
538+ tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
539+ tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
540+ tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
541+ tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
542+ tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
543+ tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
544+ tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
545+ tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
546+ tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
547+ tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
548+ tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
549+ tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
550+ tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
551+ tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
552+
553+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
554+ type = tdesc_create_struct (feature, "br128");
555+ field_type = tdesc_named_type (feature, "uint64");
556+ tdesc_add_field (type, "lbound", field_type);
557+ field_type = tdesc_named_type (feature, "uint64");
558+ tdesc_add_field (type, "ubound_raw", field_type);
559+
560+ type = tdesc_create_struct (feature, "_bndstatus");
561+ tdesc_set_struct_size (type, 8);
562+ tdesc_add_bitfield (type, "bde", 2, 63);
563+ tdesc_add_bitfield (type, "error", 0, 1);
564+
565+ type = tdesc_create_union (feature, "status");
566+ field_type = tdesc_named_type (feature, "data_ptr");
567+ tdesc_add_field (type, "raw", field_type);
568+ field_type = tdesc_named_type (feature, "_bndstatus");
569+ tdesc_add_field (type, "status", field_type);
570+
571+ type = tdesc_create_struct (feature, "_bndcfgu");
572+ tdesc_set_struct_size (type, 8);
573+ tdesc_add_bitfield (type, "base", 12, 63);
574+ tdesc_add_bitfield (type, "reserved", 2, 11);
575+ tdesc_add_bitfield (type, "preserved", 1, 1);
576+ tdesc_add_bitfield (type, "enabled", 0, 0);
577+
578+ type = tdesc_create_union (feature, "cfgu");
579+ field_type = tdesc_named_type (feature, "data_ptr");
580+ tdesc_add_field (type, "raw", field_type);
581+ field_type = tdesc_named_type (feature, "_bndcfgu");
582+ tdesc_add_field (type, "config", field_type);
583+
584+ tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
585+ tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
586+ tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
587+ tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
588+ tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
589+ tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
590+
591+ tdesc_amd64_avx_mpx_linux = result;
592+}
593Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.xml
594===================================================================
595--- /dev/null
596+++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx-linux.xml
597@@ -0,0 +1,19 @@
598+<?xml version="1.0"?>
599+<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
600+
601+ Copying and distribution of this file, with or without modification,
602+ are permitted in any medium without royalty provided the copyright
603+ notice and this notice are preserved. -->
604+
605+<!-- AMD64 with AVX and MPX - Includes Linux-only special "register". -->
606+
607+<!DOCTYPE target SYSTEM "gdb-target.dtd">
608+<target>
609+ <architecture>i386:x86-64</architecture>
610+ <osabi>GNU/Linux</osabi>
611+ <xi:include href="64bit-core.xml"/>
612+ <xi:include href="64bit-sse.xml"/>
613+ <xi:include href="64bit-linux.xml"/>
614+ <xi:include href="64bit-avx.xml"/>
615+ <xi:include href="64bit-mpx.xml"/>
616+</target>
617Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.c
618===================================================================
619--- /dev/null
620+++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.c
621@@ -0,0 +1,206 @@
622+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
623+ Original: amd64-avx-mpx.xml */
624+
625+#include "defs.h"
626+#include "osabi.h"
627+#include "target-descriptions.h"
628+
629+struct target_desc *tdesc_amd64_avx_mpx;
630+static void
631+initialize_tdesc_amd64_avx_mpx (void)
632+{
633+ struct target_desc *result = allocate_target_description ();
634+ struct tdesc_feature *feature;
635+ struct tdesc_type *field_type;
636+ struct tdesc_type *type;
637+
638+ set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
639+
640+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
641+ field_type = tdesc_create_flags (feature, "i386_eflags", 4);
642+ tdesc_add_flag (field_type, 0, "CF");
643+ tdesc_add_flag (field_type, 1, "");
644+ tdesc_add_flag (field_type, 2, "PF");
645+ tdesc_add_flag (field_type, 4, "AF");
646+ tdesc_add_flag (field_type, 6, "ZF");
647+ tdesc_add_flag (field_type, 7, "SF");
648+ tdesc_add_flag (field_type, 8, "TF");
649+ tdesc_add_flag (field_type, 9, "IF");
650+ tdesc_add_flag (field_type, 10, "DF");
651+ tdesc_add_flag (field_type, 11, "OF");
652+ tdesc_add_flag (field_type, 14, "NT");
653+ tdesc_add_flag (field_type, 16, "RF");
654+ tdesc_add_flag (field_type, 17, "VM");
655+ tdesc_add_flag (field_type, 18, "AC");
656+ tdesc_add_flag (field_type, 19, "VIF");
657+ tdesc_add_flag (field_type, 20, "VIP");
658+ tdesc_add_flag (field_type, 21, "ID");
659+
660+ tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
661+ tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
662+ tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
663+ tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
664+ tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
665+ tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
666+ tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
667+ tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
668+ tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
669+ tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
670+ tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
671+ tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
672+ tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
673+ tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
674+ tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
675+ tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
676+ tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
677+ tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
678+ tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
679+ tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
680+ tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
681+ tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
682+ tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
683+ tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
684+ tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
685+ tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
686+ tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
687+ tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
688+ tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
689+ tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
690+ tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
691+ tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
692+ tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
693+ tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
694+ tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
695+ tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
696+ tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
697+ tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
698+ tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
699+ tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
700+
701+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
702+ field_type = tdesc_named_type (feature, "ieee_single");
703+ tdesc_create_vector (feature, "v4f", field_type, 4);
704+
705+ field_type = tdesc_named_type (feature, "ieee_double");
706+ tdesc_create_vector (feature, "v2d", field_type, 2);
707+
708+ field_type = tdesc_named_type (feature, "int8");
709+ tdesc_create_vector (feature, "v16i8", field_type, 16);
710+
711+ field_type = tdesc_named_type (feature, "int16");
712+ tdesc_create_vector (feature, "v8i16", field_type, 8);
713+
714+ field_type = tdesc_named_type (feature, "int32");
715+ tdesc_create_vector (feature, "v4i32", field_type, 4);
716+
717+ field_type = tdesc_named_type (feature, "int64");
718+ tdesc_create_vector (feature, "v2i64", field_type, 2);
719+
720+ type = tdesc_create_union (feature, "vec128");
721+ field_type = tdesc_named_type (feature, "v4f");
722+ tdesc_add_field (type, "v4_float", field_type);
723+ field_type = tdesc_named_type (feature, "v2d");
724+ tdesc_add_field (type, "v2_double", field_type);
725+ field_type = tdesc_named_type (feature, "v16i8");
726+ tdesc_add_field (type, "v16_int8", field_type);
727+ field_type = tdesc_named_type (feature, "v8i16");
728+ tdesc_add_field (type, "v8_int16", field_type);
729+ field_type = tdesc_named_type (feature, "v4i32");
730+ tdesc_add_field (type, "v4_int32", field_type);
731+ field_type = tdesc_named_type (feature, "v2i64");
732+ tdesc_add_field (type, "v2_int64", field_type);
733+ field_type = tdesc_named_type (feature, "uint128");
734+ tdesc_add_field (type, "uint128", field_type);
735+
736+ field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
737+ tdesc_add_flag (field_type, 0, "IE");
738+ tdesc_add_flag (field_type, 1, "DE");
739+ tdesc_add_flag (field_type, 2, "ZE");
740+ tdesc_add_flag (field_type, 3, "OE");
741+ tdesc_add_flag (field_type, 4, "UE");
742+ tdesc_add_flag (field_type, 5, "PE");
743+ tdesc_add_flag (field_type, 6, "DAZ");
744+ tdesc_add_flag (field_type, 7, "IM");
745+ tdesc_add_flag (field_type, 8, "DM");
746+ tdesc_add_flag (field_type, 9, "ZM");
747+ tdesc_add_flag (field_type, 10, "OM");
748+ tdesc_add_flag (field_type, 11, "UM");
749+ tdesc_add_flag (field_type, 12, "PM");
750+ tdesc_add_flag (field_type, 15, "FZ");
751+
752+ tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
753+ tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
754+ tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
755+ tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
756+ tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
757+ tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
758+ tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
759+ tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
760+ tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
761+ tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
762+ tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
763+ tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
764+ tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
765+ tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
766+ tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
767+ tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
768+ tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
769+
770+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
771+ tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128");
772+ tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128");
773+ tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128");
774+ tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128");
775+ tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128");
776+ tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128");
777+ tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128");
778+ tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128");
779+ tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128");
780+ tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128");
781+ tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128");
782+ tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128");
783+ tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128");
784+ tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128");
785+ tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128");
786+ tdesc_create_reg (feature, "ymm15h", 72, 1, NULL, 128, "uint128");
787+
788+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
789+ type = tdesc_create_struct (feature, "br128");
790+ field_type = tdesc_named_type (feature, "uint64");
791+ tdesc_add_field (type, "lbound", field_type);
792+ field_type = tdesc_named_type (feature, "uint64");
793+ tdesc_add_field (type, "ubound_raw", field_type);
794+
795+ type = tdesc_create_struct (feature, "_bndstatus");
796+ tdesc_set_struct_size (type, 8);
797+ tdesc_add_bitfield (type, "bde", 2, 63);
798+ tdesc_add_bitfield (type, "error", 0, 1);
799+
800+ type = tdesc_create_union (feature, "status");
801+ field_type = tdesc_named_type (feature, "data_ptr");
802+ tdesc_add_field (type, "raw", field_type);
803+ field_type = tdesc_named_type (feature, "_bndstatus");
804+ tdesc_add_field (type, "status", field_type);
805+
806+ type = tdesc_create_struct (feature, "_bndcfgu");
807+ tdesc_set_struct_size (type, 8);
808+ tdesc_add_bitfield (type, "base", 12, 63);
809+ tdesc_add_bitfield (type, "reserved", 2, 11);
810+ tdesc_add_bitfield (type, "preserved", 1, 1);
811+ tdesc_add_bitfield (type, "enabled", 0, 0);
812+
813+ type = tdesc_create_union (feature, "cfgu");
814+ field_type = tdesc_named_type (feature, "data_ptr");
815+ tdesc_add_field (type, "raw", field_type);
816+ field_type = tdesc_named_type (feature, "_bndcfgu");
817+ tdesc_add_field (type, "config", field_type);
818+
819+ tdesc_create_reg (feature, "bnd0raw", 73, 1, NULL, 128, "br128");
820+ tdesc_create_reg (feature, "bnd1raw", 74, 1, NULL, 128, "br128");
821+ tdesc_create_reg (feature, "bnd2raw", 75, 1, NULL, 128, "br128");
822+ tdesc_create_reg (feature, "bnd3raw", 76, 1, NULL, 128, "br128");
823+ tdesc_create_reg (feature, "bndcfgu", 77, 1, NULL, 64, "cfgu");
824+ tdesc_create_reg (feature, "bndstatus", 78, 1, NULL, 64, "status");
825+
826+ tdesc_amd64_avx_mpx = result;
827+}
828Index: gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.xml
829===================================================================
830--- /dev/null
831+++ gdb-7.9.1/gdb/features/i386/amd64-avx-mpx.xml
832@@ -0,0 +1,17 @@
833+<?xml version="1.0"?>
834+<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
835+
836+ Copying and distribution of this file, with or without modification,
837+ are permitted in any medium without royalty provided the copyright
838+ notice and this notice are preserved. -->
839+
840+<!-- AMD64 with AVX and MPX -->
841+
842+<!DOCTYPE target SYSTEM "gdb-target.dtd">
843+<target>
844+ <architecture>i386:x86-64</architecture>
845+ <xi:include href="64bit-core.xml"/>
846+ <xi:include href="64bit-sse.xml"/>
847+ <xi:include href="64bit-avx.xml"/>
848+ <xi:include href="64bit-mpx.xml"/>
849+</target>
850Index: gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.c
851===================================================================
852--- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx-linux.c
853+++ gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.c
854@@ -151,24 +151,6 @@ initialize_tdesc_amd64_mpx_linux (void)
855 feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
856 tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
857
858- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
859- tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
860- tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
861- tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
862- tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
863- tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
864- tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
865- tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
866- tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
867- tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
868- tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
869- tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
870- tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
871- tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
872- tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
873- tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
874- tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
875-
876 feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
877 type = tdesc_create_struct (feature, "br128");
878 field_type = tdesc_named_type (feature, "uint64");
879@@ -200,12 +182,12 @@ initialize_tdesc_amd64_mpx_linux (void)
880 field_type = tdesc_named_type (feature, "_bndcfgu");
881 tdesc_add_field (type, "config", field_type);
882
883- tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
884- tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
885- tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
886- tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
887- tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
888- tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
889+ tdesc_create_reg (feature, "bnd0raw", 58, 1, NULL, 128, "br128");
890+ tdesc_create_reg (feature, "bnd1raw", 59, 1, NULL, 128, "br128");
891+ tdesc_create_reg (feature, "bnd2raw", 60, 1, NULL, 128, "br128");
892+ tdesc_create_reg (feature, "bnd3raw", 61, 1, NULL, 128, "br128");
893+ tdesc_create_reg (feature, "bndcfgu", 62, 1, NULL, 64, "cfgu");
894+ tdesc_create_reg (feature, "bndstatus", 63, 1, NULL, 64, "status");
895
896 tdesc_amd64_mpx_linux = result;
897 }
898Index: gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.xml
899===================================================================
900--- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx-linux.xml
901+++ gdb-7.9.1/gdb/features/i386/amd64-mpx-linux.xml
902@@ -14,6 +14,5 @@
903 <xi:include href="64bit-core.xml"/>
904 <xi:include href="64bit-sse.xml"/>
905 <xi:include href="64bit-linux.xml"/>
906- <xi:include href="64bit-avx.xml"/>
907 <xi:include href="64bit-mpx.xml"/>
908 </target>
909Index: gdb-7.9.1/gdb/features/i386/amd64-mpx.c
910===================================================================
911--- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx.c
912+++ gdb-7.9.1/gdb/features/i386/amd64-mpx.c
913@@ -146,24 +146,6 @@ initialize_tdesc_amd64_mpx (void)
914 tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
915 tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
916
917- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
918- tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128");
919- tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128");
920- tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128");
921- tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128");
922- tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128");
923- tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128");
924- tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128");
925- tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128");
926- tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128");
927- tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128");
928- tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128");
929- tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128");
930- tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128");
931- tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128");
932- tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128");
933- tdesc_create_reg (feature, "ymm15h", 72, 1, NULL, 128, "uint128");
934-
935 feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
936 type = tdesc_create_struct (feature, "br128");
937 field_type = tdesc_named_type (feature, "uint64");
938@@ -195,12 +177,12 @@ initialize_tdesc_amd64_mpx (void)
939 field_type = tdesc_named_type (feature, "_bndcfgu");
940 tdesc_add_field (type, "config", field_type);
941
942- tdesc_create_reg (feature, "bnd0raw", 73, 1, NULL, 128, "br128");
943- tdesc_create_reg (feature, "bnd1raw", 74, 1, NULL, 128, "br128");
944- tdesc_create_reg (feature, "bnd2raw", 75, 1, NULL, 128, "br128");
945- tdesc_create_reg (feature, "bnd3raw", 76, 1, NULL, 128, "br128");
946- tdesc_create_reg (feature, "bndcfgu", 77, 1, NULL, 64, "cfgu");
947- tdesc_create_reg (feature, "bndstatus", 78, 1, NULL, 64, "status");
948+ tdesc_create_reg (feature, "bnd0raw", 57, 1, NULL, 128, "br128");
949+ tdesc_create_reg (feature, "bnd1raw", 58, 1, NULL, 128, "br128");
950+ tdesc_create_reg (feature, "bnd2raw", 59, 1, NULL, 128, "br128");
951+ tdesc_create_reg (feature, "bnd3raw", 60, 1, NULL, 128, "br128");
952+ tdesc_create_reg (feature, "bndcfgu", 61, 1, NULL, 64, "cfgu");
953+ tdesc_create_reg (feature, "bndstatus", 62, 1, NULL, 64, "status");
954
955 tdesc_amd64_mpx = result;
956 }
957Index: gdb-7.9.1/gdb/features/i386/amd64-mpx.xml
958===================================================================
959--- gdb-7.9.1.orig/gdb/features/i386/amd64-mpx.xml
960+++ gdb-7.9.1/gdb/features/i386/amd64-mpx.xml
961@@ -12,6 +12,5 @@
962 <architecture>i386:x86-64</architecture>
963 <xi:include href="64bit-core.xml"/>
964 <xi:include href="64bit-sse.xml"/>
965- <xi:include href="64bit-avx.xml"/>
966 <xi:include href="64bit-mpx.xml"/>
967 </target>
968Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.c
969===================================================================
970--- /dev/null
971+++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.c
972@@ -0,0 +1,187 @@
973+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
974+ Original: i386-avx-mpx-linux.xml */
975+
976+#include "defs.h"
977+#include "osabi.h"
978+#include "target-descriptions.h"
979+
980+struct target_desc *tdesc_i386_avx_mpx_linux;
981+static void
982+initialize_tdesc_i386_avx_mpx_linux (void)
983+{
984+ struct target_desc *result = allocate_target_description ();
985+ struct tdesc_feature *feature;
986+ struct tdesc_type *field_type;
987+ struct tdesc_type *type;
988+
989+ set_tdesc_architecture (result, bfd_scan_arch ("i386"));
990+
991+ set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
992+
993+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
994+ field_type = tdesc_create_flags (feature, "i386_eflags", 4);
995+ tdesc_add_flag (field_type, 0, "CF");
996+ tdesc_add_flag (field_type, 1, "");
997+ tdesc_add_flag (field_type, 2, "PF");
998+ tdesc_add_flag (field_type, 4, "AF");
999+ tdesc_add_flag (field_type, 6, "ZF");
1000+ tdesc_add_flag (field_type, 7, "SF");
1001+ tdesc_add_flag (field_type, 8, "TF");
1002+ tdesc_add_flag (field_type, 9, "IF");
1003+ tdesc_add_flag (field_type, 10, "DF");
1004+ tdesc_add_flag (field_type, 11, "OF");
1005+ tdesc_add_flag (field_type, 14, "NT");
1006+ tdesc_add_flag (field_type, 16, "RF");
1007+ tdesc_add_flag (field_type, 17, "VM");
1008+ tdesc_add_flag (field_type, 18, "AC");
1009+ tdesc_add_flag (field_type, 19, "VIF");
1010+ tdesc_add_flag (field_type, 20, "VIP");
1011+ tdesc_add_flag (field_type, 21, "ID");
1012+
1013+ tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
1014+ tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
1015+ tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
1016+ tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
1017+ tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
1018+ tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
1019+ tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
1020+ tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
1021+ tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
1022+ tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
1023+ tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
1024+ tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
1025+ tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
1026+ tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
1027+ tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
1028+ tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
1029+ tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
1030+ tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
1031+ tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
1032+ tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
1033+ tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
1034+ tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
1035+ tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
1036+ tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
1037+ tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
1038+ tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
1039+ tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
1040+ tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
1041+ tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
1042+ tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
1043+ tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
1044+ tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
1045+
1046+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
1047+ field_type = tdesc_named_type (feature, "ieee_single");
1048+ tdesc_create_vector (feature, "v4f", field_type, 4);
1049+
1050+ field_type = tdesc_named_type (feature, "ieee_double");
1051+ tdesc_create_vector (feature, "v2d", field_type, 2);
1052+
1053+ field_type = tdesc_named_type (feature, "int8");
1054+ tdesc_create_vector (feature, "v16i8", field_type, 16);
1055+
1056+ field_type = tdesc_named_type (feature, "int16");
1057+ tdesc_create_vector (feature, "v8i16", field_type, 8);
1058+
1059+ field_type = tdesc_named_type (feature, "int32");
1060+ tdesc_create_vector (feature, "v4i32", field_type, 4);
1061+
1062+ field_type = tdesc_named_type (feature, "int64");
1063+ tdesc_create_vector (feature, "v2i64", field_type, 2);
1064+
1065+ type = tdesc_create_union (feature, "vec128");
1066+ field_type = tdesc_named_type (feature, "v4f");
1067+ tdesc_add_field (type, "v4_float", field_type);
1068+ field_type = tdesc_named_type (feature, "v2d");
1069+ tdesc_add_field (type, "v2_double", field_type);
1070+ field_type = tdesc_named_type (feature, "v16i8");
1071+ tdesc_add_field (type, "v16_int8", field_type);
1072+ field_type = tdesc_named_type (feature, "v8i16");
1073+ tdesc_add_field (type, "v8_int16", field_type);
1074+ field_type = tdesc_named_type (feature, "v4i32");
1075+ tdesc_add_field (type, "v4_int32", field_type);
1076+ field_type = tdesc_named_type (feature, "v2i64");
1077+ tdesc_add_field (type, "v2_int64", field_type);
1078+ field_type = tdesc_named_type (feature, "uint128");
1079+ tdesc_add_field (type, "uint128", field_type);
1080+
1081+ field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
1082+ tdesc_add_flag (field_type, 0, "IE");
1083+ tdesc_add_flag (field_type, 1, "DE");
1084+ tdesc_add_flag (field_type, 2, "ZE");
1085+ tdesc_add_flag (field_type, 3, "OE");
1086+ tdesc_add_flag (field_type, 4, "UE");
1087+ tdesc_add_flag (field_type, 5, "PE");
1088+ tdesc_add_flag (field_type, 6, "DAZ");
1089+ tdesc_add_flag (field_type, 7, "IM");
1090+ tdesc_add_flag (field_type, 8, "DM");
1091+ tdesc_add_flag (field_type, 9, "ZM");
1092+ tdesc_add_flag (field_type, 10, "OM");
1093+ tdesc_add_flag (field_type, 11, "UM");
1094+ tdesc_add_flag (field_type, 12, "PM");
1095+ tdesc_add_flag (field_type, 15, "FZ");
1096+
1097+ tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
1098+ tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
1099+ tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
1100+ tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
1101+ tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
1102+ tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
1103+ tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
1104+ tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
1105+ tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
1106+
1107+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
1108+ tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
1109+
1110+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
1111+ tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
1112+ tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
1113+ tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
1114+ tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
1115+ tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
1116+ tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
1117+ tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
1118+ tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
1119+
1120+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
1121+ type = tdesc_create_struct (feature, "br128");
1122+ field_type = tdesc_named_type (feature, "uint64");
1123+ tdesc_add_field (type, "lbound", field_type);
1124+ field_type = tdesc_named_type (feature, "uint64");
1125+ tdesc_add_field (type, "ubound_raw", field_type);
1126+
1127+ type = tdesc_create_struct (feature, "_bndstatus");
1128+ tdesc_set_struct_size (type, 8);
1129+ tdesc_add_bitfield (type, "bde", 2, 31);
1130+ tdesc_add_bitfield (type, "error", 0, 1);
1131+
1132+ type = tdesc_create_union (feature, "status");
1133+ field_type = tdesc_named_type (feature, "data_ptr");
1134+ tdesc_add_field (type, "raw", field_type);
1135+ field_type = tdesc_named_type (feature, "_bndstatus");
1136+ tdesc_add_field (type, "status", field_type);
1137+
1138+ type = tdesc_create_struct (feature, "_bndcfgu");
1139+ tdesc_set_struct_size (type, 8);
1140+ tdesc_add_bitfield (type, "base", 12, 31);
1141+ tdesc_add_bitfield (type, "reserved", 2, 11);
1142+ tdesc_add_bitfield (type, "preserved", 1, 1);
1143+ tdesc_add_bitfield (type, "enabled", 0, 1);
1144+
1145+ type = tdesc_create_union (feature, "cfgu");
1146+ field_type = tdesc_named_type (feature, "data_ptr");
1147+ tdesc_add_field (type, "raw", field_type);
1148+ field_type = tdesc_named_type (feature, "_bndcfgu");
1149+ tdesc_add_field (type, "config", field_type);
1150+
1151+ tdesc_create_reg (feature, "bnd0raw", 50, 1, NULL, 128, "br128");
1152+ tdesc_create_reg (feature, "bnd1raw", 51, 1, NULL, 128, "br128");
1153+ tdesc_create_reg (feature, "bnd2raw", 52, 1, NULL, 128, "br128");
1154+ tdesc_create_reg (feature, "bnd3raw", 53, 1, NULL, 128, "br128");
1155+ tdesc_create_reg (feature, "bndcfgu", 54, 1, NULL, 64, "cfgu");
1156+ tdesc_create_reg (feature, "bndstatus", 55, 1, NULL, 64, "status");
1157+
1158+ tdesc_i386_avx_mpx_linux = result;
1159+}
1160Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.xml
1161===================================================================
1162--- /dev/null
1163+++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx-linux.xml
1164@@ -0,0 +1,19 @@
1165+<?xml version="1.0"?>
1166+<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
1167+
1168+ Copying and distribution of this file, with or without modification,
1169+ are permitted in any medium without royalty provided the copyright
1170+ notice and this notice are preserved. -->
1171+
1172+<!-- I386 with AVX and MPX- Includes Linux-only special "register". -->
1173+
1174+<!DOCTYPE target SYSTEM "gdb-target.dtd">
1175+<target>
1176+ <architecture>i386</architecture>
1177+ <osabi>GNU/Linux</osabi>
1178+ <xi:include href="32bit-core.xml"/>
1179+ <xi:include href="32bit-sse.xml"/>
1180+ <xi:include href="32bit-linux.xml"/>
1181+ <xi:include href="32bit-avx.xml"/>
1182+ <xi:include href="32bit-mpx.xml"/>
1183+</target>
1184Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx.c
1185===================================================================
1186--- /dev/null
1187+++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx.c
1188@@ -0,0 +1,182 @@
1189+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
1190+ Original: i386-avx-mpx.xml */
1191+
1192+#include "defs.h"
1193+#include "osabi.h"
1194+#include "target-descriptions.h"
1195+
1196+struct target_desc *tdesc_i386_avx_mpx;
1197+static void
1198+initialize_tdesc_i386_avx_mpx (void)
1199+{
1200+ struct target_desc *result = allocate_target_description ();
1201+ struct tdesc_feature *feature;
1202+ struct tdesc_type *field_type;
1203+ struct tdesc_type *type;
1204+
1205+ set_tdesc_architecture (result, bfd_scan_arch ("i386"));
1206+
1207+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
1208+ field_type = tdesc_create_flags (feature, "i386_eflags", 4);
1209+ tdesc_add_flag (field_type, 0, "CF");
1210+ tdesc_add_flag (field_type, 1, "");
1211+ tdesc_add_flag (field_type, 2, "PF");
1212+ tdesc_add_flag (field_type, 4, "AF");
1213+ tdesc_add_flag (field_type, 6, "ZF");
1214+ tdesc_add_flag (field_type, 7, "SF");
1215+ tdesc_add_flag (field_type, 8, "TF");
1216+ tdesc_add_flag (field_type, 9, "IF");
1217+ tdesc_add_flag (field_type, 10, "DF");
1218+ tdesc_add_flag (field_type, 11, "OF");
1219+ tdesc_add_flag (field_type, 14, "NT");
1220+ tdesc_add_flag (field_type, 16, "RF");
1221+ tdesc_add_flag (field_type, 17, "VM");
1222+ tdesc_add_flag (field_type, 18, "AC");
1223+ tdesc_add_flag (field_type, 19, "VIF");
1224+ tdesc_add_flag (field_type, 20, "VIP");
1225+ tdesc_add_flag (field_type, 21, "ID");
1226+
1227+ tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
1228+ tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
1229+ tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
1230+ tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
1231+ tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
1232+ tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
1233+ tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
1234+ tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
1235+ tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
1236+ tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
1237+ tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
1238+ tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
1239+ tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
1240+ tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
1241+ tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
1242+ tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
1243+ tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
1244+ tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
1245+ tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
1246+ tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
1247+ tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
1248+ tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
1249+ tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
1250+ tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
1251+ tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
1252+ tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
1253+ tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
1254+ tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
1255+ tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
1256+ tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
1257+ tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
1258+ tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
1259+
1260+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
1261+ field_type = tdesc_named_type (feature, "ieee_single");
1262+ tdesc_create_vector (feature, "v4f", field_type, 4);
1263+
1264+ field_type = tdesc_named_type (feature, "ieee_double");
1265+ tdesc_create_vector (feature, "v2d", field_type, 2);
1266+
1267+ field_type = tdesc_named_type (feature, "int8");
1268+ tdesc_create_vector (feature, "v16i8", field_type, 16);
1269+
1270+ field_type = tdesc_named_type (feature, "int16");
1271+ tdesc_create_vector (feature, "v8i16", field_type, 8);
1272+
1273+ field_type = tdesc_named_type (feature, "int32");
1274+ tdesc_create_vector (feature, "v4i32", field_type, 4);
1275+
1276+ field_type = tdesc_named_type (feature, "int64");
1277+ tdesc_create_vector (feature, "v2i64", field_type, 2);
1278+
1279+ type = tdesc_create_union (feature, "vec128");
1280+ field_type = tdesc_named_type (feature, "v4f");
1281+ tdesc_add_field (type, "v4_float", field_type);
1282+ field_type = tdesc_named_type (feature, "v2d");
1283+ tdesc_add_field (type, "v2_double", field_type);
1284+ field_type = tdesc_named_type (feature, "v16i8");
1285+ tdesc_add_field (type, "v16_int8", field_type);
1286+ field_type = tdesc_named_type (feature, "v8i16");
1287+ tdesc_add_field (type, "v8_int16", field_type);
1288+ field_type = tdesc_named_type (feature, "v4i32");
1289+ tdesc_add_field (type, "v4_int32", field_type);
1290+ field_type = tdesc_named_type (feature, "v2i64");
1291+ tdesc_add_field (type, "v2_int64", field_type);
1292+ field_type = tdesc_named_type (feature, "uint128");
1293+ tdesc_add_field (type, "uint128", field_type);
1294+
1295+ field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
1296+ tdesc_add_flag (field_type, 0, "IE");
1297+ tdesc_add_flag (field_type, 1, "DE");
1298+ tdesc_add_flag (field_type, 2, "ZE");
1299+ tdesc_add_flag (field_type, 3, "OE");
1300+ tdesc_add_flag (field_type, 4, "UE");
1301+ tdesc_add_flag (field_type, 5, "PE");
1302+ tdesc_add_flag (field_type, 6, "DAZ");
1303+ tdesc_add_flag (field_type, 7, "IM");
1304+ tdesc_add_flag (field_type, 8, "DM");
1305+ tdesc_add_flag (field_type, 9, "ZM");
1306+ tdesc_add_flag (field_type, 10, "OM");
1307+ tdesc_add_flag (field_type, 11, "UM");
1308+ tdesc_add_flag (field_type, 12, "PM");
1309+ tdesc_add_flag (field_type, 15, "FZ");
1310+
1311+ tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
1312+ tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
1313+ tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
1314+ tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
1315+ tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
1316+ tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
1317+ tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
1318+ tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
1319+ tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
1320+
1321+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
1322+ tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
1323+ tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
1324+ tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
1325+ tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
1326+ tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
1327+ tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
1328+ tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
1329+ tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
1330+
1331+ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
1332+ type = tdesc_create_struct (feature, "br128");
1333+ field_type = tdesc_named_type (feature, "uint64");
1334+ tdesc_add_field (type, "lbound", field_type);
1335+ field_type = tdesc_named_type (feature, "uint64");
1336+ tdesc_add_field (type, "ubound_raw", field_type);
1337+
1338+ type = tdesc_create_struct (feature, "_bndstatus");
1339+ tdesc_set_struct_size (type, 8);
1340+ tdesc_add_bitfield (type, "bde", 2, 31);
1341+ tdesc_add_bitfield (type, "error", 0, 1);
1342+
1343+ type = tdesc_create_union (feature, "status");
1344+ field_type = tdesc_named_type (feature, "data_ptr");
1345+ tdesc_add_field (type, "raw", field_type);
1346+ field_type = tdesc_named_type (feature, "_bndstatus");
1347+ tdesc_add_field (type, "status", field_type);
1348+
1349+ type = tdesc_create_struct (feature, "_bndcfgu");
1350+ tdesc_set_struct_size (type, 8);
1351+ tdesc_add_bitfield (type, "base", 12, 31);
1352+ tdesc_add_bitfield (type, "reserved", 2, 11);
1353+ tdesc_add_bitfield (type, "preserved", 1, 1);
1354+ tdesc_add_bitfield (type, "enabled", 0, 1);
1355+
1356+ type = tdesc_create_union (feature, "cfgu");
1357+ field_type = tdesc_named_type (feature, "data_ptr");
1358+ tdesc_add_field (type, "raw", field_type);
1359+ field_type = tdesc_named_type (feature, "_bndcfgu");
1360+ tdesc_add_field (type, "config", field_type);
1361+
1362+ tdesc_create_reg (feature, "bnd0raw", 49, 1, NULL, 128, "br128");
1363+ tdesc_create_reg (feature, "bnd1raw", 50, 1, NULL, 128, "br128");
1364+ tdesc_create_reg (feature, "bnd2raw", 51, 1, NULL, 128, "br128");
1365+ tdesc_create_reg (feature, "bnd3raw", 52, 1, NULL, 128, "br128");
1366+ tdesc_create_reg (feature, "bndcfgu", 53, 1, NULL, 64, "cfgu");
1367+ tdesc_create_reg (feature, "bndstatus", 54, 1, NULL, 64, "status");
1368+
1369+ tdesc_i386_avx_mpx = result;
1370+}
1371Index: gdb-7.9.1/gdb/features/i386/i386-avx-mpx.xml
1372===================================================================
1373--- /dev/null
1374+++ gdb-7.9.1/gdb/features/i386/i386-avx-mpx.xml
1375@@ -0,0 +1,17 @@
1376+<?xml version="1.0"?>
1377+<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
1378+
1379+ Copying and distribution of this file, with or without modification,
1380+ are permitted in any medium without royalty provided the copyright
1381+ notice and this notice are preserved. -->
1382+
1383+<!-- I386 with AVX and MPX -->
1384+
1385+<!DOCTYPE target SYSTEM "gdb-target.dtd">
1386+<target>
1387+ <architecture>i386</architecture>
1388+ <xi:include href="32bit-core.xml"/>
1389+ <xi:include href="32bit-sse.xml"/>
1390+ <xi:include href="32bit-avx.xml"/>
1391+ <xi:include href="32bit-mpx.xml"/>
1392+</target>
1393Index: gdb-7.9.1/gdb/features/i386/i386-mpx-linux.c
1394===================================================================
1395--- gdb-7.9.1.orig/gdb/features/i386/i386-mpx-linux.c
1396+++ gdb-7.9.1/gdb/features/i386/i386-mpx-linux.c
1397@@ -135,16 +135,6 @@ initialize_tdesc_i386_mpx_linux (void)
1398 feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
1399 tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
1400
1401- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
1402- tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
1403- tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
1404- tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
1405- tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
1406- tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
1407- tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
1408- tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
1409- tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
1410-
1411 feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
1412 type = tdesc_create_struct (feature, "br128");
1413 field_type = tdesc_named_type (feature, "uint64");
1414@@ -176,12 +166,12 @@ initialize_tdesc_i386_mpx_linux (void)
1415 field_type = tdesc_named_type (feature, "_bndcfgu");
1416 tdesc_add_field (type, "config", field_type);
1417
1418- tdesc_create_reg (feature, "bnd0raw", 50, 1, NULL, 128, "br128");
1419- tdesc_create_reg (feature, "bnd1raw", 51, 1, NULL, 128, "br128");
1420- tdesc_create_reg (feature, "bnd2raw", 52, 1, NULL, 128, "br128");
1421- tdesc_create_reg (feature, "bnd3raw", 53, 1, NULL, 128, "br128");
1422- tdesc_create_reg (feature, "bndcfgu", 54, 1, NULL, 64, "cfgu");
1423- tdesc_create_reg (feature, "bndstatus", 55, 1, NULL, 64, "status");
1424+ tdesc_create_reg (feature, "bnd0raw", 42, 1, NULL, 128, "br128");
1425+ tdesc_create_reg (feature, "bnd1raw", 43, 1, NULL, 128, "br128");
1426+ tdesc_create_reg (feature, "bnd2raw", 44, 1, NULL, 128, "br128");
1427+ tdesc_create_reg (feature, "bnd3raw", 45, 1, NULL, 128, "br128");
1428+ tdesc_create_reg (feature, "bndcfgu", 46, 1, NULL, 64, "cfgu");
1429+ tdesc_create_reg (feature, "bndstatus", 47, 1, NULL, 64, "status");
1430
1431 tdesc_i386_mpx_linux = result;
1432 }
1433Index: gdb-7.9.1/gdb/features/i386/i386-mpx-linux.xml
1434===================================================================
1435--- gdb-7.9.1.orig/gdb/features/i386/i386-mpx-linux.xml
1436+++ gdb-7.9.1/gdb/features/i386/i386-mpx-linux.xml
1437@@ -14,6 +14,5 @@
1438 <xi:include href="32bit-core.xml"/>
1439 <xi:include href="32bit-sse.xml"/>
1440 <xi:include href="32bit-linux.xml"/>
1441- <xi:include href="32bit-avx.xml"/>
1442 <xi:include href="32bit-mpx.xml"/>
1443 </target>
1444Index: gdb-7.9.1/gdb/features/i386/i386-mpx.c
1445===================================================================
1446--- gdb-7.9.1.orig/gdb/features/i386/i386-mpx.c
1447+++ gdb-7.9.1/gdb/features/i386/i386-mpx.c
1448@@ -130,16 +130,6 @@ initialize_tdesc_i386_mpx (void)
1449 tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
1450 tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
1451
1452- feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
1453- tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
1454- tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
1455- tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
1456- tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
1457- tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
1458- tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
1459- tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
1460- tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
1461-
1462 feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
1463 type = tdesc_create_struct (feature, "br128");
1464 field_type = tdesc_named_type (feature, "uint64");
1465@@ -171,12 +161,12 @@ initialize_tdesc_i386_mpx (void)
1466 field_type = tdesc_named_type (feature, "_bndcfgu");
1467 tdesc_add_field (type, "config", field_type);
1468
1469- tdesc_create_reg (feature, "bnd0raw", 49, 1, NULL, 128, "br128");
1470- tdesc_create_reg (feature, "bnd1raw", 50, 1, NULL, 128, "br128");
1471- tdesc_create_reg (feature, "bnd2raw", 51, 1, NULL, 128, "br128");
1472- tdesc_create_reg (feature, "bnd3raw", 52, 1, NULL, 128, "br128");
1473- tdesc_create_reg (feature, "bndcfgu", 53, 1, NULL, 64, "cfgu");
1474- tdesc_create_reg (feature, "bndstatus", 54, 1, NULL, 64, "status");
1475+ tdesc_create_reg (feature, "bnd0raw", 41, 1, NULL, 128, "br128");
1476+ tdesc_create_reg (feature, "bnd1raw", 42, 1, NULL, 128, "br128");
1477+ tdesc_create_reg (feature, "bnd2raw", 43, 1, NULL, 128, "br128");
1478+ tdesc_create_reg (feature, "bnd3raw", 44, 1, NULL, 128, "br128");
1479+ tdesc_create_reg (feature, "bndcfgu", 45, 1, NULL, 64, "cfgu");
1480+ tdesc_create_reg (feature, "bndstatus", 46, 1, NULL, 64, "status");
1481
1482 tdesc_i386_mpx = result;
1483 }
1484Index: gdb-7.9.1/gdb/features/i386/i386-mpx.xml
1485===================================================================
1486--- gdb-7.9.1.orig/gdb/features/i386/i386-mpx.xml
1487+++ gdb-7.9.1/gdb/features/i386/i386-mpx.xml
1488@@ -12,6 +12,5 @@
1489 <architecture>i386</architecture>
1490 <xi:include href="32bit-core.xml"/>
1491 <xi:include href="32bit-sse.xml"/>
1492- <xi:include href="32bit-avx.xml"/>
1493 <xi:include href="32bit-mpx.xml"/>
1494 </target>
1495Index: gdb-7.9.1/gdb/gdbserver/ChangeLog
1496===================================================================
1497--- gdb-7.9.1.orig/gdb/gdbserver/ChangeLog
1498+++ gdb-7.9.1/gdb/gdbserver/ChangeLog
1499@@ -1,3 +1,36 @@
1500+2016-04-16 Walfred Tedeschi <walfred.tedeschi@intel.com>
1501+
1502+ * Makefile.in (clean): Add removal for i386-avx-mpx.c,
1503+ i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c.
1504+ (i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c)
1505+ (amd64-avx-mpx-linux.c): New rules.
1506+ (amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule.
1507+ * configure.srv (srv_i386_regobj): Add i386-avx-mpx.o.
1508+ (srv_i386_linux_regobj): Add i386-avx-mpx-linux.o.
1509+ (srv_amd64_regobj): Add amd64-avx-mpx.o.
1510+ (srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o.
1511+ (srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml.
1512+ (srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml.
1513+ (srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml.
1514+ (srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml.
1515+ (ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o.
1516+ (ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o.
1517+ * linux-x86-low.c (x86_linux_read_description): Add case for
1518+ X86_XSTATE_AVX_MPX_MASK.
1519+ (x86_get_ipa_tdesc_idx): Add cases for avx_mpx.
1520+ (initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and
1521+ init_registers_i386_avx_mpx_linux.
1522+ * linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
1523+ (initialize_low_tracepoint): Call
1524+ init_registers_i386_avx_mpx_linux.
1525+ * linux-amd64-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
1526+ (initialize_low_tracepoint): Call
1527+ init_registers_amd64_avx_mpx_linux.
1528+ * linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value.
1529+ (init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux)
1530+ (init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New
1531+ declarations.
1532+
1533 2015-01-10 Joel Brobecker <brobecker@adacore.com>
1534
1535 * i387-fp.c (i387_cache_to_xsave): In look over
1536Index: gdb-7.9.1/gdb/gdbserver/Makefile.in
1537===================================================================
1538--- gdb-7.9.1.orig/gdb/gdbserver/Makefile.in
1539+++ gdb-7.9.1/gdb/gdbserver/Makefile.in
1540@@ -361,9 +361,11 @@ clean:
1541 rm -f xml-builtin.c stamp-xml
1542 rm -f i386-avx.c i386-avx-linux.c
1543 rm -f i386-mpx.c i386-mpx-linux.c
1544+ rm -f i386-avx-mpx.c i386-avx-mpx-linux.c
1545 rm -f i386-avx512.c i386-avx512-linux.c
1546 rm -f amd64-avx.c amd64-avx-linux.c
1547 rm -f amd64-mpx.c amd64-mpx-linux.c
1548+ rm -f amd64-avx-mpx.c amd64-avx-mpx-linux.c
1549 rm -f amd64-avx512.c amd64-avx512-linux.c
1550 rm -f i386-mmx.c i386-mmx-linux.c
1551 rm -f x32.c x32-linux.c
1552@@ -616,6 +618,10 @@ i386-mpx.c : $(srcdir)/../regformats/i38
1553 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mpx.dat i386-mpx.c
1554 i386-mpx-linux.c : $(srcdir)/../regformats/i386/i386-mpx-linux.dat $(regdat_sh)
1555 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mpx-linux.dat i386-mpx-linux.c
1556+i386-avx-mpx.c : $(srcdir)/../regformats/i386/i386-avx-mpx.dat $(regdat_sh)
1557+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-mpx.dat i386-avx-mpx.c
1558+i386-avx-mpx-linux.c : $(srcdir)/../regformats/i386/i386-avx-mpx-linux.dat $(regdat_sh)
1559+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-mpx-linux.dat i386-avx-mpx-linux.c
1560 i386-mmx.c : $(srcdir)/../regformats/i386/i386-mmx.dat $(regdat_sh)
1561 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mmx.dat i386-mmx.c
1562 i386-mmx-linux.c : $(srcdir)/../regformats/i386/i386-mmx-linux.dat $(regdat_sh)
1563@@ -722,6 +728,10 @@ amd64-mpx.c : $(srcdir)/../regformats/i3
1564 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-mpx.dat amd64-mpx.c
1565 amd64-mpx-linux.c : $(srcdir)/../regformats/i386/amd64-mpx-linux.dat $(regdat_sh)
1566 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-mpx-linux.dat amd64-mpx-linux.c
1567+amd64-avx-mpx.c : $(srcdir)/../regformats/i386/amd64-avx-mpx.dat $(regdat_sh)
1568+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-mpx.dat amd64-avx-mpx.c
1569+amd64-avx-mpx-linux.c : $(srcdir)/../regformats/i386/amd64-avx-mpx-linux.dat $(regdat_sh)
1570+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-mpx-linux.dat amd64-avx-mpx-linux.c
1571 x32.c : $(srcdir)/../regformats/i386/x32.dat $(regdat_sh)
1572 $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32.dat x32.c
1573 x32-linux.c : $(srcdir)/../regformats/i386/x32-linux.dat $(regdat_sh)
1574Index: gdb-7.9.1/gdb/gdbserver/configure.srv
1575===================================================================
1576--- gdb-7.9.1.orig/gdb/gdbserver/configure.srv
1577+++ gdb-7.9.1/gdb/gdbserver/configure.srv
1578@@ -24,20 +24,21 @@
1579 # Default hostio_last_error implementation
1580 srv_hostio_err_objs="hostio-errno.o"
1581
1582-srv_i386_regobj="i386.o i386-avx.o i386-avx512.o i386-mpx.o i386-mmx.o"
1583-srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx512-linux.o i386-mpx-linux.o i386-mmx-linux.o"
1584-srv_amd64_regobj="amd64.o amd64-avx.o amd64-avx512.o amd64-mpx.o x32.o x32-avx.o x32-avx512.o"
1585-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"
1586+srv_i386_regobj="i386.o i386-avx.o i386-avx512.o i386-mpx.o i386-avx-mpx.o i386-mmx.o"
1587+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"
1588+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"
1589+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"
1590
1591 ipa_i386_linux_regobj=i386-linux-ipa.o
1592 ipa_amd64_linux_regobj=amd64-linux-ipa.o
1593
1594+
1595 srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml i386/32bit-avx512.xml i386/32bit-mpx.xml"
1596 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"
1597-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"
1598-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"
1599-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"
1600-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"
1601+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"
1602+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"
1603+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"
1604+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"
1605
1606
1607 # Linux object files. This is so we don't have to repeat
1608Index: gdb-7.9.1/gdb/gdbserver/linux-x86-low.c
1609===================================================================
1610--- gdb-7.9.1.orig/gdb/gdbserver/linux-x86-low.c
1611+++ gdb-7.9.1/gdb/gdbserver/linux-x86-low.c
1612@@ -55,6 +55,10 @@ extern const struct target_desc *tdesc_a
1613 void init_registers_amd64_mpx_linux (void);
1614 extern const struct target_desc *tdesc_amd64_mpx_linux;
1615
1616+/* Defined in auto-generated file amd64-avx-mpx-linux.c. */
1617+void init_registers_amd64_avx_mpx_linux (void);
1618+extern const struct target_desc *tdesc_amd64_avx_mpx_linux;
1619+
1620 /* Defined in auto-generated file x32-linux.c. */
1621 void init_registers_x32_linux (void);
1622 extern const struct target_desc *tdesc_x32_linux;
1623@@ -81,6 +85,10 @@ extern const struct target_desc *tdesc_i
1624 void init_registers_i386_avx_linux (void);
1625 extern const struct target_desc *tdesc_i386_avx_linux;
1626
1627+/* Defined in auto-generated file i386-avx-mpx-linux.c. */
1628+void init_registers_i386_avx_mpx_linux (void);
1629+extern const struct target_desc *tdesc_i386_avx_mpx_linux;
1630+
1631 /* Defined in auto-generated file i386-avx512-linux.c. */
1632 void init_registers_i386_avx512_linux (void);
1633 extern const struct target_desc *tdesc_i386_avx512_linux;
1634@@ -1394,6 +1402,9 @@ x86_linux_read_description (void)
1635 case X86_XSTATE_AVX512_MASK:
1636 return tdesc_amd64_avx512_linux;
1637
1638+ case X86_XSTATE_AVX_MPX_MASK:
1639+ return tdesc_amd64_avx_mpx_linux;
1640+
1641 case X86_XSTATE_MPX_MASK:
1642 return tdesc_amd64_mpx_linux;
1643
1644@@ -1441,6 +1452,9 @@ x86_linux_read_description (void)
1645 case (X86_XSTATE_MPX_MASK):
1646 return tdesc_i386_mpx_linux;
1647
1648+ case (X86_XSTATE_AVX_MPX_MASK):
1649+ return tdesc_i386_avx_mpx_linux;
1650+
1651 case (X86_XSTATE_AVX_MASK):
1652 return tdesc_i386_avx_linux;
1653
1654@@ -3447,6 +3461,7 @@ initialize_low_arch (void)
1655 init_registers_amd64_avx_linux ();
1656 init_registers_amd64_avx512_linux ();
1657 init_registers_amd64_mpx_linux ();
1658+ init_registers_amd64_avx_mpx_linux ();
1659
1660 init_registers_x32_linux ();
1661 init_registers_x32_avx_linux ();
1662@@ -3461,6 +3476,7 @@ initialize_low_arch (void)
1663 init_registers_i386_avx_linux ();
1664 init_registers_i386_avx512_linux ();
1665 init_registers_i386_mpx_linux ();
1666+ init_registers_i386_avx_mpx_linux ();
1667
1668 tdesc_i386_linux_no_xml = xmalloc (sizeof (struct target_desc));
1669 copy_target_description (tdesc_i386_linux_no_xml, tdesc_i386_linux);
1670Index: gdb-7.9.1/gdb/i386-linux-tdep.c
1671===================================================================
1672--- gdb-7.9.1.orig/gdb/i386-linux-tdep.c
1673+++ gdb-7.9.1/gdb/i386-linux-tdep.c
1674@@ -49,6 +49,7 @@
1675 #include "features/i386/i386-linux.c"
1676 #include "features/i386/i386-mmx-linux.c"
1677 #include "features/i386/i386-mpx-linux.c"
1678+#include "features/i386/i386-avx-mpx-linux.c"
1679 #include "features/i386/i386-avx-linux.c"
1680 #include "features/i386/i386-avx512-linux.c"
1681
1682@@ -632,6 +633,8 @@ i386_linux_core_read_description (struct
1683 return tdesc_i386_avx512_linux;
1684 case X86_XSTATE_MPX_MASK:
1685 return tdesc_i386_mpx_linux;
1686+ case X86_XSTATE_AVX_MPX_MASK:
1687+ return tdesc_i386_avx_mpx_linux;
1688 case X86_XSTATE_AVX_MASK:
1689 return tdesc_i386_avx_linux;
1690 case X86_XSTATE_SSE_MASK:
1691@@ -1015,5 +1018,6 @@ _initialize_i386_linux_tdep (void)
1692 initialize_tdesc_i386_mmx_linux ();
1693 initialize_tdesc_i386_avx_linux ();
1694 initialize_tdesc_i386_mpx_linux ();
1695+ initialize_tdesc_i386_avx_mpx_linux ();
1696 initialize_tdesc_i386_avx512_linux ();
1697 }
1698Index: gdb-7.9.1/gdb/i386-linux-tdep.h
1699===================================================================
1700--- gdb-7.9.1.orig/gdb/i386-linux-tdep.h
1701+++ gdb-7.9.1/gdb/i386-linux-tdep.h
1702@@ -42,6 +42,7 @@ extern struct target_desc *tdesc_i386_li
1703 extern struct target_desc *tdesc_i386_mmx_linux;
1704 extern struct target_desc *tdesc_i386_avx_linux;
1705 extern struct target_desc *tdesc_i386_mpx_linux;
1706+extern struct target_desc *tdesc_i386_avx_mpx_linux;
1707 extern struct target_desc *tdesc_i386_avx512_linux;
1708
1709 /* Format of XSAVE extended state is:
1710Index: gdb-7.9.1/gdb/i386-tdep.c
1711===================================================================
1712--- gdb-7.9.1.orig/gdb/i386-tdep.c
1713+++ gdb-7.9.1/gdb/i386-tdep.c
1714@@ -55,6 +55,7 @@
1715 #include "features/i386/i386.c"
1716 #include "features/i386/i386-avx.c"
1717 #include "features/i386/i386-mpx.c"
1718+#include "features/i386/i386-avx-mpx.c"
1719 #include "features/i386/i386-avx512.c"
1720 #include "features/i386/i386-mmx.c"
1721
1722@@ -8635,6 +8636,7 @@ is \"default\"."),
1723 initialize_tdesc_i386_mmx ();
1724 initialize_tdesc_i386_avx ();
1725 initialize_tdesc_i386_mpx ();
1726+ initialize_tdesc_i386_avx_mpx ();
1727 initialize_tdesc_i386_avx512 ();
1728
1729 /* Tell remote stub that we support XML target description. */
1730Index: gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx-linux.dat
1731===================================================================
1732--- /dev/null
1733+++ gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx-linux.dat
1734@@ -0,0 +1,85 @@
1735+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
1736+# Generated from: i386/amd64-avx-mpx-linux.xml
1737+name:amd64_avx_mpx_linux
1738+xmltarget:amd64-avx-mpx-linux.xml
1739+expedite:rbp,rsp,rip
1740+64:rax
1741+64:rbx
1742+64:rcx
1743+64:rdx
1744+64:rsi
1745+64:rdi
1746+64:rbp
1747+64:rsp
1748+64:r8
1749+64:r9
1750+64:r10
1751+64:r11
1752+64:r12
1753+64:r13
1754+64:r14
1755+64:r15
1756+64:rip
1757+32:eflags
1758+32:cs
1759+32:ss
1760+32:ds
1761+32:es
1762+32:fs
1763+32:gs
1764+80:st0
1765+80:st1
1766+80:st2
1767+80:st3
1768+80:st4
1769+80:st5
1770+80:st6
1771+80:st7
1772+32:fctrl
1773+32:fstat
1774+32:ftag
1775+32:fiseg
1776+32:fioff
1777+32:foseg
1778+32:fooff
1779+32:fop
1780+128:xmm0
1781+128:xmm1
1782+128:xmm2
1783+128:xmm3
1784+128:xmm4
1785+128:xmm5
1786+128:xmm6
1787+128:xmm7
1788+128:xmm8
1789+128:xmm9
1790+128:xmm10
1791+128:xmm11
1792+128:xmm12
1793+128:xmm13
1794+128:xmm14
1795+128:xmm15
1796+32:mxcsr
1797+64:orig_rax
1798+128:ymm0h
1799+128:ymm1h
1800+128:ymm2h
1801+128:ymm3h
1802+128:ymm4h
1803+128:ymm5h
1804+128:ymm6h
1805+128:ymm7h
1806+128:ymm8h
1807+128:ymm9h
1808+128:ymm10h
1809+128:ymm11h
1810+128:ymm12h
1811+128:ymm13h
1812+128:ymm14h
1813+128:ymm15h
1814+128:bnd0raw
1815+128:bnd1raw
1816+128:bnd2raw
1817+128:bnd3raw
1818+64:bndcfgu
1819+64:bndstatus
1820Index: gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx.dat
1821===================================================================
1822--- /dev/null
1823+++ gdb-7.9.1/gdb/regformats/i386/amd64-avx-mpx.dat
1824@@ -0,0 +1,84 @@
1825+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
1826+# Generated from: i386/amd64-avx-mpx.xml
1827+name:amd64_avx_mpx
1828+xmltarget:amd64-avx-mpx.xml
1829+expedite:rbp,rsp,rip
1830+64:rax
1831+64:rbx
1832+64:rcx
1833+64:rdx
1834+64:rsi
1835+64:rdi
1836+64:rbp
1837+64:rsp
1838+64:r8
1839+64:r9
1840+64:r10
1841+64:r11
1842+64:r12
1843+64:r13
1844+64:r14
1845+64:r15
1846+64:rip
1847+32:eflags
1848+32:cs
1849+32:ss
1850+32:ds
1851+32:es
1852+32:fs
1853+32:gs
1854+80:st0
1855+80:st1
1856+80:st2
1857+80:st3
1858+80:st4
1859+80:st5
1860+80:st6
1861+80:st7
1862+32:fctrl
1863+32:fstat
1864+32:ftag
1865+32:fiseg
1866+32:fioff
1867+32:foseg
1868+32:fooff
1869+32:fop
1870+128:xmm0
1871+128:xmm1
1872+128:xmm2
1873+128:xmm3
1874+128:xmm4
1875+128:xmm5
1876+128:xmm6
1877+128:xmm7
1878+128:xmm8
1879+128:xmm9
1880+128:xmm10
1881+128:xmm11
1882+128:xmm12
1883+128:xmm13
1884+128:xmm14
1885+128:xmm15
1886+32:mxcsr
1887+128:ymm0h
1888+128:ymm1h
1889+128:ymm2h
1890+128:ymm3h
1891+128:ymm4h
1892+128:ymm5h
1893+128:ymm6h
1894+128:ymm7h
1895+128:ymm8h
1896+128:ymm9h
1897+128:ymm10h
1898+128:ymm11h
1899+128:ymm12h
1900+128:ymm13h
1901+128:ymm14h
1902+128:ymm15h
1903+128:bnd0raw
1904+128:bnd1raw
1905+128:bnd2raw
1906+128:bnd3raw
1907+64:bndcfgu
1908+64:bndstatus
1909Index: gdb-7.9.1/gdb/regformats/i386/amd64-mpx-linux.dat
1910===================================================================
1911--- gdb-7.9.1.orig/gdb/regformats/i386/amd64-mpx-linux.dat
1912+++ gdb-7.9.1/gdb/regformats/i386/amd64-mpx-linux.dat
1913@@ -61,22 +61,6 @@ expedite:rbp,rsp,rip
1914 128:xmm15
1915 32:mxcsr
1916 64:orig_rax
1917-128:ymm0h
1918-128:ymm1h
1919-128:ymm2h
1920-128:ymm3h
1921-128:ymm4h
1922-128:ymm5h
1923-128:ymm6h
1924-128:ymm7h
1925-128:ymm8h
1926-128:ymm9h
1927-128:ymm10h
1928-128:ymm11h
1929-128:ymm12h
1930-128:ymm13h
1931-128:ymm14h
1932-128:ymm15h
1933 128:bnd0raw
1934 128:bnd1raw
1935 128:bnd2raw
1936Index: gdb-7.9.1/gdb/regformats/i386/amd64-mpx.dat
1937===================================================================
1938--- gdb-7.9.1.orig/gdb/regformats/i386/amd64-mpx.dat
1939+++ gdb-7.9.1/gdb/regformats/i386/amd64-mpx.dat
1940@@ -60,22 +60,6 @@ expedite:rbp,rsp,rip
1941 128:xmm14
1942 128:xmm15
1943 32:mxcsr
1944-128:ymm0h
1945-128:ymm1h
1946-128:ymm2h
1947-128:ymm3h
1948-128:ymm4h
1949-128:ymm5h
1950-128:ymm6h
1951-128:ymm7h
1952-128:ymm8h
1953-128:ymm9h
1954-128:ymm10h
1955-128:ymm11h
1956-128:ymm12h
1957-128:ymm13h
1958-128:ymm14h
1959-128:ymm15h
1960 128:bnd0raw
1961 128:bnd1raw
1962 128:bnd2raw
1963Index: gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx-linux.dat
1964===================================================================
1965--- /dev/null
1966+++ gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx-linux.dat
1967@@ -0,0 +1,61 @@
1968+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
1969+# Generated from: i386/i386-avx-mpx-linux.xml
1970+name:i386_avx_mpx_linux
1971+xmltarget:i386-avx-mpx-linux.xml
1972+expedite:ebp,esp,eip
1973+32:eax
1974+32:ecx
1975+32:edx
1976+32:ebx
1977+32:esp
1978+32:ebp
1979+32:esi
1980+32:edi
1981+32:eip
1982+32:eflags
1983+32:cs
1984+32:ss
1985+32:ds
1986+32:es
1987+32:fs
1988+32:gs
1989+80:st0
1990+80:st1
1991+80:st2
1992+80:st3
1993+80:st4
1994+80:st5
1995+80:st6
1996+80:st7
1997+32:fctrl
1998+32:fstat
1999+32:ftag
2000+32:fiseg
2001+32:fioff
2002+32:foseg
2003+32:fooff
2004+32:fop
2005+128:xmm0
2006+128:xmm1
2007+128:xmm2
2008+128:xmm3
2009+128:xmm4
2010+128:xmm5
2011+128:xmm6
2012+128:xmm7
2013+32:mxcsr
2014+32:orig_eax
2015+128:ymm0h
2016+128:ymm1h
2017+128:ymm2h
2018+128:ymm3h
2019+128:ymm4h
2020+128:ymm5h
2021+128:ymm6h
2022+128:ymm7h
2023+128:bnd0raw
2024+128:bnd1raw
2025+128:bnd2raw
2026+128:bnd3raw
2027+64:bndcfgu
2028+64:bndstatus
2029Index: gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx.dat
2030===================================================================
2031--- /dev/null
2032+++ gdb-7.9.1/gdb/regformats/i386/i386-avx-mpx.dat
2033@@ -0,0 +1,60 @@
2034+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
2035+# Generated from: i386/i386-avx-mpx.xml
2036+name:i386_avx_mpx
2037+xmltarget:i386-avx-mpx.xml
2038+expedite:ebp,esp,eip
2039+32:eax
2040+32:ecx
2041+32:edx
2042+32:ebx
2043+32:esp
2044+32:ebp
2045+32:esi
2046+32:edi
2047+32:eip
2048+32:eflags
2049+32:cs
2050+32:ss
2051+32:ds
2052+32:es
2053+32:fs
2054+32:gs
2055+80:st0
2056+80:st1
2057+80:st2
2058+80:st3
2059+80:st4
2060+80:st5
2061+80:st6
2062+80:st7
2063+32:fctrl
2064+32:fstat
2065+32:ftag
2066+32:fiseg
2067+32:fioff
2068+32:foseg
2069+32:fooff
2070+32:fop
2071+128:xmm0
2072+128:xmm1
2073+128:xmm2
2074+128:xmm3
2075+128:xmm4
2076+128:xmm5
2077+128:xmm6
2078+128:xmm7
2079+32:mxcsr
2080+128:ymm0h
2081+128:ymm1h
2082+128:ymm2h
2083+128:ymm3h
2084+128:ymm4h
2085+128:ymm5h
2086+128:ymm6h
2087+128:ymm7h
2088+128:bnd0raw
2089+128:bnd1raw
2090+128:bnd2raw
2091+128:bnd3raw
2092+64:bndcfgu
2093+64:bndstatus
2094Index: gdb-7.9.1/gdb/regformats/i386/i386-mpx-linux.dat
2095===================================================================
2096--- gdb-7.9.1.orig/gdb/regformats/i386/i386-mpx-linux.dat
2097+++ gdb-7.9.1/gdb/regformats/i386/i386-mpx-linux.dat
2098@@ -45,14 +45,6 @@ expedite:ebp,esp,eip
2099 128:xmm7
2100 32:mxcsr
2101 32:orig_eax
2102-128:ymm0h
2103-128:ymm1h
2104-128:ymm2h
2105-128:ymm3h
2106-128:ymm4h
2107-128:ymm5h
2108-128:ymm6h
2109-128:ymm7h
2110 128:bnd0raw
2111 128:bnd1raw
2112 128:bnd2raw
2113Index: gdb-7.9.1/gdb/regformats/i386/i386-mpx.dat
2114===================================================================
2115--- gdb-7.9.1.orig/gdb/regformats/i386/i386-mpx.dat
2116+++ gdb-7.9.1/gdb/regformats/i386/i386-mpx.dat
2117@@ -44,14 +44,6 @@ expedite:ebp,esp,eip
2118 128:xmm6
2119 128:xmm7
2120 32:mxcsr
2121-128:ymm0h
2122-128:ymm1h
2123-128:ymm2h
2124-128:ymm3h
2125-128:ymm4h
2126-128:ymm5h
2127-128:ymm6h
2128-128:ymm7h
2129 128:bnd0raw
2130 128:bnd1raw
2131 128:bnd2raw
2132Index: gdb-7.9.1/gdb/x86-linux-nat.c
2133===================================================================
2134--- gdb-7.9.1.orig/gdb/x86-linux-nat.c
2135+++ gdb-7.9.1/gdb/x86-linux-nat.c
2136@@ -391,6 +391,11 @@ x86_linux_read_description (struct targe
2137 return tdesc_x32_avx_linux; /* No MPX on x32 using AVX. */
2138 else
2139 return tdesc_amd64_mpx_linux;
2140+ case X86_XSTATE_AVX_MPX_MASK:
2141+ if (is_x32)
2142+ return tdesc_x32_avx_linux; /* No MPX on x32 using AVX. */
2143+ else
2144+ return tdesc_amd64_avx_mpx_linux;
2145 case X86_XSTATE_AVX_MASK:
2146 if (is_x32)
2147 return tdesc_x32_avx_linux;
2148@@ -413,6 +418,8 @@ x86_linux_read_description (struct targe
2149 return tdesc_i386_avx512_linux;
2150 case X86_XSTATE_MPX_MASK:
2151 return tdesc_i386_mpx_linux;
2152+ case X86_XSTATE_AVX_MPX_MASK:
2153+ return tdesc_i386_avx_mpx_linux;
2154 case X86_XSTATE_AVX_MASK:
2155 return tdesc_i386_avx_linux;
2156 default: