From: Walfred Tedeschi <walfred.tedeschi@intel.com>
To: Walfred Tedeschi <walfred.tedeschi@intel.com>,
palves@redhat.com, yao@codesourcery.com
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v1 1/1] Fix PR16193 - gdbserver aborts.
Date: Mon, 25 Nov 2013 15:01:00 -0000 [thread overview]
Message-ID: <529363FF.3060602@intel.com> (raw)
In-Reply-To: <1385386802-16948-1-git-send-email-walfred.tedeschi@intel.com>
Hello All,
For clarification the macro I386_XSTATE_SIZE(XCR0) was returning for any
XCR0 the value 576.
However when reading the registers we used more than this buffer size
(when on AVX case).
Interestingly this did not happened for MPX.
Patch bellow changes/fixes the I386_XSTATE_SIZE(XCR0). To fix acctually
the problem we decided to improve
macro readability.
Regards,
-Fred
Am 11/25/2013 2:40 PM, schrieb Walfred Tedeschi:
> Macro returning the size of the xsave buffer got broken with the MPX
> patch. Fix improves the macro to make it more readable.
>
> 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): Refactored macro using HAS_MPX and
> HAS_AVX.
> ---
> gdb/common/i386-xstate.h | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/gdb/common/i386-xstate.h b/gdb/common/i386-xstate.h
> index e76ecc1..f8b85e3 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,14 @@
>
> #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) == I386_XSTATE_BNDREGS) \
> + || (((XCR0) & I386_XSTATE_MPX) == I386_XSTATE_BNDCFG)
> +#define HAS_AVX(XCR0) ((XCR0) & I386_XSTATE_AVX) == I386_XSTATE_AVX
> +
> /* 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 */
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
next prev parent reply other threads:[~2013-11-25 14:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-25 14:33 Walfred Tedeschi
2013-11-25 14:40 ` Pedro Alves
2013-11-25 14:49 ` Tedeschi, Walfred
2013-11-25 14:51 ` Pedro Alves
2013-11-25 15:19 ` Pedro Alves
2013-11-25 14:57 ` Mark Kettenis
2013-11-25 15:03 ` Tedeschi, Walfred
2013-11-25 15:14 ` Pedro Alves
2013-11-25 15:31 ` Mark Kettenis
2013-11-25 15:48 ` Walfred Tedeschi
2013-11-25 15:01 ` Walfred Tedeschi [this message]
2013-11-25 15:04 ` 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=529363FF.3060602@intel.com \
--to=walfred.tedeschi@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
--cc=yao@codesourcery.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