* 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.
This commit is contained in:
Joel Brobecker 2003-12-10 17:40:43 +00:00
parent 4249f881bd
commit 7ae4c3a566
3 changed files with 21 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2003-12-10 J. Brobecker <brobecker@gnat.com>
* 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.
2003-12-08 Kevin Buettner <kevinb@redhat.com>
* remote.c (remote_open_1, remote_cisco_open): Avoid closing

View File

@ -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

View File

@ -2036,7 +2036,14 @@ get_frame_language (void)
if (deprecated_selected_frame)
{
s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
/* We determine the current frame language by looking up its
associated symtab. To retrieve this symtab, we use 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(), it 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 (deprecated_selected_frame));
if (s)
flang = s->language;
else