aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/linux-x86-low.c
diff options
context:
space:
mode:
authorWalfred Tedeschi <walfred.tedeschi@intel.com>2016-04-19 15:44:32 +0200
committerWalfred Tedeschi <walfred.tedeschi@intel.com>2016-04-19 15:44:32 +0200
commit2b863f512dce3c2469cf40e4559fb571b1b01658 (patch)
tree3d43848782e55a1a897251a1d365d8ec6856e9d9 /gdb/gdbserver/linux-x86-low.c
parentbb7dc663abaa72601edfdce3ca7aff6fdb43bffe (diff)
downloadgdb-2b863f512dce3c2469cf40e4559fb571b1b01658.zip
gdb-2b863f512dce3c2469cf40e4559fb571b1b01658.tar.gz
gdb-2b863f512dce3c2469cf40e4559fb571b1b01658.tar.bz2
Add target descriptions for AVX + MPX
The current MPX target descriptions assume that MPX is always combined with AVX, however that's not correct. We can have machines with MPX and without AVX; or machines with AVX and without MPX. This patch adds new target descriptions for machines that support both MPX and AVX, as duplicates of the existing MPX descriptions. The following commit will remove AVX from the MPX-only descriptions. 2016-04-16 Walfred Tedeschi <walfred.tedeschi@intel.com> gdb/ChangeLog: * amd64-linux-tdep.c (features/i386/amd64-avx-mpx-linux.c): New include. (amd64_linux_core_read_description): Add case for X86_XSTATE_AVX_MPX_MASK. (_initialize_amd64_linux_tdep): Call initialize_tdesc_amd64_avx_mpx_linux. * amd64-linux-tdep.h (tdesc_amd64_avx_mpx_linux): New definition. * amd64-tdep.c (features/i386/amd64-avx-mpx.c): New include. (amd64_target_description): Add case for X86_XSTATE_AVX_MPX_MASK. (_initialize_amd64_tdep): Call initialize_tdesc_amd64_avx_mpx. * common/x86-xstate.h (X86_XSTATE_MPX_MASK): Remove AVX bits. (X86_XSTATE_AVX_MPX_MASK): New case. * features/Makefile (i386/i386-avx-mpx, i386/i386-avx-mpx-linux) (i386/amd64-avx-mpx, i386/amd64-avx-mpx-linux): New rules. (i386/i386-avx-mpx-expedite, i386/i386-avx-mpx-linux-expedite) (i386/amd64-avx-mpx-expedite, i386/amd64-avx-mpx-linux-expedite): New expedites. * i386-linux-tdep.c (features/i386/i386-avx-mpx-linux.c): New include. (i386_linux_core_read_description): Add case X86_XSTATE_AVX_MPX_MASK. (_initialize_i386_linux_tdep): Call initialize_tdesc_i386_avx_mpx_linux. * i386-linux-tdep.h (tdesc_i386_avx_mpx_linux): New include. * i386-tdep.c (features/i386/i386-avx-mpx.c): New include. (i386_target_description): Add case for X86_XSTATE_AVX_MPX_MASK. * x86-linux-nat.c (x86_linux_read_description): Add case for X86_XSTATE_AVX_MPX_MASK. * features/i386/amd64-avx-mpx-linux.xml: New file. * features/i386/i386-avx-mpx-linux.xml: New file. * features/i386/i386-avx-mpx.xml: New file. * features/i386/amd64-avx-mpx.xml: New file. * features/i386/amd64-avx-mpx-linux.c: Generated. * features/i386/amd64-avx-mpx.c: Generated. * features/i386/i386-avx-mpx-linux.c: Generated. * features/i386/i386-avx-mpx.c: Generated. * regformats/i386/amd64-avx-mpx-linux.dat: Generated. * regformats/i386/amd64-avx-mpx.dat: Generated. * regformats/i386/i386-avx-mpx-linux.dat: Generated. * regformats/i386/i386-avx-mpx.dat: Generated. gdb/gdbserver/ChangeLog: * Makefile.in (clean): Add removal for i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c. (i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c) (amd64-avx-mpx-linux.c): New rules. (amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule. * configure.srv (srv_i386_regobj): Add i386-avx-mpx.o. (srv_i386_linux_regobj): Add i386-avx-mpx-linux.o. (srv_amd64_regobj): Add amd64-avx-mpx.o. (srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o. (srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml. (srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml. (srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml. (srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml. (ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o. (ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o. * linux-x86-low.c (x86_linux_read_description): Add case for X86_XSTATE_AVX_MPX_MASK. (x86_get_ipa_tdesc_idx): Add cases for avx_mpx. (initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and init_registers_i386_avx_mpx_linux. * linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx. (initialize_low_tracepoint): Call init_registers_i386_avx_mpx_linux. * linux-amd64-ipa.c (get_ipa_tdesc): Add case for avx_mpx. (initialize_low_tracepoint): Call init_registers_amd64_avx_mpx_linux. * linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value. (init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux) (init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New declarations.
Diffstat (limited to 'gdb/gdbserver/linux-x86-low.c')
-rw-r--r--gdb/gdbserver/linux-x86-low.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index feaee92..2535959 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -789,6 +789,9 @@ x86_linux_read_description (void)
case X86_XSTATE_AVX512_MASK:
return tdesc_amd64_avx512_linux;
+ case X86_XSTATE_AVX_MPX_MASK:
+ return tdesc_amd64_avx_mpx_linux;
+
case X86_XSTATE_MPX_MASK:
return tdesc_amd64_mpx_linux;
@@ -836,6 +839,9 @@ x86_linux_read_description (void)
case (X86_XSTATE_MPX_MASK):
return tdesc_i386_mpx_linux;
+ case (X86_XSTATE_AVX_MPX_MASK):
+ return tdesc_i386_avx_mpx_linux;
+
case (X86_XSTATE_AVX_MASK):
return tdesc_i386_avx_linux;
@@ -2855,6 +2861,8 @@ x86_get_ipa_tdesc_idx (void)
return X86_TDESC_AVX;
if (tdesc == tdesc_amd64_mpx_linux)
return X86_TDESC_MPX;
+ if (tdesc == tdesc_amd64_avx_mpx_linux)
+ return X86_TDESC_AVX_MPX;
if (tdesc == tdesc_amd64_avx512_linux || tdesc == tdesc_x32_avx512_linux)
return X86_TDESC_AVX512;
#endif
@@ -2867,6 +2875,8 @@ x86_get_ipa_tdesc_idx (void)
return X86_TDESC_AVX;
if (tdesc == tdesc_i386_mpx_linux)
return X86_TDESC_MPX;
+ if (tdesc == tdesc_i386_avx_mpx_linux)
+ return X86_TDESC_AVX_MPX;
if (tdesc == tdesc_i386_avx512_linux)
return X86_TDESC_AVX512;
@@ -2928,6 +2938,7 @@ initialize_low_arch (void)
init_registers_amd64_avx_linux ();
init_registers_amd64_avx512_linux ();
init_registers_amd64_mpx_linux ();
+ init_registers_amd64_avx_mpx_linux ();
init_registers_x32_linux ();
init_registers_x32_avx_linux ();
@@ -2942,6 +2953,7 @@ initialize_low_arch (void)
init_registers_i386_avx_linux ();
init_registers_i386_avx512_linux ();
init_registers_i386_mpx_linux ();
+ init_registers_i386_avx_mpx_linux ();
tdesc_i386_linux_no_xml = XNEW (struct target_desc);
copy_target_description (tdesc_i386_linux_no_xml, tdesc_i386_linux);