aboutsummaryrefslogtreecommitdiff
path: root/gdb/tracepoint.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>2010-04-16 01:12:07 +0000
committerStan Shebs <shebs@codesourcery.com>2010-04-16 01:12:07 +0000
commit2ce6d6bf7c5f2c7ef3e816b1c64b4e14e52ca6bd (patch)
tree9dbede613a4c00ab45e1f711739d6a3bd82797b1 /gdb/tracepoint.c
parent47edb3fead1279670ab27f6f983897d47ef87995 (diff)
downloadfsf-binutils-gdb-2ce6d6bf7c5f2c7ef3e816b1c64b4e14e52ca6bd.zip
fsf-binutils-gdb-2ce6d6bf7c5f2c7ef3e816b1c64b4e14e52ca6bd.tar.gz
fsf-binutils-gdb-2ce6d6bf7c5f2c7ef3e816b1c64b4e14e52ca6bd.tar.bz2
2010-04-15 Stan Shebs <stan@codesourcery.com>
* frame.c: Include tracepoint.h. (get_current_frame): Allow a trace frame to be an alternate source of stack frame data. * tracepoint.c (tfind_1): Don't try to get current stack frame if it won't succeed.
Diffstat (limited to 'gdb/tracepoint.c')
-rw-r--r--gdb/tracepoint.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 8222182..bf328fd 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -1856,11 +1856,19 @@ tfind_1 (enum trace_find_type type, int num,
int from_tty)
{
int target_frameno = -1, target_tracept = -1;
- struct frame_id old_frame_id;
+ struct frame_id old_frame_id = null_frame_id;
char *reply;
struct breakpoint *tp;
- old_frame_id = get_frame_id (get_current_frame ());
+ /* Only try to get the current stack frame if we have a chance of
+ succeeding. In particular, if we're trying to get a first trace
+ frame while all threads are running, it's not going to succeed,
+ so leave it with a default value and let the frame comparison
+ below (correctly) decide to print out the source location of the
+ trace frame. */
+ if (!(type == tfind_number && num == -1)
+ && (has_stack_frames () || traceframe_number >= 0))
+ old_frame_id = get_frame_id (get_current_frame ());
target_frameno = target_trace_find (type, num, addr1, addr2,
&target_tracept);
@@ -1873,7 +1881,7 @@ tfind_1 (enum trace_find_type type, int num,
}
else if (target_frameno == -1)
{
- /* A request for a non-existant trace frame has failed.
+ /* A request for a non-existent trace frame has failed.
Our response will be different, depending on FROM_TTY:
If FROM_TTY is true, meaning that this command was
@@ -1952,7 +1960,7 @@ tfind_1 (enum trace_find_type type, int num,
{
enum print_what print_what;
- /* NOTE: in immitation of the step command, try to determine
+ /* NOTE: in imitation of the step command, try to determine
whether we have made a transition from one function to
another. If so, we'll print the "stack frame" (ie. the new
function and it's arguments) -- otherwise we'll just show the