From f2ec0ecff63269d4a88bdca4d244fbae925de740 Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@gnat.com>
Date: Sat, 9 Jan 2010 04:38:29 +0000
Subject:         * mips-tdep.c (mips_breakpoint_from_pc): Add new static
 variable         containing the correct breakpoint instruction to use on
 mips-irix.         Use it when the osabi is GDB_OSABI_IRIX.

---
 gdb/ChangeLog   | 7 +++++++
 gdb/mips-tdep.c | 5 +++++
 2 files changed, 12 insertions(+)

(limited to 'gdb')

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f562851..b7fb8ce 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
 2010-01-09  Joel Brobecker  <brobecker@adacore.com>
 
+	Use the correct breakpoint instruction on mips-irix.
+	* mips-tdep.c (mips_breakpoint_from_pc): Add new static variable
+	containing the correct breakpoint instruction to use on mips-irix.
+	Use it when the osabi is GDB_OSABI_IRIX.
+
+2010-01-09  Joel Brobecker  <brobecker@adacore.com>
+
 	-Wunused warning in procfs.c (mips-irix only).
 	* procfs.c (gdb_praddset, gdb_prdelset): New macros.  Use them
 	throughout instead of using praddset and prdelset respectively.
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 2748805..92fcd4a 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -5045,6 +5045,9 @@ mips_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
 	  static gdb_byte big_breakpoint[] = { 0, 0x5, 0, 0xd };
 	  static gdb_byte pmon_big_breakpoint[] = { 0, 0, 0, 0xd };
 	  static gdb_byte idt_big_breakpoint[] = { 0, 0, 0x0a, 0xd };
+	  /* Likewise, IRIX appears to expect a different breakpoint,
+	     although this is not apparent until you try to use pthreads. */
+	  static gdb_byte irix_big_breakpoint[] = { 0, 0, 0, 0xd };
 
 	  *lenptr = sizeof (big_breakpoint);
 
@@ -5054,6 +5057,8 @@ mips_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
 		   || strcmp (target_shortname, "pmon") == 0
 		   || strcmp (target_shortname, "lsi") == 0)
 	    return pmon_big_breakpoint;
+	  else if (gdbarch_osabi (gdbarch) == GDB_OSABI_IRIX)
+	    return irix_big_breakpoint;
 	  else
 	    return big_breakpoint;
 	}
-- 
cgit v1.1