diff options
author | Stan Shebs <shebs@codesourcery.com> | 2010-01-07 19:17:46 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 2010-01-07 19:17:46 +0000 |
commit | 35b1e5cca081f63a45e2d6bbc90010e553f7c5c8 (patch) | |
tree | 8218989127b1070c5b6c3dde0eff2b18f3623774 /gdb/target.h | |
parent | 3f08eb35896e102a28d1249ca197c037c4efa9de (diff) | |
download | fsf-binutils-gdb-35b1e5cca081f63a45e2d6bbc90010e553f7c5c8.zip fsf-binutils-gdb-35b1e5cca081f63a45e2d6bbc90010e553f7c5c8.tar.gz fsf-binutils-gdb-35b1e5cca081f63a45e2d6bbc90010e553f7c5c8.tar.bz2 |
Make tracepoint operations go through target vector.
* target.h (enum trace_find_type): New enum.
(struct target_ops): New fields to_trace_init,
to_download_tracepoint, to_download_trace_state_variable,
to_trace_set_readonly_regions, to_trace_start, to_get_trace_status,
to_trace_stop, to_trace_find, to_get_trace_state_variable_value,
to_set_disconnected_tracing.
(target_trace_init): New macro.
(target_download_tracepoint): New macro.
(target_download_trace_state_variable): New macro.
(target_trace_start): New macro.
(target_trace_set_readonly_regions): New macro.
(target_get_trace_status): New macro.
(target_trace_stop): New macro.
(target_trace_find): New macro.
(target_get_trace_state_variable_value): New macro.
(target_set_disconnected_tracing): New macro.
* target.c (update_current_target): Inherit and set defaults for
tracepoint operations.
* tracepoint.c (default_collect): Make globally visible.
(target_is_remote): Remove, along with all calls.
(tvariables_info): Call target_get_trace_state_variable_value.
(remote_set_transparent_ranges): Remove.
(trace_start_command): Call target_trace_init,
target_download_tracepoint, etc.
(download_tracepoint): Remove.
(trace_stop_command): Simplify.
(stop_tracing): Call target_trace_stop.
(get_trace_status): Call target_get_trace_status.
(trace_status_command): Add case for targets that cannot trace.
(finish_tfind_command): Change to take numerical arguments, call
target_trace_find.
(trace_find_command): Update call to finish_tfind_command.
(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.
(set_disconnected_tracing_value): Call
target_set_disconnected_tracing.
* remote.c: Add protocol encoding bits from tracepoint.c.
(trace_error): Move from tracepoint.c.
(remote_get_noisy_reply): Ditto.
(free_actions_list_cleanup_wrapper): Ditto.
(free_actions_list): Ditto.
(remote_trace_init): New function.
(remote_download_tracepoint): New function.
(remote_download_trace_state_variable): New function.
(remote_trace_set_readonly_regions): New function.
(remote_trace_start): New function.
(remote_get_trace_status): New function.
(remote_trace_stop): New function.
(remote_trace_find): New function.
(remote_download_trace_state_variable): New function.
(remote_set_disconnected_tracing): New function.
(init_remote_ops): Add tracepoint operations.
Diffstat (limited to 'gdb/target.h')
-rw-r--r-- | gdb/target.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/gdb/target.h b/gdb/target.h index 9a89b93..20cbe29 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -31,6 +31,7 @@ struct target_ops; struct bp_target_info; struct regcache; struct target_section_table; +struct trace_state_variable; /* This include file defines the interface between the main part of the debugger, and the part which is target-specific, or @@ -258,6 +259,18 @@ enum target_object /* Possible future objects: TARGET_OBJECT_FILE, ... */ }; +/* Enumeration of the kinds of traceframe searches that a target may + be able to perform. */ + +enum trace_find_type + { + tfind_number, + tfind_pc, + tfind_tp, + tfind_range, + tfind_outside, + }; + /* Request that OPS transfer up to LEN 8-bit bytes of the target's OBJECT. The OFFSET, for a seekable object, specifies the starting point. The ANNEX can be used to provide additional @@ -597,6 +610,47 @@ struct target_ops struct address_space *(*to_thread_address_space) (struct target_ops *, ptid_t); + /* Tracepoint-related operations. */ + + /* Prepare the target for a tracing run. */ + void (*to_trace_init) (void); + + /* Send full details of a tracepoint to the target. */ + void (*to_download_tracepoint) (struct breakpoint *t); + + /* Send full details of a trace state variable to the target. */ + void (*to_download_trace_state_variable) (struct trace_state_variable *tsv); + + /* Inform the target info of memory regions that are readonly + (such as text sections), and so it should return data from + those rather than look in the trace buffer. */ + void (*to_trace_set_readonly_regions) (void); + + /* Start a trace run. */ + void (*to_trace_start) (void); + + /* Get the current status of a tracing run. */ + int (*to_get_trace_status) (int *stop_reason); + + /* Stop a trace run. */ + void (*to_trace_stop) (void); + + /* Ask the target to find a trace frame of the given type TYPE, + using NUM, ADDR1, and ADDR2 as search parameters. Returns the + number of the trace frame, and also the tracepoint number at + TPP. */ + int (*to_trace_find) (enum trace_find_type type, int num, + ULONGEST addr1, ULONGEST addr2, int *tpp); + + /* Get the value of the trace state variable number TSV, returning + 1 if the value is known and writing the value itself into the + location pointed to by VAL, else returning 0. */ + int (*to_get_trace_state_variable_value) (int tsv, LONGEST *val); + + /* 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); + int to_magic; /* Need sub-structure for target machine related rather than comm related? */ @@ -1238,6 +1292,38 @@ extern int target_search_memory (CORE_ADDR start_addr, ULONGEST pattern_len, CORE_ADDR *found_addrp); +/* Tracepoint-related operations. */ + +#define target_trace_init() \ + (*current_target.to_trace_init) () + +#define target_download_tracepoint(t) \ + (*current_target.to_download_tracepoint) (t) + +#define target_download_trace_state_variable(tsv) \ + (*current_target.to_download_trace_state_variable) (tsv) + +#define target_trace_start() \ + (*current_target.to_trace_start) () + +#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_trace_stop() \ + (*current_target.to_trace_stop) () + +#define target_trace_find(type,num,addr1,addr2,tpp) \ + (*current_target.to_trace_find) ((type), (num), (addr1), (addr2), (tpp)) + +#define target_get_trace_state_variable_value(tsv,val) \ + (*current_target.to_get_trace_state_variable_value) ((tsv), (val)) + +#define target_set_disconnected_tracing(val) \ + (*current_target.to_set_disconnected_tracing) (val) + /* Command logging facility. */ #define target_log_command(p) \ |