[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.
This commit is contained in:
parent
b35a8b2f1f
commit
d86feca31b
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue