This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] S390: gdbserver: Don't write guarded storage registers


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c49bd90bdb03f3013a796ea920830547cacc3c48

commit c49bd90bdb03f3013a796ea920830547cacc3c48
Author: Andreas Arnez <arnez@linux.vnet.ibm.com>
Date:   Wed Mar 21 17:41:45 2018 +0100

    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.

Diff:
---
 gdb/gdbserver/ChangeLog        |  7 +++++++
 gdb/gdbserver/linux-s390-low.c | 29 +++++------------------------
 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
 };


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]