diff options
author | Daniel Jacobowitz <drow@false.org> | 2005-05-09 03:36:10 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2005-05-09 03:36:10 +0000 |
commit | 979b38e00bbe3fd6498b24e55edbeb14c4150bd1 (patch) | |
tree | 02b17f6da0ab4c3e1ff1a0104d2d0f5b87fd4e8a /gdb/mips-tdep.c | |
parent | 0560d0f70c85c47dad453171c128c322a099a9fa (diff) | |
download | gdb-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.c | 14 |
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 |