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

login
register
mail settings
Submitter Philipp Rudo
Date Dec. 5, 2017, 12:28 p.m.
Message ID <20171205122859.2919-5-prudo@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/24728/
State New
Headers show

Comments

Philipp Rudo - Dec. 5, 2017, 12:28 p.m.
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(-)

Patch

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.  */