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:
parent
b348d11b70
commit
ae71e7b598
@ -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'
|
||||
|
@ -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."));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user