diff options
author | Joel Brobecker <brobecker@gnat.com> | 2003-12-10 17:40:43 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2003-12-10 17:40:43 +0000 |
commit | 7ae4c3a566beba00e16dd10bb69414ffc214dcbb (patch) | |
tree | 6ced00fb4dfffef4e991d205938aa202a1e9483f /gdb/frame.c | |
parent | 4249f881bdb61da1be3dc569c5920507a058c3f7 (diff) | |
download | gdb-7ae4c3a566beba00e16dd10bb69414ffc214dcbb.zip gdb-7ae4c3a566beba00e16dd10bb69414ffc214dcbb.tar.gz gdb-7ae4c3a566beba00e16dd10bb69414ffc214dcbb.tar.bz2 |
* frame.c (select_frame): Get the current frame PC using
get_frame_address_in_block() instead of get_frame_pc().
* stack.c (get_frame_language): Likewise.
Diffstat (limited to 'gdb/frame.c')
-rw-r--r-- | gdb/frame.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/frame.c b/gdb/frame.c index 5dc0705..1d37891 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -917,7 +917,13 @@ select_frame (struct frame_info *fi) source language of this frame, and switch to it if desired. */ if (fi) { - s = find_pc_symtab (get_frame_pc (fi)); + /* We retrieve the frame's symtab by using the frame PC. However + we cannot use the frame pc as is, because it usually points to + the instruction following the "call", which is sometimes the + first instruction of another function. So we rely on + get_frame_address_in_block() which provides us with a PC which + is guaranteed to be inside the frame's code block. */ + s = find_pc_symtab (get_frame_address_in_block (fi)); if (s && s->language != current_language->la_language && s->language != language_unknown |