This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] [ARM] perror_with_name when failed to fetch/store registers


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d86feca31bd9b814fd5317a0ebdbe86fb812a1bd

commit d86feca31bd9b814fd5317a0ebdbe86fb812a1bd
Author: Yao Qi <yao.qi@linaro.org>
Date:   Fri Jan 22 09:01:09 2016 +0000

    [ARM] perror_with_name when failed to fetch/store registers
    
    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.

Diff:
---
 gdb/ChangeLog       |  8 +++++++
 gdb/arm-linux-nat.c | 60 +++++++++++------------------------------------------
 2 files changed, 20 insertions(+), 48 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0c86dff..6da544e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index ed72bb3..d77ca93 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]