diff options
author | Stan Shebs <shebs@codesourcery.com> | 2010-01-15 22:37:20 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 2010-01-15 22:37:20 +0000 |
commit | 00bf0b8586eece6ef4e508343e9896d309c2004e (patch) | |
tree | 53202654ea4c6e5c41252c0d74790e03becc6dc8 /gdb/target.h | |
parent | 6ec12636a713f947bf37b8f355a0e53c94f4a8e9 (diff) | |
download | gdb-00bf0b8586eece6ef4e508343e9896d309c2004e.zip gdb-00bf0b8586eece6ef4e508343e9896d309c2004e.tar.gz gdb-00bf0b8586eece6ef4e508343e9896d309c2004e.tar.bz2 |
Add trace file support.
* tracepoint.h (enum trace_stop_reason): New enum.
(struct trace_status): New struct.
(parse_trace_status): Declare.
(struct uploaded_tp): Move here from remote.c,
add fields for actions.
(struct uploaded_tsv): New struct.
* tracepoint.c (tfile_ops): New target vector.
(trace_fd): New global.
(tfile_open): New function.
(tfile_close): New function.
(tfile_files_info): New function.
(tfile_get_trace_status): New function.
(tfile_get_traceframe_address): New function.
(tfile_trace_find): New function.
(tfile_fetch_registers): New function.
(tfile_xfer_partial): New function.
(tfile_get_trace_state_variable_value): New function.
(init_tfile_ops): New function.
(_initialize_tracepoint): Call it, add tfile target.
(trace_status): New global.
(current_trace_status): New function.
(trace_running_p): Remove, change all users to get from
current_trace_status()->running.
(get_trace_status): Remove.
(trace_status_command): Call target_get_trace_status directly,
report more detail including tracing stop reasons.
(trace_find_command): Always allow tfind on a file.
(trace_find_pc_command): Ditto.
(trace_find_tracepoint_command): Ditto.
(trace_find_line_command): Ditto.
(trace_find_range_command): Ditto.
(trace_find_outside_command): Ditto.
(trace_frames_offset, cur_offset): Declare as off_t.
(trace_regblock_size): Rename from reg_size, update users.
(parse_trace_status): New function.
(tfile_interp_line): New function.
(disconnect_or_stop_tracing): Ensure current trace
status before asking what to do.
(stop_reason_names): New global.
(trace_save_command): New command.
(get_uploaded_tp): Move here from remote.c.
(find_matching_tracepoint): Ditto.
(merge_uploaded_tracepoints): New function.
(parse_trace_status): Use stop_reason_names.
(_initialize_tracepoint): Define tsave command.
* target.h (target_ops): New fields to_save_trace_data,
to_upload_tracepoints, to_upload_trace_state_variables,
to_get_raw_trace_data, change to_get_trace_status
to take a pointer to a status struct.
(target_save_trace_data): New macro.
(target_upload_tracepoints): New macro.
(target_upload_trace_state_variables): New macro.
(target_get_raw_trace_data): New macro.
* target.c (update_current_target): Add new methods, change
signature of to_get_trace_status.
* remote.c (hex2bin): Make globally visible.
(bin2hex): Ditto.
(remote_download_trace_state_variable): Download name also.
(remote_get_trace_status): Update parameter, use
parse_trace_status.
(remote_save_trace_data): New function.
(remote_upload_tracepoints): New function.
(remote_upload_trace_state_variables): New function.
(remote_get_raw_trace_data): New function.
(remote_start_remote): Use them.
(_initialize_remote_ops): Add operations.
* ax-gdb.c: Include breakpoint.h.
* breakpoint.c (create_tracepoint_from_upload): Use
break_command_really, return tracepoint, warn about unimplemented
parts.
* NEWS: Mention trace file addition.
* gdb.texinfo (Trace Files): New section.
(Tracepoint Packets): Document QTSave and qTBuffer.
(Trace File Format): New appendix.
* generic/gdbtk-bp.c (gdb_trace_status): Use current_trace_status.
* gdb.trace/tfile.c: New file.
* gdb.trace/tfile.exp: New file.
Diffstat (limited to 'gdb/target.h')
-rw-r--r-- | gdb/target.h | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/gdb/target.h b/gdb/target.h index a020bf7..7103ab2 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -32,6 +32,9 @@ struct bp_target_info; struct regcache; struct target_section_table; struct trace_state_variable; +struct trace_status; +struct uploaded_tsv; +struct uploaded_tp; /* This include file defines the interface between the main part of the debugger, and the part which is target-specific, or @@ -632,7 +635,7 @@ struct target_ops void (*to_trace_start) (void); /* Get the current status of a tracing run. */ - int (*to_get_trace_status) (int *stop_reason); + int (*to_get_trace_status) (struct trace_status *ts); /* Stop a trace run. */ void (*to_trace_stop) (void); @@ -649,6 +652,15 @@ struct target_ops location pointed to by VAL, else returning 0. */ int (*to_get_trace_state_variable_value) (int tsv, LONGEST *val); + int (*to_save_trace_data) (char *filename); + + int (*to_upload_tracepoints) (struct uploaded_tp **utpp); + + int (*to_upload_trace_state_variables) (struct uploaded_tsv **utsvp); + + LONGEST (*to_get_raw_trace_data) (gdb_byte *buf, + ULONGEST offset, LONGEST len); + /* Set the target's tracing behavior in response to unexpected disconnection - set VAL to 1 to keep tracing, 0 to stop. */ void (*to_set_disconnected_tracing) (int val); @@ -1319,8 +1331,8 @@ extern int target_search_memory (CORE_ADDR start_addr, #define target_trace_set_readonly_regions() \ (*current_target.to_trace_set_readonly_regions) () -#define target_get_trace_status(stop_reason) \ - (*current_target.to_get_trace_status) (stop_reason) +#define target_get_trace_status(ts) \ + (*current_target.to_get_trace_status) (ts) #define target_trace_stop() \ (*current_target.to_trace_stop) () @@ -1331,6 +1343,18 @@ extern int target_search_memory (CORE_ADDR start_addr, #define target_get_trace_state_variable_value(tsv,val) \ (*current_target.to_get_trace_state_variable_value) ((tsv), (val)) +#define target_save_trace_data(filename) \ + (*current_target.to_save_trace_data) (filename) + +#define target_upload_tracepoints(utpp) \ + (*current_target.to_upload_tracepoints) (utpp) + +#define target_upload_trace_state_variables(utsvp) \ + (*current_target.to_upload_trace_state_variables) (utsvp) + +#define target_get_raw_trace_data(buf,offset,len) \ + (*current_target.to_get_raw_trace_data) ((buf), (offset), (len)) + #define target_set_disconnected_tracing(val) \ (*current_target.to_set_disconnected_tracing) (val) |