aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-03-30 16:37:13 +0000
committerDaniel Jacobowitz <drow@false.org>2006-03-30 16:37:13 +0000
commit7abfe01489d2422ae0ae519e0e9aa1ec0cc3c288 (patch)
tree8041c183051b014ad47063adfb9dd827142afa7f /gdb
parent0ec9a092fd18d6b1c38ae330194bf90534a9b681 (diff)
downloadgdb-7abfe01489d2422ae0ae519e0e9aa1ec0cc3c288.zip
gdb-7abfe01489d2422ae0ae519e0e9aa1ec0cc3c288.tar.gz
gdb-7abfe01489d2422ae0ae519e0e9aa1ec0cc3c288.tar.bz2
* 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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/frame.h6
-rw-r--r--gdb/infrun.c6
-rw-r--r--gdb/stack.c4
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;