diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e965e26d73..306805025a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2017-09-04 Yao Qi + + * i386-go32-tdep.c: Include x86-xstate.h. + (i386_go32_init_abi): Call i386_target_description. + * i386-tdep.c (i386_target_description): Return tdesc_i386_mmx + if xcr0 is X86_XSTATE_X87_MASK. + * i386-tdep.h (tdesc_i386): Remove the declaration. + (tdesc_i386_mmx): Likewise. + 2017-09-04 Yao Qi * i386-fbsd-tdep.c (i386fbsd_core_read_xcr0): Return diff --git a/gdb/i386-go32-tdep.c b/gdb/i386-go32-tdep.c index 5bd4857977..6778e5238d 100644 --- a/gdb/i386-go32-tdep.c +++ b/gdb/i386-go32-tdep.c @@ -19,6 +19,7 @@ #include "defs.h" #include "i386-tdep.h" +#include "x86-xstate.h" #include "target-descriptions.h" #include "osabi.h" @@ -34,7 +35,7 @@ i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* DJGPP does not support the SSE registers. */ if (!tdesc_has_registers (info.target_desc)) - tdep->tdesc = tdesc_i386_mmx; + tdep->tdesc = i386_target_description (X86_XSTATE_X87_MASK); /* Native compiler is GCC, which uses the SVR4 register numbering even in COFF and STABS. See the comment in i386_gdbarch_init, diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 9d0dd3d5da..d162e9267e 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -8730,6 +8730,10 @@ i386_target_description (uint64_t xcr0) return tdesc_i386_mpx; case X86_XSTATE_AVX_MASK: return tdesc_i386_avx; + case X86_XSTATE_SSE_MASK: + return tdesc_i386; + case X86_XSTATE_X87_MASK: + return tdesc_i386_mmx; default: return tdesc_i386; } diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h index 1ce89fcf65..99b89e747d 100644 --- a/gdb/i386-tdep.h +++ b/gdb/i386-tdep.h @@ -339,9 +339,6 @@ enum record_i386_regnum /* Size of the largest register. */ #define I386_MAX_REGISTER_SIZE 64 -extern struct target_desc *tdesc_i386; -extern struct target_desc *tdesc_i386_mmx; - /* Types for i386-specific registers. */ extern struct type *i387_ext_type (struct gdbarch *gdbarch);