[ARM] perror_with_name when failed to fetch/store registers
authorYao Qi <yao.qi@linaro.org>
Fri, 22 Jan 2016 09:01:09 +0000 (09:01 +0000)
committerYao Qi <yao.qi@linaro.org>
Fri, 22 Jan 2016 09:01:09 +0000 (09:01 +0000)
I see the following test fail on native arm-linux gdb testing...

(gdb) PASS: gdb.base/killed-outside.exp: registers: get pid of inferior
Executing on target: kill -9 2346    (timeout = 300)
spawn kill -9 2346^M
flushregs^M
Register cache flushed.^M
warning: Unable to fetch general registers.^M
PC not available^M
(gdb) PASS: gdb.base/killed-outside.exp: registers: flushregs
info threads^M
  Id   Target Id         Frame ^M
* 1    process 2346 "killed-outside" (gdb) FAIL: gdb.base/killed-outside.exp: registers: info threads (timeout)

since the inferior disappeared, ptrace will fail.  In that case, the
exception should be thrown, so that the caller can handle that.

gdb:

2016-01-22  Yao Qi  <yao.qi@linaro.org>

* arm-linux-nat.c (fetch_fpregs): Call perror_with_name
instead of warning.
(store_fpregs, fetch_regs, store_regs): Likewise.
(fetch_wmmx_regs, store_wmmx_regs): Likewise.
(fetch_vfp_regs, store_vfp_regs): Likewise.

gdb/ChangeLog
gdb/arm-linux-nat.c

index 0c86dffddfb0d8aecb0a6fb4f4654a9273714320..6da544ea4194dec4f017a117cedf1b635b27d82b 100644 (file)
@@ -1,3 +1,11 @@
+2016-01-22  Yao Qi  <yao.qi@linaro.org>
+
+       * arm-linux-nat.c (fetch_fpregs): Call perror_with_name
+       instead of warning.
+       (store_fpregs, fetch_regs, store_regs): Likewise.
+       (fetch_wmmx_regs, store_wmmx_regs): Likewise.
+       (fetch_vfp_regs, store_vfp_regs): Likewise.
+
 2016-01-21  Doug Evans  <dje@google.com>
 
        * breakpoint.c (init_breakpoint_sal): Add comment.
index ed72bb3c42acde2dc70150e88750c69f592c2e4e..d77ca9349849a07c8b18ab13f4a87fbb1f7412c0 100644 (file)
@@ -92,10 +92,7 @@ fetch_fpregs (struct regcache *regcache)
     ret = ptrace (PT_GETFPREGS, tid, 0, fp);
 
   if (ret < 0)
-    {
-      warning (_("Unable to fetch the floating point registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch the floating point registers."));
 
   /* Fetch fpsr.  */
   regcache_raw_supply (regcache, ARM_FPS_REGNUM,
@@ -133,10 +130,7 @@ store_fpregs (const struct regcache *regcache)
     ret = ptrace (PT_GETFPREGS, tid, 0, fp);
 
   if (ret < 0)
-    {
-      warning (_("Unable to fetch the floating point registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch the floating point registers."));
 
   /* Store fpsr.  */
   if (REG_VALID == regcache_register_status (regcache, ARM_FPS_REGNUM))
@@ -160,10 +154,7 @@ store_fpregs (const struct regcache *regcache)
     ret = ptrace (PTRACE_SETFPREGS, tid, 0, fp);
 
   if (ret < 0)
-    {
-      warning (_("Unable to store floating point registers."));
-      return;
-    }
+    perror_with_name (_("Unable to store floating point registers."));
 }
 
 /* Fetch all general registers of the process and store into
@@ -191,10 +182,7 @@ fetch_regs (struct regcache *regcache)
     ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
 
   if (ret < 0)
-    {
-      warning (_("Unable to fetch general registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch general registers."));
 
   aarch32_gp_regcache_supply (regcache, (uint32_t *) regs, arm_apcs_32);
 }
@@ -222,10 +210,7 @@ store_regs (const struct regcache *regcache)
     ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
 
   if (ret < 0)
-    {
-      warning (_("Unable to fetch general registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch general registers."));
 
   aarch32_gp_regcache_collect (regcache, (uint32_t *) regs, arm_apcs_32);
 
@@ -242,10 +227,7 @@ store_regs (const struct regcache *regcache)
     ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
 
   if (ret < 0)
-    {
-      warning (_("Unable to store general registers."));
-      return;
-    }
+    perror_with_name (_("Unable to store general registers."));
 }
 
 /* Fetch all WMMX registers of the process and store into
@@ -264,10 +246,7 @@ fetch_wmmx_regs (struct regcache *regcache)
 
   ret = ptrace (PTRACE_GETWMMXREGS, tid, 0, regbuf);
   if (ret < 0)
-    {
-      warning (_("Unable to fetch WMMX registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch WMMX registers."));
 
   for (regno = 0; regno < 16; regno++)
     regcache_raw_supply (regcache, regno + ARM_WR0_REGNUM,
@@ -293,10 +272,7 @@ store_wmmx_regs (const struct regcache *regcache)
 
   ret = ptrace (PTRACE_GETWMMXREGS, tid, 0, regbuf);
   if (ret < 0)
-    {
-      warning (_("Unable to fetch WMMX registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch WMMX registers."));
 
   for (regno = 0; regno < 16; regno++)
     if (REG_VALID == regcache_register_status (regcache,
@@ -319,10 +295,7 @@ store_wmmx_regs (const struct regcache *regcache)
   ret = ptrace (PTRACE_SETWMMXREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    {
-      warning (_("Unable to store WMMX registers."));
-      return;
-    }
+    perror_with_name (_("Unable to store WMMX registers."));
 }
 
 static void
@@ -348,10 +321,7 @@ fetch_vfp_regs (struct regcache *regcache)
     ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    {
-      warning (_("Unable to fetch VFP registers."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch VFP registers."));
 
   aarch32_vfp_regcache_supply (regcache, regbuf,
                               tdep->vfp_register_count);
@@ -380,10 +350,7 @@ store_vfp_regs (const struct regcache *regcache)
     ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    {
-      warning (_("Unable to fetch VFP registers (for update)."));
-      return;
-    }
+    perror_with_name (_("Unable to fetch VFP registers (for update)."));
 
   aarch32_vfp_regcache_collect (regcache, regbuf,
                                tdep->vfp_register_count);
@@ -400,10 +367,7 @@ store_vfp_regs (const struct regcache *regcache)
     ret = ptrace (PTRACE_SETVFPREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    {
-      warning (_("Unable to store VFP registers."));
-      return;
-    }
+    perror_with_name (_("Unable to store VFP registers."));
 }
 
 /* Fetch registers from the child process.  Fetch all registers if