summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2006-03-30 16:37:13 +0000
committerDaniel Jacobowitz <dan@debian.org>2006-03-30 16:37:13 +0000
commit0374cc263e22d297c9edb1f0ae5d1831d6b0f448 (patch)
treef6f00a3cddf1ef41444a66521f495d5b6baaced8
parentc2925413e58f8b3ce7504f2dd097be2ac9646a93 (diff)
downloadgdb-0374cc263e22d297c9edb1f0ae5d1831d6b0f448.tar.gz
* 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.
-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 b61365fa3cb..87c7974a219 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 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;