Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH v3 1/1] Fix PR16193 - gdbserver aborts.
@ 2013-11-25 17:26 Walfred Tedeschi
  2013-11-25 18:52 ` Pedro Alves
  0 siblings, 1 reply; 2+ messages in thread
From: Walfred Tedeschi @ 2013-11-25 17:26 UTC (permalink / raw)
  To: palves, mark.kettenis; +Cc: gdb-patches, Walfred Tedeschi

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH v3 1/1] Fix PR16193 - gdbserver aborts.
  2013-11-25 17:26 [PATCH v3 1/1] Fix PR16193 - gdbserver aborts Walfred Tedeschi
@ 2013-11-25 18:52 ` Pedro Alves
  0 siblings, 0 replies; 2+ messages in thread
From: Pedro Alves @ 2013-11-25 18:52 UTC (permalink / raw)
  To: Walfred Tedeschi; +Cc: mark.kettenis, gdb-patches

On 11/25/2013 04:59 PM, Walfred Tedeschi wrote:
> 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.

"readability".  My suggested text seemed more complete to me,
but anyway ...

> 2013-12-25  Walfred Tedeschi  <walfred.tedeschi@intel.com>

November, not December.  Otherwise OK.

-- 
Pedro Alves


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-11-25 17:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-25 17:26 [PATCH v3 1/1] Fix PR16193 - gdbserver aborts Walfred Tedeschi
2013-11-25 18:52 ` Pedro Alves

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox