Fix PR16193 - gdbserver aborts.
authorWalfred Tedeschi <walfred.tedeschi@intel.com>
Tue, 26 Nov 2013 08:32:16 +0000 (08:32 +0000)
committerWalfred Tedeschi <walfred.tedeschi@intel.com>
Tue, 26 Nov 2013 08:32:16 +0000 (08:32 +0000)
commit244ec0da3816472b6e2c3347dae8b2d308d90f93
tree62ebf6574808ce80c1cb9ce1812b11b5d9b3d937
parent88e80851c92b974a2ccccceaed931baacd647303
Fix PR16193 - gdbserver aborts.

The MPX patch has broken the I386_XSTATE_SIZE macro.  For AVX machines,
it ends up returning I386_XSTATE_SSE_SIZE.  Where it first reads
I386_XSTATE_AVX_SIZE, it should have read I386_XSTATE_AVX:

 #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 \
 +       : (((XCR0) & I386_XSTATE_AVX) != 0 ? I386_XSTATE_AVX_SIZE \
        : I386_XSTATE_SSE_SIZE)))

The patch goes a step further and improves readability of the macro,
by adding a couple other auxiliary macros.

2013-11-26  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/ChangeLog
gdb/common/i386-xstate.h