Compare commits

...

4 Commits

Author SHA1 Message Date
Richard Henderson
247584d380 Segment support for x86_64, part 2
* amd64-tdep.c (amd64_address_to_pointer): New.
	(amd64_pointer_to_address): New.
	(amd64_init_abi): Register them.
2015-11-05 14:50:24 +01:00
Richard Henderson
4a2bd92e40 Segment support for x86_64, part 1
* amd64-tdep.c (amd64_address_class_type_flags): New.
	(amd64_address_class_type_flags_to_name): New.
	(amd64_address_class_name_to_type_flags): New.
	(amd64_init_abi): Register them.
2015-11-03 09:46:11 +01:00
Richard Henderson
220c78adba Use register cache for x86_64 ps_get_thread_area
* amd64-linux-nat.c (ps_get_thread_area): Use regcache to
	fetch FS_BASE contents.
2015-11-03 08:48:38 +01:00
Richard Henderson
47eb5bb905 Add amd64 registers fs_base and gs_base
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Read
	seg bases from ARCH_PRCTL if they're not present in struct user.
	(amd64_linux_store_inferior_registers): Likewise write them.
	* amd64-linux-tdep.c (amd64_linux_gregset_reg_offset): Add offsets
	for seg bases if they're present in struct user.
	* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Set to
	AMD64_NUM_REGS.
	* amd64-tdep.c (amd64_init_abi): Init org.gnu.gdb.i386.seg.
	* amd64-tdep.h (AMD64_FSBASE_REGNUM, AMD64_GSBASE_REGNUM): New.
	(AMD64_NUM_REGS): Update.

	* features/i386/64bit-seg.xml: New file.
	* features/i386/amd64-avx-linux.xml: Include it.
	* features/i386/amd64-avx512-linux.xml: Likewise.
	* features/i386/amd64-linux.xml: Likewise.
	* features/i386/amd64-mpx-linux.xml: Likewise.
	* features/i386/x32-avx-linux.xml: Likewise.
	* features/i386/x32-avx512-linux.xml: Likewise.
	* features/i386/x32-linux.xml: Likewise.

	* features/i386/amd64-avx-linux.c: Regenerate.
	* features/i386/amd64-avx512-linux.c: Likewise.
	* features/i386/amd64-linux.c: Likewise.
	* features/i386/amd64-mpx-linux.c: Likewise.
	* features/i386/x32-avx-linux.c: Likewise.
	* features/i386/x32-avx512-linux.c: Likewise.
	* features/i386/x32-linux.c: Likewise.

	* regformats/i386/amd64-avx-linux.dat: Regenerate.
	* regformats/i386/amd64-avx512-linux.dat: Likewise.
	* regformats/i386/amd64-linux.dat: Likewise.
	* regformats/i386/amd64-mpx-linux.dat: Likewise.
	* regformats/i386/x32-avx-linux.dat: Likewise.
	* regformats/i386/x32-avx512-linux.dat: Likewise.
	* regformats/i386/x32-linux.dat: Likewise.
2015-10-30 12:23:18 -07:00
27 changed files with 495 additions and 295 deletions

View File

@@ -170,6 +170,21 @@ amd64_linux_fetch_inferior_registers (struct target_ops *ops,
amd64_supply_fxsave (regcache, -1, &fpregs);
}
#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
{
/* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
fs_base and gs_base fields of user_regs_struct can be
used directly. */
unsigned long base;
if ((regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
&& ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_FS) == 0)
regcache_raw_supply (regcache, AMD64_FSBASE_REGNUM, &base);
if ((regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
&& ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_GS) == 0)
regcache_raw_supply (regcache, AMD64_GSBASE_REGNUM, &base);
}
#endif
}
}
@@ -236,6 +251,27 @@ amd64_linux_store_inferior_registers (struct target_ops *ops,
if (ptrace (PTRACE_SETFPREGS, tid, 0, (long) &fpregs) < 0)
perror_with_name (_("Couldn't write floating point status"));
}
#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
{
/* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
fs_base and gs_base fields of user_regs_struct can be
used directly. */
unsigned long base;
if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
{
regcache_raw_collect (regcache, AMD64_FSBASE_REGNUM, &base);
if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_SET_FS) < 0)
perror_with_name (_("Couldn't write fs_base"));
}
if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
{
regcache_raw_collect (regcache, AMD64_GSBASE_REGNUM, &base);
if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_SET_GS) < 0)
perror_with_name (_("Couldn't write gs_base"));
}
}
#endif
}
}
@@ -247,10 +283,11 @@ ps_err_e
ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
ps_err_e result;
if (gdbarch_bfd_arch_info (target_gdbarch ())->bits_per_word == 32)
{
unsigned int base_addr;
ps_err_e result;
result = x86_linux_get_thread_area (lwpid, (void *) (long) idx,
&base_addr);
@@ -260,63 +297,33 @@ ps_get_thread_area (const struct ps_prochandle *ph,
a "long" and a "void *" are the same. */
(*base) = (void *) (long) base_addr;
}
return result;
}
else
{
/* This definition comes from prctl.h, but some kernels may not
have it. */
#ifndef PTRACE_ARCH_PRCTL
#define PTRACE_ARCH_PRCTL 30
#endif
struct cleanup *old_chain;
struct regcache *regcache;
enum amd64_regnum gdb_regnum;
/* FIXME: ezannoni-2003-07-09 see comment above about include
file order. We could be getting bogus values for these two. */
gdb_assert (FS < ELF_NGREG);
gdb_assert (GS < ELF_NGREG);
switch (idx)
{
case FS:
#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
{
/* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
fs_base and gs_base fields of user_regs_struct can be
used directly. */
unsigned long fs;
errno = 0;
fs = ptrace (PTRACE_PEEKUSER, lwpid,
offsetof (struct user_regs_struct, fs_base), 0);
if (errno == 0)
{
*base = (void *) fs;
return PS_OK;
}
}
#endif
if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
return PS_OK;
break;
case GS:
#ifdef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
{
unsigned long gs;
errno = 0;
gs = ptrace (PTRACE_PEEKUSER, lwpid,
offsetof (struct user_regs_struct, gs_base), 0);
if (errno == 0)
{
*base = (void *) gs;
return PS_OK;
}
}
#endif
if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
return PS_OK;
break;
default: /* Should not happen. */
return PS_BADADDR;
}
if (idx == FS)
gdb_regnum = AMD64_FSBASE_REGNUM;
else if (idx == GS)
gdb_regnum = AMD64_GSBASE_REGNUM;
else
return PS_BADADDR;
old_chain = save_inferior_ptid ();
inferior_ptid = ptid_build (ptid_get_pid (ph->ptid), lwpid, 0);
regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
result = (regcache_raw_read (regcache, gdb_regnum, (gdb_byte *) base)
== REG_VALID ? PS_OK : PS_ERR);
do_cleanups (old_chain);
}
return PS_ERR; /* ptrace failed. */
return result;
}

View File

@@ -102,6 +102,11 @@ int amd64_linux_gregset_reg_offset[] =
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
21 * 8, 22 * 8, /* fs_base, gs_base */
#else
-1, -1,
#endif
15 * 8 /* "orig_rax" */
};

View File

@@ -26,7 +26,7 @@
/* Register number for the "orig_rax" register. If this register
contains a value >= 0 it is interpreted as the system call number
that the kernel is supposed to restart. */
#define AMD64_LINUX_ORIG_RAX_REGNUM (AMD64_ZMM31H_REGNUM + 1)
#define AMD64_LINUX_ORIG_RAX_REGNUM (AMD64_NUM_REGS)
/* Total number of registers for GNU/Linux. */
#define AMD64_LINUX_NUM_REGS (AMD64_LINUX_ORIG_RAX_REGNUM + 1)

View File

@@ -2890,7 +2890,110 @@ const struct regset amd64_fpregset =
NULL, amd64_supply_fpregset, amd64_collect_fpregset
};
/* Address classes. */
static int
amd64_address_class_type_flags (int byte_size, int dwarf2_addr_class)
{
switch (dwarf2_addr_class)
{
case 1: /* __seg_fs */
return TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
case 2: /* __seg_gs */
return TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2;
default:
return 0;
}
}
static const char *
amd64_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
{
if (type_flags & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1)
return "__seg_fs";
if (type_flags & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2)
return "__seg_gs";
return NULL;
}
static int
amd64_address_class_name_to_type_flags (struct gdbarch *gdbarch,
const char *name,
int *type_flags_ptr)
{
if (strcmp (name, "__seg_fs") == 0)
{
*type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
return 1;
}
if (strcmp (name, "__seg_gs") == 0)
{
*type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2;
return 1;
}
return 0;
}
static void
amd64_address_to_pointer (struct gdbarch *gdbarch, struct type *type,
gdb_byte *buf, CORE_ADDR addr)
{
int regnum = -1;
switch (TYPE_ADDRESS_CLASS_ALL (type))
{
case TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1:
regnum = AMD64_FSBASE_REGNUM;
break;
case TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2:
regnum = AMD64_GSBASE_REGNUM;
break;
}
if (regnum >= 0)
{
struct regcache *regcache = get_current_regcache ();
ULONGEST base;
if (regcache_raw_read_unsigned (regcache, regnum, &base) == REG_VALID)
addr -= base;
/* ??? else error, but we have no way to signal that here. */
}
store_unsigned_integer (buf, TYPE_LENGTH (type), BFD_ENDIAN_LITTLE, addr);
}
static CORE_ADDR
amd64_pointer_to_address (struct gdbarch *gdbarch, struct type *type,
const gdb_byte *buf)
{
ULONGEST addr = extract_unsigned_integer (buf, TYPE_LENGTH (type),
BFD_ENDIAN_LITTLE);
int regnum = -1;
switch (TYPE_ADDRESS_CLASS_ALL (type))
{
case TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1:
regnum = AMD64_FSBASE_REGNUM;
break;
case TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2:
regnum = AMD64_GSBASE_REGNUM;
break;
}
if (regnum >= 0)
{
struct regcache *regcache = get_current_regcache ();
ULONGEST base;
if (regcache_raw_read_unsigned (regcache, regnum, &base) == REG_VALID)
addr += base;
/* ??? else error, but we have no way to signal that here. */
}
return addr;
}
/* Figure out where the longjmp will land. Slurp the jmp_buf out of
%rdi. We expect its value to be a pointer to the jmp_buf structure
from which we extract the address that we will land at. This
@@ -2943,6 +3046,7 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
NULL };
static const char *const stap_register_indirection_suffixes[] = { ")",
NULL };
const struct tdesc_feature *feature;
/* AMD64 generally uses `fxsave' instead of `fsave' for saving its
floating-point registers. */
@@ -2987,6 +3091,17 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->bnd0r_regnum = AMD64_BND0R_REGNUM;
}
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.seg");
if (feature != NULL)
{
struct tdesc_arch_data *tdesc_data
= (struct tdesc_arch_data *) info.tdep_info;
tdesc_numbered_register (feature, tdesc_data,
AMD64_FSBASE_REGNUM, "fs_base");
tdesc_numbered_register (feature, tdesc_data,
AMD64_GSBASE_REGNUM, "gs_base");
}
tdep->num_byte_regs = 20;
tdep->num_word_regs = 16;
tdep->num_dword_regs = 16;
@@ -3081,6 +3196,16 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_insn_is_call (gdbarch, amd64_insn_is_call);
set_gdbarch_insn_is_ret (gdbarch, amd64_insn_is_ret);
set_gdbarch_insn_is_jump (gdbarch, amd64_insn_is_jump);
/* Address handling. */
set_gdbarch_address_class_type_flags
(gdbarch, amd64_address_class_type_flags);
set_gdbarch_address_class_type_flags_to_name
(gdbarch, amd64_address_class_type_flags_to_name);
set_gdbarch_address_class_name_to_type_flags
(gdbarch, amd64_address_class_name_to_type_flags);
set_gdbarch_address_to_pointer (gdbarch, amd64_address_to_pointer);
set_gdbarch_pointer_to_address (gdbarch, amd64_pointer_to_address);
}

View File

@@ -76,13 +76,15 @@ enum amd64_regnum
AMD64_K0_REGNUM,
AMD64_K7_REGNUM = AMD64_K0_REGNUM + 7,
AMD64_ZMM0H_REGNUM,
AMD64_ZMM31H_REGNUM = AMD64_ZMM0H_REGNUM + 31
AMD64_ZMM31H_REGNUM = AMD64_ZMM0H_REGNUM + 31,
AMD64_FSBASE_REGNUM,
AMD64_GSBASE_REGNUM
};
/* Number of general purpose registers. */
#define AMD64_NUM_GREGS 24
#define AMD64_NUM_REGS (AMD64_ZMM31H_REGNUM + 1)
#define AMD64_NUM_REGS (AMD64_GSBASE_REGNUM + 1)
extern struct target_desc *tdesc_amd64;

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- Copyright (C) 2010-2015 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. -->
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
<feature name="org.gnu.gdb.i386.seg">
<reg name="fs_base" bitsize="64" type="data_ptr"/>
<reg name="gs_base" bitsize="64" type="data_ptr"/>
</feature>

View File

@@ -151,23 +151,27 @@ initialize_tdesc_amd64_avx_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
tdesc_amd64_avx_linux = result;
}

View File

@@ -14,5 +14,6 @@
<xi:include href="64bit-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
<xi:include href="64bit-avx.xml"/>
</target>

View File

@@ -151,23 +151,27 @@ initialize_tdesc_amd64_avx512_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
type = tdesc_create_struct (feature, "br128");
@@ -200,12 +204,12 @@ initialize_tdesc_amd64_avx512_linux (void)
field_type = tdesc_named_type (feature, "_bndcfgu");
tdesc_add_field (type, "config", field_type);
tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
tdesc_create_reg (feature, "bnd0raw", 76, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", 77, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd2raw", 78, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd3raw", 79, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bndcfgu", 80, 1, NULL, 64, "cfgu");
tdesc_create_reg (feature, "bndstatus", 81, 1, NULL, 64, "status");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
field_type = tdesc_named_type (feature, "ieee_single");
@@ -245,78 +249,78 @@ initialize_tdesc_amd64_avx512_linux (void)
field_type = tdesc_named_type (feature, "uint128");
tdesc_create_vector (feature, "v2ui128", field_type, 2);
tdesc_create_reg (feature, "xmm16", 80, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm17", 81, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm18", 82, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm19", 83, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm20", 84, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm21", 85, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm22", 86, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm23", 87, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm24", 88, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm25", 89, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm26", 90, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm27", 91, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm28", 92, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm29", 93, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm30", 94, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm31", 95, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "ymm16h", 96, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm17h", 97, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm18h", 98, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm19h", 99, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm20h", 100, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm21h", 101, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm22h", 102, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm23h", 103, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm24h", 104, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm25h", 105, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm26h", 106, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm27h", 107, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm28h", 108, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm29h", 109, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm30h", 110, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm31h", 111, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "k0", 112, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k1", 113, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k2", 114, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k3", 115, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k4", 116, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k5", 117, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k6", 118, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k7", 119, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "zmm0h", 120, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm1h", 121, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm2h", 122, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm3h", 123, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm4h", 124, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm5h", 125, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm6h", 126, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm7h", 127, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm8h", 128, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm9h", 129, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm10h", 130, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm11h", 131, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm12h", 132, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm13h", 133, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm14h", 134, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm15h", 135, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm16h", 136, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm17h", 137, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm18h", 138, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm19h", 139, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm20h", 140, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm21h", 141, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm22h", 142, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm23h", 143, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm24h", 144, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm25h", 145, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm26h", 146, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm27h", 147, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm28h", 148, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm29h", 149, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm30h", 150, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm31h", 151, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "xmm16", 82, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm17", 83, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm18", 84, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm19", 85, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm20", 86, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm21", 87, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm22", 88, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm23", 89, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm24", 90, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm25", 91, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm26", 92, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm27", 93, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm28", 94, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm29", 95, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm30", 96, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm31", 97, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "ymm16h", 98, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm17h", 99, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm18h", 100, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm19h", 101, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm20h", 102, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm21h", 103, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm22h", 104, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm23h", 105, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm24h", 106, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm25h", 107, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm26h", 108, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm27h", 109, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm28h", 110, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm29h", 111, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm30h", 112, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm31h", 113, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "k0", 114, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k1", 115, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k2", 116, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k3", 117, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k4", 118, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k5", 119, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k6", 120, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k7", 121, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "zmm0h", 122, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm1h", 123, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm2h", 124, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm3h", 125, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm4h", 126, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm5h", 127, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm6h", 128, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm7h", 129, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm8h", 130, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm9h", 131, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm10h", 132, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm11h", 133, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm12h", 134, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm13h", 135, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm14h", 136, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm15h", 137, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm16h", 138, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm17h", 139, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm18h", 140, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm19h", 141, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm20h", 142, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm21h", 143, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm22h", 144, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm23h", 145, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm24h", 146, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm25h", 147, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm26h", 148, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm27h", 149, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm28h", 150, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm29h", 151, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm30h", 152, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm31h", 153, 1, NULL, 256, "v2ui128");
tdesc_amd64_avx512_linux = result;
}

View File

@@ -14,6 +14,7 @@
<xi:include href="64bit-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
<xi:include href="64bit-avx.xml"/>
<xi:include href="64bit-mpx.xml"/>
<xi:include href="64bit-avx512.xml"/>

View File

@@ -151,5 +151,9 @@ initialize_tdesc_amd64_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
tdesc_amd64_linux = result;
}

View File

@@ -14,4 +14,5 @@
<xi:include href="64bit-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
</target>

View File

@@ -151,23 +151,27 @@ initialize_tdesc_amd64_mpx_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
type = tdesc_create_struct (feature, "br128");
@@ -200,12 +204,12 @@ initialize_tdesc_amd64_mpx_linux (void)
field_type = tdesc_named_type (feature, "_bndcfgu");
tdesc_add_field (type, "config", field_type);
tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
tdesc_create_reg (feature, "bnd0raw", 76, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", 77, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd2raw", 78, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd3raw", 79, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bndcfgu", 80, 1, NULL, 64, "cfgu");
tdesc_create_reg (feature, "bndstatus", 81, 1, NULL, 64, "status");
tdesc_amd64_mpx_linux = result;
}

View File

@@ -14,6 +14,7 @@
<xi:include href="64bit-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
<xi:include href="64bit-avx.xml"/>
<xi:include href="64bit-mpx.xml"/>
</target>

View File

@@ -151,23 +151,27 @@ initialize_tdesc_x32_avx_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
tdesc_x32_avx_linux = result;
}

View File

@@ -14,5 +14,6 @@
<xi:include href="x32-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
<xi:include href="64bit-avx.xml"/>
</target>

View File

@@ -151,23 +151,27 @@ initialize_tdesc_x32_avx512_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm0h", 60, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm1h", 61, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm2h", 62, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm3h", 63, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm4h", 64, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm5h", 65, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm6h", 66, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm7h", 67, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm8h", 68, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm9h", 69, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm10h", 70, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm11h", 71, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm12h", 72, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm13h", 73, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm14h", 74, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm15h", 75, 1, NULL, 128, "uint128");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
type = tdesc_create_struct (feature, "br128");
@@ -200,12 +204,12 @@ initialize_tdesc_x32_avx512_linux (void)
field_type = tdesc_named_type (feature, "_bndcfgu");
tdesc_add_field (type, "config", field_type);
tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
tdesc_create_reg (feature, "bnd0raw", 76, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", 77, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd2raw", 78, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd3raw", 79, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bndcfgu", 80, 1, NULL, 64, "cfgu");
tdesc_create_reg (feature, "bndstatus", 81, 1, NULL, 64, "status");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
field_type = tdesc_named_type (feature, "ieee_single");
@@ -245,78 +249,78 @@ initialize_tdesc_x32_avx512_linux (void)
field_type = tdesc_named_type (feature, "uint128");
tdesc_create_vector (feature, "v2ui128", field_type, 2);
tdesc_create_reg (feature, "xmm16", 80, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm17", 81, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm18", 82, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm19", 83, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm20", 84, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm21", 85, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm22", 86, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm23", 87, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm24", 88, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm25", 89, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm26", 90, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm27", 91, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm28", 92, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm29", 93, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm30", 94, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm31", 95, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "ymm16h", 96, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm17h", 97, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm18h", 98, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm19h", 99, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm20h", 100, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm21h", 101, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm22h", 102, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm23h", 103, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm24h", 104, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm25h", 105, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm26h", 106, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm27h", 107, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm28h", 108, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm29h", 109, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm30h", 110, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm31h", 111, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "k0", 112, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k1", 113, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k2", 114, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k3", 115, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k4", 116, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k5", 117, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k6", 118, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k7", 119, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "zmm0h", 120, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm1h", 121, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm2h", 122, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm3h", 123, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm4h", 124, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm5h", 125, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm6h", 126, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm7h", 127, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm8h", 128, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm9h", 129, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm10h", 130, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm11h", 131, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm12h", 132, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm13h", 133, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm14h", 134, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm15h", 135, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm16h", 136, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm17h", 137, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm18h", 138, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm19h", 139, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm20h", 140, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm21h", 141, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm22h", 142, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm23h", 143, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm24h", 144, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm25h", 145, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm26h", 146, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm27h", 147, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm28h", 148, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm29h", 149, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm30h", 150, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm31h", 151, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "xmm16", 82, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm17", 83, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm18", 84, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm19", 85, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm20", 86, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm21", 87, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm22", 88, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm23", 89, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm24", 90, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm25", 91, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm26", 92, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm27", 93, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm28", 94, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm29", 95, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm30", 96, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm31", 97, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "ymm16h", 98, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm17h", 99, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm18h", 100, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm19h", 101, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm20h", 102, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm21h", 103, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm22h", 104, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm23h", 105, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm24h", 106, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm25h", 107, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm26h", 108, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm27h", 109, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm28h", 110, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm29h", 111, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm30h", 112, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "ymm31h", 113, 1, NULL, 128, "uint128");
tdesc_create_reg (feature, "k0", 114, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k1", 115, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k2", 116, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k3", 117, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k4", 118, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k5", 119, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k6", 120, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k7", 121, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "zmm0h", 122, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm1h", 123, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm2h", 124, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm3h", 125, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm4h", 126, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm5h", 127, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm6h", 128, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm7h", 129, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm8h", 130, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm9h", 131, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm10h", 132, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm11h", 133, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm12h", 134, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm13h", 135, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm14h", 136, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm15h", 137, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm16h", 138, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm17h", 139, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm18h", 140, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm19h", 141, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm20h", 142, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm21h", 143, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm22h", 144, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm23h", 145, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm24h", 146, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm25h", 147, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm26h", 148, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm27h", 149, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm28h", 150, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm29h", 151, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm30h", 152, 1, NULL, 256, "v2ui128");
tdesc_create_reg (feature, "zmm31h", 153, 1, NULL, 256, "v2ui128");
tdesc_x32_avx512_linux = result;
}

View File

@@ -14,6 +14,7 @@
<xi:include href="x32-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
<xi:include href="64bit-avx.xml"/>
<xi:include href="64bit-mpx.xml"/>
<xi:include href="64bit-avx512.xml"/>

View File

@@ -151,5 +151,9 @@ initialize_tdesc_x32_linux (void)
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.seg");
tdesc_create_reg (feature, "fs_base", 58, 1, NULL, 64, "data_ptr");
tdesc_create_reg (feature, "gs_base", 59, 1, NULL, 64, "data_ptr");
tdesc_x32_linux = result;
}

View File

@@ -14,4 +14,5 @@
<xi:include href="x32-core.xml"/>
<xi:include href="64bit-sse.xml"/>
<xi:include href="64bit-linux.xml"/>
<xi:include href="64bit-seg.xml"/>
</target>

View File

@@ -61,6 +61,8 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base
128:ymm0h
128:ymm1h
128:ymm2h

View File

@@ -61,6 +61,8 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base
128:ymm0h
128:ymm1h
128:ymm2h

View File

@@ -61,3 +61,5 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base

View File

@@ -61,6 +61,8 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base
128:ymm0h
128:ymm1h
128:ymm2h

View File

@@ -61,6 +61,8 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base
128:ymm0h
128:ymm1h
128:ymm2h

View File

@@ -61,6 +61,8 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base
128:ymm0h
128:ymm1h
128:ymm2h

View File

@@ -61,3 +61,5 @@ expedite:rbp,rsp,rip
128:xmm15
32:mxcsr
64:orig_rax
64:fs_base
64:gs_base