Remove symtab links from dwarf2_psymtab and dwarf2_per_cu_quick_data
[deliverable/binutils-gdb.git] / gdb / riscv-linux-nat.c
index 043bbd44b6825e0291f8d5c610fcd0fc8d0e5a8a..4f78dfdc6a20f447863b1821a598c0434afaa5e7 100644 (file)
 #include "linux-nat.h"
 #include "riscv-tdep.h"
 #include "inferior.h"
-#include "target-descriptions.h"
 
 #include "elf/common.h"
 
+#include "nat/riscv-linux-tdesc.h"
+
 #include <sys/ptrace.h>
 
 /* Work around glibc header breakage causing ELF_NFPREG not to be usable.  */
@@ -200,53 +201,9 @@ fill_fpregset (const struct regcache *regcache, prfpregset_t *fpregs,
 const struct target_desc *
 riscv_linux_nat_target::read_description ()
 {
-  struct riscv_gdbarch_features features;
-  elf_fpregset_t regs;
-  int flen;
-  int tid;
-
-  /* Figuring out xlen is easy.  */
-  features.xlen = sizeof (elf_greg_t);
-
-  tid = inferior_ptid.lwp ();
-
-  /* Start with no f-registers.  */
-  features.flen = 0;
-
-  /* How much worth of f-registers can we fetch if any?  */
-  for (flen = sizeof (regs.__f.__f[0]); ; flen *= 2)
-    {
-      size_t regset_size;
-      struct iovec iov;
-
-      /* Regsets have a uniform slot size, so we count FSCR like
-        an FP data register.  */
-      regset_size = ELF_NFPREG * flen;
-      if (regset_size > sizeof (regs))
-       break;
-
-      iov.iov_base = &regs;
-      iov.iov_len = regset_size;
-      if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET,
-                 (PTRACE_TYPE_ARG3) &iov) == -1)
-       {
-         switch (errno)
-           {
-           case EINVAL:
-             continue;
-           case EIO:
-             break;
-           default:
-             perror_with_name (_("Couldn't get registers"));
-             break;
-           }
-       }
-      else
-       features.flen = flen;
-      break;
-    }
-
-  return riscv_create_target_description (features);
+  const struct riscv_gdbarch_features features
+    = riscv_linux_read_features (inferior_ptid.lwp ());
+  return riscv_lookup_target_description (features);
 }
 
 /* Fetch REGNUM (or all registers if REGNUM == -1) from the target
This page took 0.037071 seconds and 4 git commands to generate.