]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdbserver: Clear X86_XSTATE_MPX bits in xcr0 on x32
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 20 Mar 2024 11:13:18 +0000 (04:13 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 21 Mar 2024 19:44:40 +0000 (12:44 -0700)
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>
gdbserver/linux-x86-low.cc

index 3af0a009052b4ba7fd3a6fdb65aaed02f202660f..933d1fb012a1637e00c685f570f9f8634b18519e 100644 (file)
@@ -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.  */