gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / i386-linux-tdep.h
index 089268ac0916e7b7a82beac112f0779214654b24..b54352694a362eae1853ee6fe6e3a67a2128aedf 100644 (file)
@@ -1,12 +1,12 @@
 /* Target-dependent code for GNU/Linux x86.
 
 /* Target-dependent code for GNU/Linux x86.
 
-   Copyright 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -15,9 +15,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef I386_LINUX_TDEP_H
 #define I386_LINUX_TDEP_H
 
 #ifndef I386_LINUX_TDEP_H
 #define I386_LINUX_TDEP_H
 /* Register number for the "orig_eax" pseudo-register.  If this
    pseudo-register contains a value >= 0 it is interpreted as the
    system call number that the kernel is supposed to restart.  */
 /* Register number for the "orig_eax" pseudo-register.  If this
    pseudo-register contains a value >= 0 it is interpreted as the
    system call number that the kernel is supposed to restart.  */
-#define I386_LINUX_ORIG_EAX_REGNUM I386_SSE_NUM_REGS
+#define I386_LINUX_ORIG_EAX_REGNUM (I386_PKRU_REGNUM + 1)
 
 /* Total number of registers for GNU/Linux.  */
 #define I386_LINUX_NUM_REGS (I386_LINUX_ORIG_EAX_REGNUM + 1)
 
 
 /* Total number of registers for GNU/Linux.  */
 #define I386_LINUX_NUM_REGS (I386_LINUX_ORIG_EAX_REGNUM + 1)
 
+/* Get XSAVE extended state xcr0 from core dump.  */
+extern uint64_t i386_linux_core_read_xcr0 (bfd *abfd);
+
+/* Handle and display information related to the MPX bound violation
+   to the user.  */
+extern void i386_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
+                                                 struct ui_out *uiout);
+
+/* Return the target description according to XCR0.  */
+extern const struct target_desc *i386_linux_read_description (uint64_t xcr0);
+
+/* Format of XSAVE extended state is:
+       struct
+       {
+         fxsave_bytes[0..463]
+         sw_usable_bytes[464..511]
+         xstate_hdr_bytes[512..575]
+         avx_bytes[576..831]
+         mpx_bytes [960..1032]
+         avx512_k_regs[1088..1152]
+         avx512_zmmh_regs0-7[1153..1407]
+         avx512_zmmh_regs8-15[1408..1663]
+         avx512_zmm_regs16-31[1664..2687]
+         pkru[2688..2752]
+         future_state etc
+       };
+
+  Same memory layout will be used for the coredump NT_X86_XSTATE
+  representing the XSAVE extended state registers.
+
+  The first 8 bytes of the sw_usable_bytes[464..467] is the OS enabled
+  extended state mask, which is the same as the extended control register
+  0 (the XFEATURE_ENABLED_MASK register), XCR0.  We can use this mask
+  together with the mask saved in the xstate_hdr_bytes to determine what
+  states the processor/OS supports and what state, used or initialized,
+  the process/thread is in.  */ 
+#define I386_LINUX_XSAVE_XCR0_OFFSET 464
+
+extern int i386_linux_gregset_reg_offset[];
+
+/* Return x86 siginfo type.  */
+extern struct type *x86_linux_get_siginfo_type (struct gdbarch *gdbarch);
+
 #endif /* i386-linux-tdep.h */
 #endif /* i386-linux-tdep.h */
This page took 0.025692 seconds and 4 git commands to generate.