+ int circular_buffer;
+
+ /* The "name" of the person running the trace. This is an
+ arbitrary string. */
+
+ char *user_name;
+
+ /* "Notes" about the trace. This is an arbitrary string not
+ interpreted by GDBserver in any special way. */
+
+ char *notes;
+
+ /* The calendar times at which the trace run started and stopped,
+ both expressed in microseconds of Unix time. */
+
+ LONGEST start_time;
+ LONGEST stop_time;
+};
+
+struct trace_status *current_trace_status (void);
+
+extern char *default_collect;
+
+extern int trace_regblock_size;
+
+extern const char *stop_reason_names[];
+
+/* Struct to collect random info about tracepoints on the target. */
+
+struct uploaded_tp
+{
+ int number;
+ enum bptype type;
+ ULONGEST addr;
+ int enabled;
+ int step;
+ int pass;
+ int orig_size;
+
+ /* String that is the encoded form of the tracepoint's condition. */
+ char *cond;
+
+ /* Vectors of strings that are the encoded forms of a tracepoint's
+ actions. */
+ VEC(char_ptr) *actions;
+ VEC(char_ptr) *step_actions;
+
+ /* The original string defining the location of the tracepoint. */
+ char *at_string;
+
+ /* The original string defining the tracepoint's condition. */
+ char *cond_string;
+
+ /* List of original strings defining the tracepoint's actions. */
+ VEC(char_ptr) *cmd_strings;
+
+ /* The tracepoint's current hit count. */
+ int hit_count;
+
+ /* The tracepoint's current traceframe usage. */
+ ULONGEST traceframe_usage;
+
+ struct uploaded_tp *next;
+};
+
+/* Struct recording info about trace state variables on the target. */
+
+struct uploaded_tsv
+{
+ const char *name;
+ int number;
+ LONGEST initial_value;
+ int builtin;
+ struct uploaded_tsv *next;
+};
+
+/* Struct recording info about a target static tracepoint marker. */
+
+struct static_tracepoint_marker
+{
+ struct gdbarch *gdbarch;
+ CORE_ADDR address;
+
+ /* The string ID of the marker. */
+ char *str_id;
+
+ /* Extra target reported info associated with the marker. */
+ char *extra;
+};
+
+struct memrange
+{
+ memrange (int type_, bfd_signed_vma start_, bfd_signed_vma end_)
+ : type (type_), start (start_), end (end_)
+ {}
+
+ memrange ()
+ {}
+
+ /* memrange_absolute for absolute memory range, else basereg
+ number. */
+ int type;
+ bfd_signed_vma start;
+ bfd_signed_vma end;
+};
+
+class collection_list
+{
+public:
+ collection_list ();
+
+ void add_wholly_collected (const char *print_name);
+
+ void append_exp (struct expression *exp);
+
+ /* Add AEXPR to the list, taking ownership. */
+ void add_aexpr (agent_expr_up aexpr);
+
+ void add_register (unsigned int regno);
+ void add_memrange (struct gdbarch *gdbarch,
+ int type, bfd_signed_vma base,
+ unsigned long len);
+ void collect_symbol (struct symbol *sym,
+ struct gdbarch *gdbarch,
+ long frame_regno, long frame_offset,
+ CORE_ADDR scope,
+ int trace_string);
+
+ void add_local_symbols (struct gdbarch *gdbarch, CORE_ADDR pc,
+ long frame_regno, long frame_offset, int type,
+ int trace_string);
+ void add_static_trace_data ();
+
+ void finish ();
+
+ char **stringify ();
+
+ const std::vector<std::string> &wholly_collected ()
+ { return m_wholly_collected; }
+
+ const std::vector<std::string> &computed ()
+ { return m_computed; }
+
+private:
+ /* room for up to 256 regs */
+ unsigned char m_regs_mask[32];
+
+ std::vector<memrange> m_memranges;
+
+ std::vector<agent_expr_up> m_aexprs;
+
+ /* True is the user requested a collection of "$_sdata", "static
+ tracepoint data". */
+ bool m_strace_data;
+
+ /* A set of names of wholly collected objects. */
+ std::vector<std::string> m_wholly_collected;
+ /* A set of computed expressions. */
+ std::vector<std::string> m_computed;
+};
+
+extern void parse_static_tracepoint_marker_definition
+ (char *line, char **pp,
+ struct static_tracepoint_marker *marker);
+extern void release_static_tracepoint_marker (struct static_tracepoint_marker *);
+extern void free_current_marker (void *arg);
+
+/* A hook used to notify the UI of tracepoint operations. */
+
+extern void (*deprecated_trace_find_hook) (char *arg, int from_tty);
+extern void (*deprecated_trace_start_stop_hook) (int start, int from_tty);
+
+/* Returns the current traceframe number. */
+extern int get_traceframe_number (void);
+
+/* Returns the tracepoint number for current traceframe. */
+extern int get_tracepoint_number (void);
+
+/* Make the traceframe NUM be the current trace frame, all the way to
+ the target, and flushes all global state (register/frame caches,
+ etc.). */
+extern void set_current_traceframe (int num);
+
+struct cleanup *make_cleanup_restore_current_traceframe (void);
+
+void free_actions (struct breakpoint *);
+
+extern const char *decode_agent_options (const char *exp, int *trace_string);
+
+extern void encode_actions (struct bp_location *tloc,
+ struct collection_list *tracepoint_list,
+ struct collection_list *stepping_list);
+
+extern void encode_actions_rsp (struct bp_location *tloc,
+ char ***tdp_actions, char ***stepping_actions);
+
+extern void validate_actionline (const char *, struct breakpoint *);
+extern void validate_trace_state_variable_name (const char *name);
+
+extern struct trace_state_variable *find_trace_state_variable (const char *name);
+extern struct trace_state_variable *
+ find_trace_state_variable_by_number (int number);
+
+extern struct trace_state_variable *create_trace_state_variable (const char *name);
+
+extern int encode_source_string (int num, ULONGEST addr,
+ char *srctype, const char *src,
+ char *buf, int buf_size);
+
+extern void parse_trace_status (char *line, struct trace_status *ts);
+
+extern void parse_tracepoint_status (char *p, struct breakpoint *tp,
+ struct uploaded_tp *utp);
+
+extern void parse_tracepoint_definition (char *line,
+ struct uploaded_tp **utpp);
+extern void parse_tsv_definition (char *line, struct uploaded_tsv **utsvp);
+
+extern struct uploaded_tp *get_uploaded_tp (int num, ULONGEST addr,
+ struct uploaded_tp **utpp);
+extern void free_uploaded_tps (struct uploaded_tp **utpp);
+
+extern struct uploaded_tsv *get_uploaded_tsv (int num,
+ struct uploaded_tsv **utsvp);
+extern void free_uploaded_tsvs (struct uploaded_tsv **utsvp);
+extern struct tracepoint *create_tracepoint_from_upload (struct uploaded_tp *utp);
+extern void merge_uploaded_tracepoints (struct uploaded_tp **utpp);
+extern void merge_uploaded_trace_state_variables (struct uploaded_tsv **utsvp);
+
+extern void query_if_trace_running (int from_tty);
+extern void disconnect_tracing (void);
+extern void trace_reset_local_state (void);