From ce29f8439f94adfa56655940e657afbe07a0c99e Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Wed, 21 Mar 2018 17:41:45 +0100 Subject: [PATCH] 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. --- gdb/gdbserver/ChangeLog | 8 ++++++++ gdb/gdbserver/linux-s390-ipa.c | 13 +++++++++++-- gdb/gdbserver/linux-s390-low.c | 4 ++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index e63d89fb91..737457d0cd 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,11 @@ +2018-03-21 Andreas Arnez + + * 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 * linux-s390-low.c (s390_fill_gs): Remove function. diff --git a/gdb/gdbserver/linux-s390-ipa.c b/gdb/gdbserver/linux-s390-ipa.c index 707d3384f0..bf9addb17a 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 7de70f3a38..cc219e2ba9 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; } -- 2.34.1