[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
2 changed files with 20 additions and 48 deletions
|
@ -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>
|
2016-01-21 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
* breakpoint.c (init_breakpoint_sal): Add comment.
|
* breakpoint.c (init_breakpoint_sal): Add comment.
|
||||||
|
|
|
@ -92,10 +92,7 @@ fetch_fpregs (struct regcache *regcache)
|
||||||
ret = ptrace (PT_GETFPREGS, tid, 0, fp);
|
ret = ptrace (PT_GETFPREGS, tid, 0, fp);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch the floating point registers."));
|
||||||
warning (_("Unable to fetch the floating point registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fetch fpsr. */
|
/* Fetch fpsr. */
|
||||||
regcache_raw_supply (regcache, ARM_FPS_REGNUM,
|
regcache_raw_supply (regcache, ARM_FPS_REGNUM,
|
||||||
|
@ -133,10 +130,7 @@ store_fpregs (const struct regcache *regcache)
|
||||||
ret = ptrace (PT_GETFPREGS, tid, 0, fp);
|
ret = ptrace (PT_GETFPREGS, tid, 0, fp);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch the floating point registers."));
|
||||||
warning (_("Unable to fetch the floating point registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Store fpsr. */
|
/* Store fpsr. */
|
||||||
if (REG_VALID == regcache_register_status (regcache, ARM_FPS_REGNUM))
|
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);
|
ret = ptrace (PTRACE_SETFPREGS, tid, 0, fp);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to store floating point registers."));
|
||||||
warning (_("Unable to store floating point registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fetch all general registers of the process and store into
|
/* 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);
|
ret = ptrace (PTRACE_GETREGS, tid, 0, ®s);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch general registers."));
|
||||||
warning (_("Unable to fetch general registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aarch32_gp_regcache_supply (regcache, (uint32_t *) regs, arm_apcs_32);
|
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);
|
ret = ptrace (PTRACE_GETREGS, tid, 0, ®s);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch general registers."));
|
||||||
warning (_("Unable to fetch general registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aarch32_gp_regcache_collect (regcache, (uint32_t *) regs, arm_apcs_32);
|
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);
|
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to store general registers."));
|
||||||
warning (_("Unable to store general registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fetch all WMMX registers of the process and store into
|
/* 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);
|
ret = ptrace (PTRACE_GETWMMXREGS, tid, 0, regbuf);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch WMMX registers."));
|
||||||
warning (_("Unable to fetch WMMX registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (regno = 0; regno < 16; regno++)
|
for (regno = 0; regno < 16; regno++)
|
||||||
regcache_raw_supply (regcache, regno + ARM_WR0_REGNUM,
|
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);
|
ret = ptrace (PTRACE_GETWMMXREGS, tid, 0, regbuf);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch WMMX registers."));
|
||||||
warning (_("Unable to fetch WMMX registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (regno = 0; regno < 16; regno++)
|
for (regno = 0; regno < 16; regno++)
|
||||||
if (REG_VALID == regcache_register_status (regcache,
|
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);
|
ret = ptrace (PTRACE_SETWMMXREGS, tid, 0, regbuf);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to store WMMX registers."));
|
||||||
warning (_("Unable to store WMMX registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -348,10 +321,7 @@ fetch_vfp_regs (struct regcache *regcache)
|
||||||
ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
|
ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch VFP registers."));
|
||||||
warning (_("Unable to fetch VFP registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aarch32_vfp_regcache_supply (regcache, regbuf,
|
aarch32_vfp_regcache_supply (regcache, regbuf,
|
||||||
tdep->vfp_register_count);
|
tdep->vfp_register_count);
|
||||||
|
@ -380,10 +350,7 @@ store_vfp_regs (const struct regcache *regcache)
|
||||||
ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
|
ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to fetch VFP registers (for update)."));
|
||||||
warning (_("Unable to fetch VFP registers (for update)."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aarch32_vfp_regcache_collect (regcache, regbuf,
|
aarch32_vfp_regcache_collect (regcache, regbuf,
|
||||||
tdep->vfp_register_count);
|
tdep->vfp_register_count);
|
||||||
|
@ -400,10 +367,7 @@ store_vfp_regs (const struct regcache *regcache)
|
||||||
ret = ptrace (PTRACE_SETVFPREGS, tid, 0, regbuf);
|
ret = ptrace (PTRACE_SETVFPREGS, tid, 0, regbuf);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
perror_with_name (_("Unable to store VFP registers."));
|
||||||
warning (_("Unable to store VFP registers."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fetch registers from the child process. Fetch all registers if
|
/* Fetch registers from the child process. Fetch all registers if
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue