gdb: introduce symtab_create_debug_printf
[binutils-gdb.git] / gdb / amd64-linux-nat.c
index f98d992070a340d0c37d249f0a8c10a3c5d71aa9..3d28d7e1d5715f16b81a49ecbdcedd17e5cd9e0e 100644 (file)
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux x86-64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2022 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -99,7 +99,7 @@ static int amd64_linux_gregset32_reg_offset[] =
 
 static void
 amd64_linux_collect_native_gregset (const struct regcache *regcache,
-                                   void *gregs, int regnum)
+                                   void *gregs, int regnum)
 {
   amd64_collect_native_gregset (regcache, gregs, regnum);
 
@@ -259,30 +259,6 @@ amd64_linux_nat_target::fetch_registers (struct regcache *regcache, int regnum)
 
          amd64_supply_fxsave (regcache, -1, &fpregs);
        }
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-      {
-       /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
-          fs_base and gs_base fields of user_regs_struct can be
-          used directly.  */
-       unsigned long base;
-
-       if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
-         {
-           if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_FS) < 0)
-             perror_with_name (_("Couldn't get segment register fs_base"));
-
-           regcache->raw_supply (AMD64_FSBASE_REGNUM, &base);
-         }
-
-       if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
-         {
-           if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_GS) < 0)
-             perror_with_name (_("Couldn't get segment register gs_base"));
-
-           regcache->raw_supply (AMD64_GSBASE_REGNUM, &base);
-         }
-      }
-#endif
     }
 }
 
@@ -348,30 +324,6 @@ amd64_linux_nat_target::store_registers (struct regcache *regcache, int regnum)
          if (ptrace (PTRACE_SETFPREGS, tid, 0, (long) &fpregs) < 0)
            perror_with_name (_("Couldn't write floating point status"));
        }
-
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-      {
-       /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
-          fs_base and gs_base fields of user_regs_struct can be
-          used directly.  */
-       void *base;
-
-       if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
-         {
-           regcache->raw_collect (AMD64_FSBASE_REGNUM, &base);
-
-           if (ptrace (PTRACE_ARCH_PRCTL, tid, base, ARCH_SET_FS) < 0)
-             perror_with_name (_("Couldn't write segment register fs_base"));
-         }
-       if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
-         {
-
-           regcache->raw_collect (AMD64_GSBASE_REGNUM, &base);
-           if (ptrace (PTRACE_ARCH_PRCTL, tid, base, ARCH_SET_GS) < 0)
-             perror_with_name (_("Couldn't write segment register gs_base"));
-         }
-      }
-#endif
     }
 }
 \f
@@ -381,9 +333,9 @@ amd64_linux_nat_target::store_registers (struct regcache *regcache, int regnum)
 
 ps_err_e
 ps_get_thread_area (struct ps_prochandle *ph,
-                    lwpid_t lwpid, int idx, void **base)
+                   lwpid_t lwpid, int idx, void **base)
 {
-  if (gdbarch_bfd_arch_info (target_gdbarch ())->bits_per_word == 32)
+  if (gdbarch_bfd_arch_info (ph->thread->inf->gdbarch)->bits_per_word == 32)
     {
       unsigned int base_addr;
       ps_err_e result;
@@ -408,11 +360,7 @@ ps_get_thread_area (struct ps_prochandle *ph,
       switch (idx)
        {
        case FS:
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
            {
-             /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
-                fs_base and gs_base fields of user_regs_struct can be
-                used directly.  */
              unsigned long fs;
              errno = 0;
              fs = ptrace (PTRACE_PEEKUSER, lwpid,
@@ -423,12 +371,10 @@ ps_get_thread_area (struct ps_prochandle *ph,
                  return PS_OK;
                }
            }
-#endif
-         if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
-           return PS_OK;
+
          break;
+
        case GS:
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
            {
              unsigned long gs;
              errno = 0;
@@ -440,10 +386,8 @@ ps_get_thread_area (struct ps_prochandle *ph,
                  return PS_OK;
                }
            }
-#endif
-         if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
-           return PS_OK;
          break;
+
        default:                   /* Should not happen.  */
          return PS_BADADDR;
        }
@@ -478,8 +422,9 @@ amd64_linux_nat_target::low_siginfo_fixup (siginfo_t *ptrace,
     return false;
 }
 
+void _initialize_amd64_linux_nat ();
 void
-_initialize_amd64_linux_nat (void)
+_initialize_amd64_linux_nat ()
 {
   amd64_native_gregset32_reg_offset = amd64_linux_gregset32_reg_offset;
   amd64_native_gregset32_num_regs = I386_LINUX_NUM_REGS;