~ubuntu-branches/debian/jessie/gdb/jessie

« back to all changes in this revision

Viewing changes to gdb/tracepoint.h

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Jacobowitz
  • Date: 2010-03-20 01:21:29 UTC
  • mfrom: (1.3.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20100320012129-t7h25y8zgr8c2369
Tags: 7.1-1
* New upstream release, including:
  - PIE support (Closes: #346409).
  - C++ improvements, including static_cast<> et al, namespace imports,
    and bug fixes in printing virtual base classes.
  - Multi-program debugging.  One GDB can now debug multiple programs
    at the same time.
  - Python scripting improvements, including gdb.parse_and_eval.
  - Updated MIPS Linux signal frame layout (Closes: #570875).
  - No internal error stepping over _dl_debug_state (Closes: #569551).
* Update to Standards-Version: 3.8.4 (no changes required).
* Include more relevant (and smaller) docs in the gdbserver package
  (Closes: #571132).
* Do not duplicate documentation in gdb64, gdb-source, and libgdb-dev.
* Fix crash when switching into TUI mode (Closes: #568489).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Data structures associated with tracepoints in GDB.
2
 
   Copyright (C) 1997, 1998, 1999, 2000, 2007, 2008, 2009
 
2
   Copyright (C) 1997, 1998, 1999, 2000, 2007, 2008, 2009, 2010
3
3
   Free Software Foundation, Inc.
4
4
 
5
5
   This file is part of GDB.
35
35
    STEPPING = 2
36
36
  };
37
37
 
38
 
extern unsigned long trace_running_p;
 
38
/* A trace state variable is a value managed by a target being
 
39
   traced. A trace state variable (or tsv for short) can be accessed
 
40
   and assigned to by tracepoint actions and conditionals, but is not
 
41
   part of the program being traced, and it doesn't have to be
 
42
   collected. Effectively the variables are scratch space for
 
43
   tracepoints.  */
 
44
 
 
45
struct trace_state_variable
 
46
  {
 
47
    /* The variable's name.  The user has to prefix with a dollar sign,
 
48
       but we don't store that internally.  */
 
49
    const char *name;
 
50
 
 
51
    /* An id number assigned by GDB, and transmitted to targets.  */
 
52
    int number;
 
53
 
 
54
    /* The initial value of a variable is a 64-bit signed integer.  */
 
55
    LONGEST initial_value;
 
56
 
 
57
    /* 1 if the value is known, else 0.  The value is known during a
 
58
       trace run, or in tfind mode if the variable was collected into
 
59
       the current trace frame.  */
 
60
    int value_known;
 
61
 
 
62
    /* The value of a variable is a 64-bit signed integer.  */
 
63
    LONGEST value;
 
64
 
 
65
    /* This is true for variables that are predefined and built into
 
66
       the target.  */
 
67
    int builtin;
 
68
   };
 
69
 
 
70
/* The trace status encompasses various info about the general state
 
71
   of the tracing run.  */
 
72
 
 
73
enum trace_stop_reason
 
74
  {
 
75
    trace_stop_reason_unknown,
 
76
    trace_never_run,
 
77
    tstop_command,
 
78
    trace_buffer_full,
 
79
    trace_disconnected,
 
80
    tracepoint_passcount
 
81
  };
 
82
 
 
83
struct trace_status
 
84
{
 
85
  /* This is true if the status is coming from a file rather
 
86
     than a live target.  */
 
87
  int from_file;
 
88
 
 
89
  /* This is true if the value of the running field is known.  */
 
90
  int running_known;
 
91
 
 
92
  int running;
 
93
 
 
94
  enum trace_stop_reason stop_reason;
 
95
 
 
96
  int stopping_tracepoint;
 
97
 
 
98
  int traceframe_count;
 
99
 
 
100
  unsigned long long buffer_size;
 
101
 
 
102
  unsigned long long buffer_free;
 
103
};
 
104
 
 
105
struct trace_status *current_trace_status (void);
 
106
 
 
107
extern char *default_collect;
 
108
 
 
109
/* Struct to collect random info about tracepoints on the target.  */
 
110
 
 
111
struct uploaded_tp {
 
112
  int number;
 
113
  enum bptype type;
 
114
  ULONGEST addr;
 
115
  int enabled;
 
116
  int step;
 
117
  int pass;
 
118
  int orig_size;
 
119
  char *cond;
 
120
  int numactions;
 
121
  char *actions[100];
 
122
  int num_step_actions;
 
123
  char *step_actions[100];
 
124
  struct uploaded_tp *next;
 
125
};
 
126
 
 
127
/* Struct recording info about trace state variables on the target.  */
 
128
 
 
129
struct uploaded_tsv {
 
130
  const char *name;
 
131
  int number;
 
132
  LONGEST initial_value;
 
133
  int builtin;
 
134
  struct uploaded_tsv *next;
 
135
};
39
136
 
40
137
/* A hook used to notify the UI of tracepoint operations.  */
41
138
 
42
 
void (*deprecated_trace_find_hook) (char *arg, int from_tty);
43
 
void (*deprecated_trace_start_stop_hook) (int start, int from_tty);
 
139
extern void (*deprecated_trace_find_hook) (char *arg, int from_tty);
 
140
extern void (*deprecated_trace_start_stop_hook) (int start, int from_tty);
44
141
 
45
142
int get_traceframe_number (void);
 
143
void set_traceframe_number (int);
 
144
struct cleanup *make_cleanup_restore_current_traceframe (void);
 
145
 
46
146
void free_actions (struct breakpoint *);
47
147
enum actionline_type validate_actionline (char **, struct breakpoint *);
48
148
 
49
149
extern void end_actions_pseudocommand (char *args, int from_tty);
50
150
extern void while_stepping_pseudocommand (char *args, int from_tty);
51
151
 
 
152
extern struct trace_state_variable *find_trace_state_variable (const char *name);
 
153
 
 
154
extern void parse_trace_status (char *line, struct trace_status *ts);
 
155
 
 
156
extern void parse_tracepoint_definition (char *line, struct uploaded_tp **utpp);
 
157
extern void parse_tsv_definition (char *line, struct uploaded_tsv **utsvp);
 
158
 
 
159
extern struct uploaded_tp *get_uploaded_tp (int num, ULONGEST addr,
 
160
                                            struct uploaded_tp **utpp);
 
161
extern struct breakpoint *create_tracepoint_from_upload (struct uploaded_tp *utp);
 
162
extern void merge_uploaded_tracepoints (struct uploaded_tp **utpp);
 
163
extern void merge_uploaded_trace_state_variables (struct uploaded_tsv **utsvp);
 
164
 
52
165
#endif  /* TRACEPOINT_H */