+2017-09-04  Yao Qi  <yao.qi@linaro.org>
+
+       * amd64-darwin-tdep.c: Include "x86-xstate.h".
+       (x86_darwin_init_abi_64): Call amd64_target_description.
+       * amd64-dicos-tdep.c: Likewise.
+       * amd64-fbsd-nat.c: Likewise.
+       * amd64-fbsd-tdep.c: Likewise.
+       * amd64-nbsd-tdep.c: Likewise.
+       * amd64-obsd-tdep.c: Likewise.
+       * amd64-sol2-tdep.c: Likewise.
+       * amd64-windows-tdep.c: Likewise.
+       * amd64-tdep.h (tdesc_amd64): Remove the declaration.
+
 2017-09-04  Simon Marchi  <simon.marchi@ericsson.com>
 
        * btrace.h (btrace_insn_s, DEF_VEC_O (btrace_insn_s)): Remove.
 
 #include "objfiles.h"
 
 #include "i387-tdep.h"
+#include "x86-xstate.h"
 #include "amd64-tdep.h"
 #include "osabi.h"
 #include "ui-out.h"
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
 
   tdep->struct_return = reg_struct_return;
 
 
 #include "defs.h"
 #include "osabi.h"
 #include "amd64-tdep.h"
+#include "x86-xstate.h"
 #include "dicos-tdep.h"
 
 static void
 amd64_dicos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
 
   dicos_init_abi (gdbarch);
 }
 
     }
 #endif
   if (is64)
-    return tdesc_amd64;
+    return amd64_target_description (X86_XSTATE_SSE_MASK);
   else
     return tdesc_i386;
 }
 
   tdep->gregset_num_regs = ARRAY_SIZE (amd64fbsd_r_reg_offset);
   tdep->sizeof_gregset = 22 * 8;
 
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
 
   tdep->sigtramp_p = amd64fbsd_sigtramp_p;
   tdep->sigtramp_start = amd64fbsd_sigtramp_start_addr;
 
 #include "symtab.h"
 
 #include "amd64-tdep.h"
+#include "x86-xstate.h"
 #include "nbsd-tdep.h"
 #include "solib-svr4.h"
 
   tdep->gregset_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
   tdep->sizeof_gregset = 26 * 8;
 
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
 
   tdep->jb_pc_offset = 7 * 8;
 
 
 #include "obsd-tdep.h"
 #include "amd64-tdep.h"
 #include "i387-tdep.h"
+#include "x86-xstate.h"
 #include "solib-svr4.h"
 #include "bsd-uthread.h"
 
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
   obsd_init_abi (info, gdbarch);
 
   /* Initialize general-purpose register set details.  */
 
 
 #include "sol2-tdep.h"
 #include "amd64-tdep.h"
+#include "x86-xstate.h"
 #include "solib-svr4.h"
 
 /* Mapping between the general-purpose registers in gregset_t format
   tdep->gregset_num_regs = ARRAY_SIZE (amd64_sol2_gregset_reg_offset);
   tdep->sizeof_gregset = 28 * 8;
 
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
 
   tdep->sigtramp_p = amd64_sol2_sigtramp_p;
   tdep->sigcontext_addr = amd64_sol2_mcontext_addr;
 
 
 #define AMD64_NUM_REGS         (AMD64_GSBASE_REGNUM + 1)
 
-extern struct target_desc *tdesc_amd64;
-
 extern struct displaced_step_closure *amd64_displaced_step_copy_insn
   (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
    struct regcache *regs);
 
 #include "defs.h"
 #include "osabi.h"
 #include "amd64-tdep.h"
+#include "x86-xstate.h"
 #include "gdbtypes.h"
 #include "gdbcore.h"
 #include "regcache.h"
   */
   frame_unwind_append_unwinder (gdbarch, &amd64_windows_frame_unwind);
 
-  amd64_init_abi (info, gdbarch, tdesc_amd64);
+  amd64_init_abi (info, gdbarch,
+                 amd64_target_description (X86_XSTATE_SSE_MASK));
 
   windows_init_abi (info, gdbarch);