From d86feca31bd9b814fd5317a0ebdbe86fb812a1bd Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Fri, 22 Jan 2016 09:01:09 +0000 Subject: [PATCH] [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 * 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 | 8 ++++++ gdb/arm-linux-nat.c | 60 +++++++++------------------------------------ 2 files changed, 20 insertions(+), 48 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0c86dffddfb..6da544ea419 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2016-01-22 Yao Qi + + * 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 * breakpoint.c (init_breakpoint_sal): Add comment. diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c index ed72bb3c42a..d77ca934984 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, ®s); 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, ®s); 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, ®s); 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 -- 2.30.2