Clear static_links in reread_symbols
[deliverable/binutils-gdb.git] / gdb / amd64-tdep.c
index 975c907527fc1599f3b6c59b5f5ef897507aec20..088542d72b49ca6f5c2a5d58e1af3bf0b03e1ab2 100644 (file)
@@ -3225,7 +3225,8 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
 static void
 amd64_none_init_abi (gdbarch_info info, gdbarch *arch)
 {
-  amd64_init_abi (info, arch, amd64_target_description (X86_XSTATE_SSE_MASK));
+  amd64_init_abi (info, arch, amd64_target_description (X86_XSTATE_SSE_MASK,
+                                                       true));
 }
 
 static struct type *
@@ -3266,25 +3267,27 @@ static void
 amd64_x32_none_init_abi (gdbarch_info info, gdbarch *arch)
 {
   amd64_x32_init_abi (info, arch,
-                     amd64_target_description (X86_XSTATE_SSE_MASK));
+                     amd64_target_description (X86_XSTATE_SSE_MASK, true));
 }
 
 /* Return the target description for a specified XSAVE feature mask.  */
 
 const struct target_desc *
-amd64_target_description (uint64_t xcr0)
+amd64_target_description (uint64_t xcr0, bool segments)
 {
   static target_desc *amd64_tdescs \
-    [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
+    [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/][2/*segments*/] = {};
   target_desc **tdesc;
 
   tdesc = &amd64_tdescs[(xcr0 & X86_XSTATE_AVX) ? 1 : 0]
     [(xcr0 & X86_XSTATE_MPX) ? 1 : 0]
     [(xcr0 & X86_XSTATE_AVX512) ? 1 : 0]
-    [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
+    [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0]
+    [segments ? 1 : 0];
 
   if (*tdesc == NULL)
-    *tdesc = amd64_create_target_description (xcr0, false, false);
+    *tdesc = amd64_create_target_description (xcr0, false, false,
+                                             segments);
 
   return *tdesc;
 }
@@ -3314,7 +3317,7 @@ _initialize_amd64_tdep (void)
 
   for (auto &a : xml_masks)
     {
-      auto tdesc = amd64_target_description (a.mask);
+      auto tdesc = amd64_target_description (a.mask, true);
 
       selftests::record_xml_tdesc (a.xml, tdesc);
     }
@@ -3349,9 +3352,9 @@ amd64_supply_fxsave (struct regcache *regcache, int regnum,
       const gdb_byte *regs = (const gdb_byte *) fxsave;
 
       if (regnum == -1 || regnum == I387_FISEG_REGNUM (tdep))
-       regcache_raw_supply (regcache, I387_FISEG_REGNUM (tdep), regs + 12);
+       regcache->raw_supply (I387_FISEG_REGNUM (tdep), regs + 12);
       if (regnum == -1 || regnum == I387_FOSEG_REGNUM (tdep))
-       regcache_raw_supply (regcache, I387_FOSEG_REGNUM (tdep), regs + 20);
+       regcache->raw_supply (I387_FOSEG_REGNUM (tdep), regs + 20);
     }
 }
 
@@ -3370,7 +3373,6 @@ amd64_supply_xsave (struct regcache *regcache, int regnum,
       && gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 64)
     {
       const gdb_byte *regs = (const gdb_byte *) xsave;
-      static const gdb_byte zero[I386_MAX_REGISTER_SIZE] = { 0 };
       ULONGEST clear_bv;
 
       clear_bv = i387_xsave_get_clear_bv (gdbarch, xsave);
@@ -3381,11 +3383,9 @@ amd64_supply_xsave (struct regcache *regcache, int regnum,
       if (!(clear_bv & X86_XSTATE_X87))
        {
          if (regnum == -1 || regnum == I387_FISEG_REGNUM (tdep))
-           regcache_raw_supply (regcache, I387_FISEG_REGNUM (tdep),
-                                regs + 12);
+           regcache->raw_supply (I387_FISEG_REGNUM (tdep), regs + 12);
          if (regnum == -1 || regnum == I387_FOSEG_REGNUM (tdep))
-           regcache_raw_supply (regcache, I387_FOSEG_REGNUM (tdep),
-                                regs + 20);
+           regcache->raw_supply (I387_FOSEG_REGNUM (tdep), regs + 20);
        }
     }
 }
@@ -3408,9 +3408,9 @@ amd64_collect_fxsave (const struct regcache *regcache, int regnum,
   if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 64)
     {
       if (regnum == -1 || regnum == I387_FISEG_REGNUM (tdep))
-       regcache_raw_collect (regcache, I387_FISEG_REGNUM (tdep), regs + 12);
+       regcache->raw_collect (I387_FISEG_REGNUM (tdep), regs + 12);
       if (regnum == -1 || regnum == I387_FOSEG_REGNUM (tdep))
-       regcache_raw_collect (regcache, I387_FOSEG_REGNUM (tdep), regs + 20);
+       regcache->raw_collect (I387_FOSEG_REGNUM (tdep), regs + 20);
     }
 }
 
@@ -3429,10 +3429,10 @@ amd64_collect_xsave (const struct regcache *regcache, int regnum,
   if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 64)
     {
       if (regnum == -1 || regnum == I387_FISEG_REGNUM (tdep))
-       regcache_raw_collect (regcache, I387_FISEG_REGNUM (tdep),
+       regcache->raw_collect (I387_FISEG_REGNUM (tdep),
                              regs + 12);
       if (regnum == -1 || regnum == I387_FOSEG_REGNUM (tdep))
-       regcache_raw_collect (regcache, I387_FOSEG_REGNUM (tdep),
+       regcache->raw_collect (I387_FOSEG_REGNUM (tdep),
                              regs + 20);
     }
 }
This page took 0.049134 seconds and 4 git commands to generate.