diff options
author | Pedro Alves <palves@redhat.com> | 2011-03-18 18:47:56 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-03-18 18:47:56 +0000 |
commit | dba09041c7c7ac429ebc414c10a9d8ce8472f265 (patch) | |
tree | 4ba09319df5a6d6c2694903305c7586d181c08aa /gdb/tracepoint.c | |
parent | 9a26e44c7c1a09ebde0a3f5486246f9dabe3d64f (diff) | |
download | gdb-dba09041c7c7ac429ebc414c10a9d8ce8472f265.zip gdb-dba09041c7c7ac429ebc414c10a9d8ce8472f265.tar.gz gdb-dba09041c7c7ac429ebc414c10a9d8ce8472f265.tar.bz2 |
gdb/
* tracepoint.c (set_traceframe_context): Handle unavailable PC
gracefully.
Diffstat (limited to 'gdb/tracepoint.c')
-rw-r--r-- | gdb/tracepoint.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index c9997c6..3ae35d0 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -268,27 +268,25 @@ set_traceframe_context (struct frame_info *trace_frame) { CORE_ADDR trace_pc; - if (trace_frame == NULL) /* Cease debugging any trace buffers. */ + /* Save as globals for internal use. */ + if (trace_frame != NULL + && get_frame_pc_if_available (trace_frame, &trace_pc)) + { + traceframe_sal = find_pc_line (trace_pc, 0); + traceframe_fun = find_pc_function (trace_pc); + + /* Save linenumber as "$trace_line", a debugger variable visible to + users. */ + set_internalvar_integer (lookup_internalvar ("trace_line"), + traceframe_sal.line); + } + else { - traceframe_fun = 0; - traceframe_sal.pc = traceframe_sal.line = 0; - traceframe_sal.symtab = NULL; - clear_internalvar (lookup_internalvar ("trace_func")); - clear_internalvar (lookup_internalvar ("trace_file")); + init_sal (&traceframe_sal); + traceframe_fun = NULL; set_internalvar_integer (lookup_internalvar ("trace_line"), -1); - return; } - /* Save as globals for internal use. */ - trace_pc = get_frame_pc (trace_frame); - traceframe_sal = find_pc_line (trace_pc, 0); - traceframe_fun = find_pc_function (trace_pc); - - /* Save linenumber as "$trace_line", a debugger variable visible to - users. */ - set_internalvar_integer (lookup_internalvar ("trace_line"), - traceframe_sal.line); - /* Save func name as "$trace_func", a debugger variable visible to users. */ if (traceframe_fun == NULL |