* mips-tdep.c (mips_stub_frame_sniffer): Handle .MIPS.stubs
authorDaniel Jacobowitz <drow@false.org>
Mon, 9 May 2005 03:36:10 +0000 (03:36 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 9 May 2005 03:36:10 +0000 (03:36 +0000)
section like .plt.

gdb/ChangeLog
gdb/mips-tdep.c

index 44bb111c5cc32622b2f567c1052d6bb8a6a9b1d5..090b5c815f6895ae47fb813cc31473be3a3ef59e 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-08  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * mips-tdep.c (mips_stub_frame_sniffer): Handle .MIPS.stubs
+       section like .plt.
+
 2005-05-08  Mark Kettenis  <kettenis@gnu.org>
 
        * i386-linux-tdep.c (linux_sigtramp_code, linux_rt_sigtramp_code):
index 803883721bf682af04dac9de61539073b643f577..73125b3e33dc71bd0f50aaf859bbc284eee7c8a5 100644 (file)
@@ -2091,11 +2091,21 @@ static const struct frame_unwind mips_stub_frame_unwind =
 static const struct frame_unwind *
 mips_stub_frame_sniffer (struct frame_info *next_frame)
 {
+  struct obj_section *s;
   CORE_ADDR pc = frame_pc_unwind (next_frame);
+
   if (in_plt_section (pc, NULL))
     return &mips_stub_frame_unwind;
-  else
-    return NULL;
+
+  /* Binutils for MIPS puts lazy resolution stubs into .MIPS.stubs.  */
+  s = find_pc_section (pc);
+
+  if (s != NULL
+      && strcmp (bfd_get_section_name (s->objfile->obfd, s->the_bfd_section),
+                ".MIPS.stubs") == 0)
+    return &mips_stub_frame_unwind;
+
+  return NULL;
 }
 
 static CORE_ADDR