diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/frame.h | 6 | ||||
-rw-r--r-- | gdb/infrun.c | 6 | ||||
-rw-r--r-- | gdb/stack.c | 4 |
4 files changed, 19 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b61365f..87c7974 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,4 +1,10 @@ 2006-03-30 Daniel Jacobowitz <dan@codesourcery.com> + + * 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 <dan@codesourcery.com> * linux-thread-db.c: Include "linux-nat.h". (check_for_thread_db): New function, split out from diff --git a/gdb/frame.h b/gdb/frame.h index a73a4f1..800cbfb 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 47fbe09..bccca0d 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 435bb0c..d0bbc87 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; |