[PATCH v2 04/11] s390: gdbarch_tdep add field tdesc

Philipp Rudo
2017-12-05T12:29:22Z

Add a field for the target description to gdbarch_tdep. This will later be
needed to pass the 'correct' target description from osabi_init to
gdbarch_init. Unfortunately this cannot be done using gdbarch_info as it
is only passed by copy, not reference.

gdb/ChangeLog:

* s390-linux-tdep.c (gdbarch_tdep) <tdesc>: New field.
(s390_gdbarch_tdep_alloc): Adjust.
(s390_gdbarch_init): Adjust.
---
gdb/s390-linux-tdep.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index afee82304c..caef47a2a4 100644
--- a/gdb/s390-linux-tdep.c
+++ b/gdb/s390-linux-tdep.c
@@ -100,6 +100,9 @@ enum s390_vector_abi_kind

struct gdbarch_tdep
{
+ /* Target description. */
+ const struct target_desc *tdesc;
+
/* ABI version. */
enum s390_abi_kind abi;

@@ -7816,6 +7819,8 @@ s390_gdbarch_tdep_alloc ()
{
struct gdbarch_tdep *tdep = XCNEW (struct gdbarch_tdep);

+ tdep->tdesc = NULL;
+
tdep->abi = ABI_NONE;
tdep->vector_abi = S390_VECTOR_ABI_NONE;

@@ -7882,6 +7887,7 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
else
tdesc = tdesc_s390x_linux64;
}
+ tdep->tdesc = tdesc;

/* Check any target description for validity. */
if (tdesc_has_registers (tdesc))
@@ -8124,7 +8130,7 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_ax_pseudo_register_push_stack
(gdbarch, s390_ax_pseudo_register_push_stack);
set_gdbarch_gen_return_address (gdbarch, s390_gen_return_address);
- tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+ tdesc_use_registers (gdbarch, tdep->tdesc, tdesc_data);
set_gdbarch_register_name (gdbarch, s390_register_name);

/* Assign pseudo register numbers. */
--
2.13.5