single-step-mode.patch
Date: Fri Aug 20 15:10:34 EST 2004
Author: Jeremy Kerr
Title: Add single-step-mode command to powerpc64-linux-gdb
Status: External Project

This patch is an update to Jimi Xenidis' single-step-mode patch for gdb, ported
to 6.1.1

diff -Naur -X ./Xdiff src/gdb/config/powerpc/tm-linux.h mygdb/gdb/config/powerpc/tm-linux.h
--- src/gdb/config/powerpc/tm-linux.h   Thu Jun 12 19:58:07 2003
+++ mygdb/gdb/config/powerpc/tm-linux.h Tue Aug 12 09:05:02 2003
@@ -33,9 +33,11 @@
 
 /* We can single step on linux */
 #undef  SOFTWARE_SINGLE_STEP
-#define SOFTWARE_SINGLE_STEP(p,q) internal_error (__FILE__, __LINE__, "Will never execute!")
+extern void ppc_linux_software_single_step (enum target_signal, int);
+#define SOFTWARE_SINGLE_STEP(sig,bp_p) ppc_linux_software_single_step (sig, bp_p)
 #undef  SOFTWARE_SINGLE_STEP_P
-#define SOFTWARE_SINGLE_STEP_P() 0
+extern int ppc_linux_single_step_mode;
+#define SOFTWARE_SINGLE_STEP_P() ppc_linux_single_step_mode
 
 /* Make sure nexti gets the help it needs for debugging assembly code
    without symbols */
diff -Naur -X ./Xdiff src/gdb/ppc-linux-tdep.c mygdb/gdb/ppc-linux-tdep.c
--- src/gdb/ppc-linux-tdep.c    Tue Jun 24 19:09:22 2003
+++ mygdb/gdb/ppc-linux-tdep.c  Tue Aug 12 09:22:11 2003
@@ -1075,10 +1075,35 @@
     }
 }
 
+int ppc_linux_single_step_mode = 0;
+void
+ppc_linux_software_single_step (enum target_signal sig , int bp_p)
+{
+  if (ppc_linux_single_step_mode)
+    {
+      rs6000_software_single_step (sig, bp_p);
+    }
+  else
+    {
+      internal_error (__FILE__, __LINE__, "Will never execute!");
+    }
+}
+
 void
 _initialize_ppc_linux_tdep (void)
 {
   gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_LINUX,
                          ppc_linux_init_abi);
   add_core_fns (&ppc_linux_regset_core_fns);
+
+  add_show_from_set (add_set_cmd("single-step-mode", class_obscure,
+                                var_integer,
+                                &ppc_linux_single_step_mode, "\
+Set single step mode for PowerPCtarget:\n\
+  0 = Target supports single stepping (i.e. Linux)\n\
+  1 = Target does not support single stepping (i.e. AIX, Simulators).",
+                                &setlist),
+                    &showlist);
 }
+
+
