[binutils-gdb] gdbserver: Clear X86_XSTATE_MPX bits in xcr0 on x32
H.J. Lu
hjl@sourceware.org
Thu Mar 21 19:45:14 GMT 2024
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4bb20a6244b7091a9a7a2ae35dfbd7e8db27550a
commit 4bb20a6244b7091a9a7a2ae35dfbd7e8db27550a
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Wed Mar 20 04:13:18 2024 -0700
gdbserver: Clear X86_XSTATE_MPX bits in xcr0 on x32
Since MPX isn't available for x32, we should clear X86_XSTATE_MPX bits
on x32.
PR server/31511
* linux-x86-low.cc (x86_linux_read_description): Clear
X86_XSTATE_MPX bits in xcr0 on x32.
Reviewed-by: Felix Willgerodt <felix.willgerodt@intel.com>
Diff:
---
gdbserver/linux-x86-low.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc
index 3af0a009052..933d1fb012a 100644
--- a/gdbserver/linux-x86-low.cc
+++ b/gdbserver/linux-x86-low.cc
@@ -938,6 +938,10 @@ x86_linux_read_description (void)
xcr0 = xstateregs[(I386_LINUX_XSAVE_XCR0_OFFSET
/ sizeof (uint64_t))];
+ /* No MPX on x32. */
+ if (machine == EM_X86_64 && !is_elf64)
+ xcr0 &= ~X86_XSTATE_MPX;
+
xsave_len = x86_xsave_length ();
/* Use PTRACE_GETREGSET if it is available. */
More information about the Gdb-cvs
mailing list