summaryrefslogtreecommitdiff
path: root/gdb/amd64-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/amd64-tdep.c')
-rw-r--r--gdb/amd64-tdep.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index c2a1074a57b..4da71e5d68c 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -47,7 +47,7 @@
#include "features/i386/amd64-mpx.c"
#include "features/i386/amd64-avx-mpx.c"
#include "features/i386/amd64-avx-avx512.c"
-#include "features/i386/amd64-avx-mpx-avx512.c"
+#include "features/i386/amd64-avx-mpx-avx512-pku.c"
#include "features/i386/x32.c"
#include "features/i386/x32-avx.c"
@@ -157,6 +157,10 @@ static const char *amd64_xmm_avx512_names[] = {
"xmm28", "xmm29", "xmm30", "xmm31"
};
+static const char *amd64_pkeys_names[] = {
+ "pkru"
+};
+
/* DWARF Register Number Mapping as defined in the System V psABI,
section 3.6. */
@@ -3061,6 +3065,13 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
AMD64_GSBASE_REGNUM, "gs_base");
}
+ if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.pkeys") != NULL)
+ {
+ tdep->pkeys_register_names = amd64_pkeys_names;
+ tdep->pkru_regnum = AMD64_PKRU_REGNUM;
+ tdep->num_pkeys_regs = 1;
+ }
+
tdep->num_byte_regs = 20;
tdep->num_word_regs = 16;
tdep->num_dword_regs = 16;
@@ -3203,8 +3214,8 @@ amd64_target_description (uint64_t xcr0)
{
switch (xcr0 & X86_XSTATE_ALL_MASK)
{
- case X86_XSTATE_AVX_MPX_AVX512_MASK:
- return tdesc_amd64_avx_mpx_avx512;
+ case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK:
+ return tdesc_amd64_avx_mpx_avx512_pku;
case X86_XSTATE_AVX_AVX512_MASK:
return tdesc_amd64_avx_avx512;
case X86_XSTATE_MPX_MASK:
@@ -3229,7 +3240,7 @@ _initialize_amd64_tdep (void)
initialize_tdesc_amd64_mpx ();
initialize_tdesc_amd64_avx_mpx ();
initialize_tdesc_amd64_avx_avx512 ();
- initialize_tdesc_amd64_avx_mpx_avx512 ();
+ initialize_tdesc_amd64_avx_mpx_avx512_pku ();
initialize_tdesc_x32 ();
initialize_tdesc_x32_avx ();