add gdb-client to run on host to debug target.. (kgdb)
[openwrt/svn-archive/archive.git] / openwrt / toolchain / gdb / patches / 750-debian_sparc-singlestep.patch
diff --git a/openwrt/toolchain/gdb/patches/750-debian_sparc-singlestep.patch b/openwrt/toolchain/gdb/patches/750-debian_sparc-singlestep.patch
new file mode 100644 (file)
index 0000000..904883c
--- /dev/null
@@ -0,0 +1,37 @@
+Status: submitted for comments
+
+2004-11-13  Daniel Jacobowitz  <dan@debian.org>
+
+       * sparc-tdep.c (sparc_software_single_step): Handle stepping to NULL.
+
+Index: gdb-6.3/gdb/sparc-tdep.c
+===================================================================
+--- gdb-6.3.orig/gdb/sparc-tdep.c      2004-06-06 22:02:55.000000000 -0400
++++ gdb-6.3/gdb/sparc-tdep.c   2004-11-13 17:06:05.000000000 -0500
+@@ -1026,10 +1026,10 @@
+   if (insert_breakpoints_p)
+     {
+-      CORE_ADDR pc;
++      CORE_ADDR pc, orig_npc;
+       pc = sparc_address_from_register (tdep->pc_regnum);
+-      npc = sparc_address_from_register (tdep->npc_regnum);
++      orig_npc = npc = sparc_address_from_register (tdep->npc_regnum);
+       /* Analyze the instruction at PC.  */
+       nnpc = sparc_analyze_control_transfer (pc, &npc);
+@@ -1039,9 +1039,10 @@
+       target_insert_breakpoint (nnpc, nnpc_save);
+       /* Assert that we have set at least one breakpoint, and that
+-         they're not set at the same spot.  */
+-      gdb_assert (npc != 0 || nnpc != 0);
+-      gdb_assert (nnpc != npc);
++         they're not set at the same spot - unless we're going
++       from here straight to NULL, i.e. a call or jump to 0.  */
++      gdb_assert (npc != 0 || nnpc != 0 || orig_npc == 0);
++      gdb_assert (nnpc != npc || orig_npc == 0);
+     }
+   else
+     {