gdb: LoongArch: Update status of the entire regset in regcache
authorHui Li <lihui@loongson.cn>
Thu, 6 Jul 2023 03:22:37 +0000 (11:22 +0800)
committerTiezhu Yang <yangtiezhu@loongson.cn>
Wed, 19 Jul 2023 14:00:03 +0000 (22:00 +0800)
In the current code, when a register is fetched, the entire regset
are fetched via ptrace, but only this register status is updated in
regcache, it needs to fetch the same regset through ptrace again if
another register in this regset is fetched later, this is obviously
unnecessary. It is proper to update the status of the entire regset
in regcache when fetching a register via ptrace.

Signed-off-by: Hui Li <lihui@loongson.cn>
Reviewed-By: Tom Tromey <tom@tromey.com>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
gdb/loongarch-linux-nat.c

index 5eb32b0a52a38aed4d5b01fa6d9eb24d45b89be4..40231d5d753cb80991ec25aa1dbcc8db00cf5542 100644 (file)
@@ -65,7 +65,7 @@ fetch_gregs_from_thread (struct regcache *regcache, int regnum, pid_t tid)
     if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, (long) &iov) < 0)
       perror_with_name (_("Couldn't get NT_PRSTATUS registers"));
     else
-      loongarch_gregset.supply_regset (nullptr, regcache, regnum,
+      loongarch_gregset.supply_regset (nullptr, regcache, -1,
                                       &regset, sizeof (regset));
   }
 }
@@ -116,7 +116,7 @@ fetch_fpregs_from_thread (struct regcache *regcache, int regnum, pid_t tid)
       if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, (long) &iovec) < 0)
        perror_with_name (_("Couldn't get NT_FPREGSET registers"));
       else
-       loongarch_fpregset.supply_regset (nullptr, regcache, regnum,
+       loongarch_fpregset.supply_regset (nullptr, regcache, -1,
                                          &regset, sizeof (regset));
     }
 }