Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Walfred Tedeschi <walfred.tedeschi@intel.com>
To: palves@redhat.com, mark.kettenis@xs4all.nl
Cc: gdb-patches@sourceware.org,
	Walfred Tedeschi <walfred.tedeschi@intel.com>
Subject: [PATCH v3 1/1] Fix PR16193 - gdbserver aborts.
Date: Mon, 25 Nov 2013 17:26:00 -0000	[thread overview]
Message-ID: <1385398764-29751-1-git-send-email-walfred.tedeschi@intel.com> (raw)

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


             reply	other threads:[~2013-11-25 17:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-25 17:26 Walfred Tedeschi [this message]
2013-11-25 18:52 ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1385398764-29751-1-git-send-email-walfred.tedeschi@intel.com \
    --to=walfred.tedeschi@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox