gdb: Add gen_return_address for powerpc.
authorMarcin Kościelnicki <koriakin@0x04.net>
Thu, 7 Jan 2016 16:24:48 +0000 (17:24 +0100)
committerMarcin Kościelnicki <koriakin@0x04.net>
Wed, 9 Mar 2016 17:43:02 +0000 (18:43 +0100)
gdb/ChangeLog:

* rs6000-tdep.c: Add "ax.h" and "ax-gdb.h" includes.
(rs6000_gen_return_address): New function.
(rs6000_gdbarch_init): Wire in the above.

gdb/ChangeLog
gdb/rs6000-tdep.c

index f2d21d81acc8aaf2ec151f080177b69f5f53be9a..74dec87054b6d2ae50468a74ba203df7d7966db0 100644 (file)
@@ -1,3 +1,9 @@
+2016-03-09  Marcin Kościelnicki  <koriakin@0x04.net>
+
+       * rs6000-tdep.c: Add "ax.h" and "ax-gdb.h" includes.
+       (rs6000_gen_return_address): New function.
+       (rs6000_gdbarch_init): Wire in the above.
+
 2016-03-09  Marcin Kościelnicki  <koriakin@0x04.net>
 
        * rs6000-tdep.c (rs6000_ax_pseudo_register_collect): New function.
index 3bcd20515b602b2296e60f20e715a377b2109b1c..565c6201bcee3d8ab5fad68babac8619c69c5331 100644 (file)
@@ -63,6 +63,9 @@
 #include "frame-unwind.h"
 #include "frame-base.h"
 
+#include "ax.h"
+#include "ax-gdb.h"
+
 #include "features/rs6000/powerpc-32.c"
 #include "features/rs6000/powerpc-altivec32.c"
 #include "features/rs6000/powerpc-vsx32.c"
@@ -2963,6 +2966,18 @@ rs6000_ax_pseudo_register_collect (struct gdbarch *gdbarch,
 }
 
 
+static void
+rs6000_gen_return_address (struct gdbarch *gdbarch,
+                          struct agent_expr *ax, struct axs_value *value,
+                          CORE_ADDR scope)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  value->type = register_type (gdbarch, tdep->ppc_lr_regnum);
+  value->kind = axs_lvalue_register;
+  value->u.reg = tdep->ppc_lr_regnum;
+}
+
+
 /* Convert a DBX STABS register number to a GDB register number.  */
 static int
 rs6000_stab_reg_to_regnum (struct gdbarch *gdbarch, int num)
@@ -5972,6 +5987,8 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
              rs6000_ax_pseudo_register_collect);
     }
 
+  set_gdbarch_gen_return_address (gdbarch, rs6000_gen_return_address);
+
   set_gdbarch_have_nonsteppable_watchpoint (gdbarch, 1);
 
   /* Select instruction printer.  */