This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[pushed] [PATCH v3 1/1] Fix PR16193 - gdbserver aborts.
- From: "Tedeschi, Walfred" <walfred dot tedeschi at intel dot com>
- To: "palves at redhat dot com" <palves at redhat dot com>, "mark dot kettenis at xs4all dot nl" <mark dot kettenis at xs4all dot nl>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Tue, 26 Nov 2013 08:38:24 +0000
- Subject: [pushed] [PATCH v3 1/1] Fix PR16193 - gdbserver aborts.
- Authentication-results: sourceware.org; auth=none
Pedro, Mark and All,
I have pushed the patch bellow. As commit message I have used the one suggested by Pedro.
Thanks a lot for your support and reviews,
Best regards,
-Fred
-----Original Message-----
From: Tedeschi, Walfred
Sent: Monday, November 25, 2013 5:59 PM
To: palves@redhat.com; mark.kettenis@xs4all.nl
Cc: gdb-patches@sourceware.org; Tedeschi, Walfred
Subject: [PATCH v3 1/1] Fix PR16193 - gdbserver aborts.
The MPX patch has broken the I386_XSTATE_SIZE macro in the case of AVX.
Macro was checking the XCR0 against the size of AVX and not against the AVX state. To fix that it was decided to re-factor the macros improving eadability.
2013-12-25 Walfred Tedeschi <walfred.tedeschi@intel.com>
* i386-xstate.h (I386_XSTATE_MPX): New Macro.
(I386_XSTATE_MPX_MASK): Makes use of I386_XSTATE_MPX.
(HAS_MPX): New macro.
(HAS_AVX): New macro.
(I386_XSTATE_SIZE): Uses HAS_MPX and HAS_AVX.
---
gdb/common/i386-xstate.h | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/gdb/common/i386-xstate.h b/gdb/common/i386-xstate.h index e76ecc1..c4b8c8a 100644
--- a/gdb/common/i386-xstate.h
+++ b/gdb/common/i386-xstate.h
@@ -26,14 +26,13 @@
#define I386_XSTATE_AVX (1ULL << 2)
#define I386_XSTATE_BNDREGS (1ULL << 3)
#define I386_XSTATE_BNDCFG (1ULL << 4)
+#define I386_XSTATE_MPX (I386_XSTATE_BNDREGS | I386_XSTATE_BNDCFG)
/* Supported mask and size of the extended state. */
#define I386_XSTATE_X87_MASK I386_XSTATE_X87
#define I386_XSTATE_SSE_MASK (I386_XSTATE_X87 | I386_XSTATE_SSE)
#define I386_XSTATE_AVX_MASK (I386_XSTATE_SSE_MASK | I386_XSTATE_AVX)
-#define I386_XSTATE_MPX_MASK (I386_XSTATE_AVX_MASK \
- | I386_XSTATE_BNDREGS \
- | I386_XSTATE_BNDCFG)
+#define I386_XSTATE_MPX_MASK (I386_XSTATE_AVX_MASK | I386_XSTATE_MPX)
#define I386_XSTATE_ALL_MASK I386_XSTATE_MPX_MASK
@@ -44,11 +43,13 @@
#define I386_XSTATE_MAX_SIZE 1088
+/* In case one of the MPX XCR0 bits is set we consider we have MPX. */
+#define HAS_MPX(XCR0) (((XCR0) & I386_XSTATE_MPX) != 0) #define
+HAS_AVX(XCR0) (((XCR0) & I386_XSTATE_AVX) != 0)
+
/* Get I386 XSAVE extended state size. */ #define I386_XSTATE_SIZE(XCR0) \
- (((XCR0) & I386_XSTATE_BNDCFG) != 0 ? I386_XSTATE_BNDCFG_SIZE \
- : (((XCR0) & I386_XSTATE_BNDREGS) != 0 ? I386_XSTATE_BNDCFG_SIZE \
- : (((XCR0) & I386_XSTATE_AVX_SIZE) != 0 ? I386_XSTATE_AVX_SIZE \
- : I386_XSTATE_SSE_SIZE)))
+ (HAS_MPX (XCR0) ? I386_XSTATE_BNDCFG_SIZE : \
+ (HAS_AVX (XCR0) ? I386_XSTATE_AVX_SIZE : I386_XSTATE_SSE_SIZE))
#endif /* I386_XSTATE_H */
--
1.8.1.2
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052