i386-tdep: Verify architecture before proceeding with `set/show mpx'

Make sure the architecture is `bfd_arch_i386' before handling the `set
mpx' and `show mpx' commands, avoiding the issue with `i386_mpx_enabled'
interpreting `gdbarch->tdep' according to the `struct gdbarch_tdep'
definition in i386-tdep.h while indeed in a multi-target configuration
it may have a different layout and cause GDB to crash or at least
misbehave.

	gdb/
	* i386-tdep.c (i386_mpx_info_bounds): Make sure the architecture
	is `bfd_arch_i386' before proceeding.
	(i386_mpx_set_bounds): Likewise.
This commit is contained in:
Maciej W. Rozycki 2016-10-17 16:15:33 +01:00
parent b348d11b70
commit ae71e7b598
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2016-10-18 Maciej W. Rozycki <macro@imgtec.com>
* i386-tdep.c (i386_mpx_info_bounds): Make sure the architecture
is `bfd_arch_i386' before proceeding.
(i386_mpx_set_bounds): Likewise.
2016-10-18 Maciej W. Rozycki <macro@imgtec.com>
* tilegx-tdep.c (tilegx_analyze_prologue): Use the `long long'

View File

@ -8857,7 +8857,8 @@ i386_mpx_info_bounds (char *args, int from_tty)
struct gdbarch *gdbarch = get_current_arch ();
struct type *data_ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
if (!i386_mpx_enabled ())
if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_i386
|| !i386_mpx_enabled ())
{
printf_unfiltered (_("Intel Memory Protection Extensions not "
"supported on this target.\n"));
@ -8900,7 +8901,8 @@ i386_mpx_set_bounds (char *args, int from_tty)
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct type *data_ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
if (!i386_mpx_enabled ())
if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_i386
|| !i386_mpx_enabled ())
error (_("Intel Memory Protection Extensions not supported\
on this target."));