aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver
diff options
context:
space:
mode:
authorAndreas Arnez <arnez@linux.vnet.ibm.com>2018-03-21 17:41:45 +0100
committerAndreas Arnez <arnez@linux.vnet.ibm.com>2018-03-21 17:41:45 +0100
commitc49bd90bdb03f3013a796ea920830547cacc3c48 (patch)
treec48dd89339be50eaad7c0663d8848e7ea2cc169a /gdb/gdbserver
parent7edb9bd32ba23247a509cbe9d44ccb02da97b66e (diff)
downloadgdb-c49bd90bdb03f3013a796ea920830547cacc3c48.zip
gdb-c49bd90bdb03f3013a796ea920830547cacc3c48.tar.gz
gdb-c49bd90bdb03f3013a796ea920830547cacc3c48.tar.bz2
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.
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r--gdb/gdbserver/ChangeLog7
-rw-r--r--gdb/gdbserver/linux-s390-low.c29
2 files changed, 12 insertions, 24 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 958a6dd..e63d89f 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,12 @@
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
the word size. Add comment.
(s390_get_wordsize): New function.
diff --git a/gdb/gdbserver/linux-s390-low.c b/gdb/gdbserver/linux-s390-low.c
index 203accd..7de70f3 100644
--- a/gdb/gdbserver/linux-s390-low.c
+++ b/gdb/gdbserver/linux-s390-low.c
@@ -375,16 +375,6 @@ s390_store_vxrs_high (struct regcache *regcache, const void *buf)
}
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)
{
int gsd = find_regno (regcache->tdesc, "gsd");
@@ -395,16 +385,6 @@ s390_store_gs (struct regcache *regcache, const void *buf)
}
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)
{
int bc_gsd = find_regno (regcache->tdesc, "bc_gsd");
@@ -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
};