From 7abfe01489d2422ae0ae519e0e9aa1ec0cc3c288 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Thu, 30 Mar 2006 16:37:13 +0000 Subject: [PATCH] * frame.h (set_current_sal_from_frame): New prototype. * stack.c (set_current_sal_from_frame): Make global. * infrun.c (normal_stop): Call set_current_sal_from_frame. --- gdb/ChangeLog | 6 ++++++ gdb/frame.h | 6 ++++++ gdb/infrun.c | 6 ++++++ gdb/stack.c | 4 +--- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b61365fa3cb..87c7974a219 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2006-03-30 Daniel Jacobowitz + + * frame.h (set_current_sal_from_frame): New prototype. + * stack.c (set_current_sal_from_frame): Make global. + * infrun.c (normal_stop): Call set_current_sal_from_frame. + 2006-03-30 Daniel Jacobowitz * linux-thread-db.c: Include "linux-nat.h". diff --git a/gdb/frame.h b/gdb/frame.h index a73a4f1dec3..800cbfbcf18 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -300,6 +300,12 @@ extern CORE_ADDR get_frame_func (struct frame_info *fi); extern void find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal); +/* Set the current source and line to the location given by frame + FRAME, if possible. When CENTER is true, adjust so the relevant + line is in the center of the next 'list'. */ + +void set_current_sal_from_frame (struct frame_info *, int); + /* Return the frame base (what ever that is) (DEPRECATED). Old code was trying to use this single method for two conflicting diff --git a/gdb/infrun.c b/gdb/infrun.c index 47fbe09ed72..bccca0d7dc9 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -3044,6 +3044,12 @@ Further execution is probably impossible.\n")); target_terminal_ours (); + /* Set the current source location. This will also happen if we + display the frame below, but the current SAL will be incorrect + during a user hook-stop function. */ + if (target_has_stack && !stop_stack_dummy) + set_current_sal_from_frame (get_current_frame (), 1); + /* Look up the hook_stop and run it (CLI internally handles problem of stop_command's pre-hook not existing). */ if (stop_command) diff --git a/gdb/stack.c b/gdb/stack.c index 435bb0c9e7a..d0bbc87b1cb 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -61,8 +61,6 @@ static void print_frame (struct frame_info *frame, int print_level, enum print_what print_what, int print_args, struct symtab_and_line sal); -static void set_current_sal_from_frame (struct frame_info *, int); - /* Zero means do things normally; we are interacting directly with the user. One means print the full filename and linenumber when a frame is printed, and do so in a format emacs18/emacs19.22 can @@ -373,7 +371,7 @@ print_args_stub (void *args) FRAME, if possible. When CENTER is true, adjust so the relevant line is in the center of the next 'list'. */ -static void +void set_current_sal_from_frame (struct frame_info *frame, int center) { struct symtab_and_line sal; -- 2.30.2