summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2005-05-09 03:36:10 +0000
committerDaniel Jacobowitz <drow@false.org>2005-05-09 03:36:10 +0000
commit979b38e00bbe3fd6498b24e55edbeb14c4150bd1 (patch)
tree02b17f6da0ab4c3e1ff1a0104d2d0f5b87fd4e8a
parent0560d0f70c85c47dad453171c128c322a099a9fa (diff)
* mips-tdep.c (mips_stub_frame_sniffer): Handle .MIPS.stubs
section like .plt.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/mips-tdep.c14
2 files changed, 17 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 44bb111c5c..090b5c815f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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):
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 803883721b..73125b3e33 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -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