S390: Make IPA recognize tdescs with guarded storage
authorAndreas Arnez <arnez@linux.vnet.ibm.com>
Wed, 21 Mar 2018 16:41:45 +0000 (17:41 +0100)
committerAndreas Arnez <arnez@linux.vnet.ibm.com>
Wed, 21 Mar 2018 16:41:45 +0000 (17:41 +0100)
The in-process agent does not handle tdescs with guarded storage yet.
This is fixed.

gdb/gdbserver/ChangeLog:

* linux-s390-ipa.c (get_ipa_tdesc): Add handling for
S390_TDESC_GS.
* linux-s390-low.c (s390_get_ipa_tdesc_idx): Likewise.
(initialize_low_tracepoint): Call init_registers_s390x_gs_linux64
and init_registers_s390_gs_linux64.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-s390-ipa.c
gdb/gdbserver/linux-s390-low.c

index e63d89fb91b6f4d0c641bcb3a385f1aabf75069d..737457d0cd68bfad5b99fb74e36f84c8fb76f5ee 100644 (file)
@@ -1,3 +1,11 @@
+2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+       * linux-s390-ipa.c (get_ipa_tdesc): Add handling for
+       S390_TDESC_GS.
+       * linux-s390-low.c (s390_get_ipa_tdesc_idx): Likewise.
+       (initialize_low_tracepoint): Call init_registers_s390x_gs_linux64
+       and init_registers_s390_gs_linux64.
+
 2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
        * linux-s390-low.c (s390_fill_gs): Remove function.
index 707d3384f00b6feb98466b7632197b114f065613..bf9addb17aea29ded4a93e7ef31a681fd30fc06b 100644 (file)
@@ -119,7 +119,7 @@ static const int s390_linux64_ft_collect_regmap[] = {
   FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
 };
 
-/* Used for s390-te-linux64, s390-tevx-linux64.  */
+/* Used for s390-te-linux64, s390-tevx-linux64, and s390-gs-linux64.  */
 
 static const int s390_te_linux64_ft_collect_regmap[] = {
   /* 32-bit PSWA and PSWM.  */
@@ -207,7 +207,8 @@ static const int s390x_ft_collect_regmap[] = {
   FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
 };
 
-/* Used for s390x-te-linux64, s390x-tevx-linux64.  */
+/* Used for s390x-te-linux64, s390x-tevx-linux64, and
+   s390x-gs-linux64.  */
 
 static const int s390x_te_ft_collect_regmap[] = {
   /* 64-bit PSWA and PSWM.  */
@@ -335,6 +336,9 @@ get_ipa_tdesc (int idx)
     case S390_TDESC_TEVX:
       SET_REGMAP(s390x_te_ft_collect_regmap, 0);
       return tdesc_s390x_tevx_linux64;
+    case S390_TDESC_GS:
+      SET_REGMAP(s390x_te_ft_collect_regmap, 0);
+      return tdesc_s390x_gs_linux64;
 #else
     case S390_TDESC_32:
       SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
@@ -363,6 +367,9 @@ get_ipa_tdesc (int idx)
     case S390_TDESC_TEVX:
       SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0);
       return tdesc_s390_tevx_linux64;
+    case S390_TDESC_GS:
+      SET_REGMAP(s390_te_ft_collect_regmap, 0);
+      return tdesc_s390_gs_linux64;
 #endif
     default:
       internal_error (__FILE__, __LINE__,
@@ -440,6 +447,7 @@ initialize_low_tracepoint (void)
   init_registers_s390x_te_linux64 ();
   init_registers_s390x_vx_linux64 ();
   init_registers_s390x_tevx_linux64 ();
+  init_registers_s390x_gs_linux64 ();
 #else
   init_registers_s390_linux32 ();
   init_registers_s390_linux32v1 ();
@@ -450,5 +458,6 @@ initialize_low_tracepoint (void)
   init_registers_s390_te_linux64 ();
   init_registers_s390_vx_linux64 ();
   init_registers_s390_tevx_linux64 ();
+  init_registers_s390_gs_linux64 ();
 #endif
 }
index 7de70f3a3899ee29c8ec9452b3607d6dca655005..cc219e2ba978c2788dda670b33e5e383ee22d82d 100644 (file)
@@ -1431,6 +1431,8 @@ s390_get_ipa_tdesc_idx (void)
     return S390_TDESC_VX;
   if (tdesc == tdesc_s390x_tevx_linux64)
     return S390_TDESC_TEVX;
+  if (tdesc == tdesc_s390x_gs_linux64)
+    return S390_TDESC_GS;
 #endif
 
   if (tdesc == tdesc_s390_linux32)
@@ -1451,6 +1453,8 @@ s390_get_ipa_tdesc_idx (void)
     return S390_TDESC_VX;
   if (tdesc == tdesc_s390_tevx_linux64)
     return S390_TDESC_TEVX;
+  if (tdesc == tdesc_s390_gs_linux64)
+    return S390_TDESC_GS;
 
   return 0;
 }