Mark register unavailable when PTRACE_PEEKUSER fails
As described in PR 18749, GDB/GDBserver may get an error on accessing memory or register because the thread may disappear. However, some path doesn't expect the error. This patch fixes this problem by marking the register unavailable when PTRACE_PEEKUSER fails instead of throwing error. gdb/gdbserver: 2018-01-16 Yao Qi <yao.qi@linaro.org> PR gdb/18749 * linux-low.c (fetch_register): Call supply_register instead of error.
This commit is contained in:
parent
46a7082471
commit
9a70f35c8d
|
@ -1,3 +1,9 @@
|
|||
2018-01-16 Yao Qi <yao.qi@linaro.org>
|
||||
|
||||
PR gdb/18749
|
||||
* linux-low.c (fetch_register): Call supply_register instead of
|
||||
error.
|
||||
|
||||
2018-01-08 Yao Qi <yao.qi@linaro.org>
|
||||
Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
|
|
|
@ -5555,7 +5555,11 @@ fetch_register (const struct usrregs_info *usrregs,
|
|||
(PTRACE_TYPE_ARG3) (uintptr_t) regaddr, (PTRACE_TYPE_ARG4) 0);
|
||||
regaddr += sizeof (PTRACE_XFER_TYPE);
|
||||
if (errno != 0)
|
||||
error ("reading register %d: %s", regno, strerror (errno));
|
||||
{
|
||||
/* Mark register REGNO unavailable. */
|
||||
supply_register (regcache, regno, NULL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (the_low_target.supply_ptrace_register)
|
||||
|
|
Loading…
Reference in New Issue