aboutsummaryrefslogtreecommitdiff
path: root/gdb/mips-tdep.c
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 /gdb/mips-tdep.c
parent0560d0f70c85c47dad453171c128c322a099a9fa (diff)
downloadgdb-979b38e00bbe3fd6498b24e55edbeb14c4150bd1.zip
gdb-979b38e00bbe3fd6498b24e55edbeb14c4150bd1.tar.gz
gdb-979b38e00bbe3fd6498b24e55edbeb14c4150bd1.tar.bz2
* mips-tdep.c (mips_stub_frame_sniffer): Handle .MIPS.stubs
section like .plt.
Diffstat (limited to 'gdb/mips-tdep.c')
-rw-r--r--gdb/mips-tdep.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 8038837..73125b3 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