S390: gdbserver: Don't write guarded storage registers
On S390, the guarded storage register set is only valid if guarded storage is active. Reading/writing the register set yields errors if this is not the case. Then gdbserver emits warnings like these: Warning: ptrace(regsets_store_inferior_registers): No data available Apart from confusing the user, this can also lead to test case failures due to unexpected output. To suppress this, make the guarded storage regsets read-only for now. gdb/gdbserver/ChangeLog: * linux-s390-low.c (s390_fill_gs): Remove function. (s390_fill_gsbc): Remove function. (s390_regsets): Set fill functions for the guarded storage regsets to NULL.
This commit is contained in:
parent
7edb9bd32b
commit
c49bd90bdb
2 changed files with 12 additions and 24 deletions
|
@ -1,3 +1,10 @@
|
|||
2018-03-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* linux-s390-low.c (s390_fill_gs): Remove function.
|
||||
(s390_fill_gsbc): Remove function.
|
||||
(s390_regsets): Set fill functions for the guarded storage regsets
|
||||
to NULL.
|
||||
|
||||
2018-03-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* linux-s390-low.c (s390_get_hwcap): Replace tdesc parameter by
|
||||
|
|
|
@ -374,16 +374,6 @@ s390_store_vxrs_high (struct regcache *regcache, const void *buf)
|
|||
supply_register (regcache, v16 + i, (const char *) buf + 16 * i);
|
||||
}
|
||||
|
||||
static void
|
||||
s390_fill_gs (struct regcache *regcache, void *buf)
|
||||
{
|
||||
int gsd = find_regno (regcache->tdesc, "gsd");
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
collect_register (regcache, gsd + i, (char *) buf + 8 * (i + 1));
|
||||
}
|
||||
|
||||
static void
|
||||
s390_store_gs (struct regcache *regcache, const void *buf)
|
||||
{
|
||||
|
@ -394,16 +384,6 @@ s390_store_gs (struct regcache *regcache, const void *buf)
|
|||
supply_register (regcache, gsd + i, (const char *) buf + 8 * (i + 1));
|
||||
}
|
||||
|
||||
static void
|
||||
s390_fill_gsbc (struct regcache *regcache, void *buf)
|
||||
{
|
||||
int bc_gsd = find_regno (regcache->tdesc, "bc_gsd");
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
collect_register (regcache, bc_gsd + i, (char *) buf + 8 * (i + 1));
|
||||
}
|
||||
|
||||
static void
|
||||
s390_store_gsbc (struct regcache *regcache, const void *buf)
|
||||
{
|
||||
|
@ -432,10 +412,11 @@ static struct regset_info s390_regsets[] = {
|
|||
EXTENDED_REGS, s390_fill_vxrs_low, s390_store_vxrs_low },
|
||||
{ PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_HIGH, 0,
|
||||
EXTENDED_REGS, s390_fill_vxrs_high, s390_store_vxrs_high },
|
||||
{ PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_GS_CB, 0,
|
||||
EXTENDED_REGS, s390_fill_gs, s390_store_gs },
|
||||
{ PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_GS_BC, 0,
|
||||
EXTENDED_REGS, s390_fill_gsbc, s390_store_gsbc },
|
||||
/* Guarded storage registers are read-only. */
|
||||
{ PTRACE_GETREGSET, -1, NT_S390_GS_CB, 0, EXTENDED_REGS,
|
||||
NULL, s390_store_gs },
|
||||
{ PTRACE_GETREGSET, -1, NT_S390_GS_BC, 0, EXTENDED_REGS,
|
||||
NULL, s390_store_gsbc },
|
||||
NULL_REGSET
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue