aboutsummaryrefslogtreecommitdiff
path: root/gdb
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
commitce29f8439f94adfa56655940e657afbe07a0c99e (patch)
tree95093bbb7feb3ccdbd43977c81434a197680de89 /gdb
parentc49bd90bdb03f3013a796ea920830547cacc3c48 (diff)
downloadgdb-ce29f8439f94adfa56655940e657afbe07a0c99e.zip
gdb-ce29f8439f94adfa56655940e657afbe07a0c99e.tar.gz
gdb-ce29f8439f94adfa56655940e657afbe07a0c99e.tar.bz2
S390: Make IPA recognize tdescs with guarded storage
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/gdbserver/ChangeLog8
-rw-r--r--gdb/gdbserver/linux-s390-ipa.c13
-rw-r--r--gdb/gdbserver/linux-s390-low.c4
3 files changed, 23 insertions, 2 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index e63d89f..737457d 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,13 @@
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.
(s390_fill_gsbc): Remove function.
(s390_regsets): Set fill functions for the guarded storage regsets
diff --git a/gdb/gdbserver/linux-s390-ipa.c b/gdb/gdbserver/linux-s390-ipa.c
index 707d338..bf9addb 100644
--- a/gdb/gdbserver/linux-s390-ipa.c
+++ b/gdb/gdbserver/linux-s390-ipa.c
@@ -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
}
diff --git a/gdb/gdbserver/linux-s390-low.c b/gdb/gdbserver/linux-s390-low.c
index 7de70f3..cc219e2 100644
--- a/gdb/gdbserver/linux-s390-low.c
+++ b/gdb/gdbserver/linux-s390-low.c
@@ -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;
}