1 /* Annotation routines for GDB.
2 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1998, 1999,
3 2000, 2007, 2008 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
25 #include "breakpoint.h"
28 /* Prototypes for local functions. */
30 extern void _initialize_annotate (void);
32 static void print_value_flags (struct type
*);
34 static void breakpoint_changed (struct breakpoint
*);
36 void (*deprecated_annotate_starting_hook
) (void);
37 void (*deprecated_annotate_stopped_hook
) (void);
38 void (*deprecated_annotate_signalled_hook
) (void);
39 void (*deprecated_annotate_signal_hook
) (void);
40 void (*deprecated_annotate_exited_hook
) (void);
42 static int ignore_count_changed
= 0;
45 print_value_flags (struct type
*t
)
47 if (can_dereference (t
))
48 printf_filtered (("*"));
50 printf_filtered (("-"));
54 breakpoints_changed (void)
56 if (annotation_level
== 2)
58 target_terminal_ours ();
59 printf_unfiltered (("\n\032\032breakpoints-invalid\n"));
60 if (ignore_count_changed
)
61 ignore_count_changed
= 0; /* Avoid multiple break annotations. */
65 /* The GUI needs to be informed of ignore_count changes, but we don't
66 want to provide successive multiple breakpoints-invalid messages
67 that are all caused by the fact that the ignore count is changing
68 (which could keep the GUI very busy). One is enough, after the
69 target actually "stops". */
72 annotate_ignore_count_change (void)
74 if (annotation_level
> 1)
75 ignore_count_changed
= 1;
79 annotate_breakpoint (int num
)
81 if (annotation_level
> 1)
82 printf_filtered (("\n\032\032breakpoint %d\n"), num
);
86 annotate_catchpoint (int num
)
88 if (annotation_level
> 1)
89 printf_filtered (("\n\032\032catchpoint %d\n"), num
);
93 annotate_watchpoint (int num
)
95 if (annotation_level
> 1)
96 printf_filtered (("\n\032\032watchpoint %d\n"), num
);
100 annotate_starting (void)
103 if (deprecated_annotate_starting_hook
)
104 deprecated_annotate_starting_hook ();
107 if (annotation_level
> 1)
109 printf_filtered (("\n\032\032starting\n"));
115 annotate_stopped (void)
117 if (deprecated_annotate_stopped_hook
)
118 deprecated_annotate_stopped_hook ();
121 if (annotation_level
> 1)
122 printf_filtered (("\n\032\032stopped\n"));
124 if (annotation_level
> 1 && ignore_count_changed
)
126 ignore_count_changed
= 0;
127 breakpoints_changed ();
132 annotate_exited (int exitstatus
)
134 if (deprecated_annotate_exited_hook
)
135 deprecated_annotate_exited_hook ();
138 if (annotation_level
> 1)
139 printf_filtered (("\n\032\032exited %d\n"), exitstatus
);
144 annotate_signalled (void)
146 if (deprecated_annotate_signalled_hook
)
147 deprecated_annotate_signalled_hook ();
149 if (annotation_level
> 1)
150 printf_filtered (("\n\032\032signalled\n"));
154 annotate_signal_name (void)
156 if (annotation_level
== 2)
157 printf_filtered (("\n\032\032signal-name\n"));
161 annotate_signal_name_end (void)
163 if (annotation_level
== 2)
164 printf_filtered (("\n\032\032signal-name-end\n"));
168 annotate_signal_string (void)
170 if (annotation_level
== 2)
171 printf_filtered (("\n\032\032signal-string\n"));
175 annotate_signal_string_end (void)
177 if (annotation_level
== 2)
178 printf_filtered (("\n\032\032signal-string-end\n"));
182 annotate_signal (void)
184 if (deprecated_annotate_signal_hook
)
185 deprecated_annotate_signal_hook ();
187 if (annotation_level
> 1)
188 printf_filtered (("\n\032\032signal\n"));
192 annotate_breakpoints_headers (void)
194 if (annotation_level
== 2)
195 printf_filtered (("\n\032\032breakpoints-headers\n"));
199 annotate_field (int num
)
201 if (annotation_level
== 2)
202 printf_filtered (("\n\032\032field %d\n"), num
);
206 annotate_breakpoints_table (void)
208 if (annotation_level
== 2)
209 printf_filtered (("\n\032\032breakpoints-table\n"));
213 annotate_record (void)
215 if (annotation_level
== 2)
216 printf_filtered (("\n\032\032record\n"));
220 annotate_breakpoints_table_end (void)
222 if (annotation_level
== 2)
223 printf_filtered (("\n\032\032breakpoints-table-end\n"));
227 annotate_frames_invalid (void)
229 if (annotation_level
== 2)
231 target_terminal_ours ();
232 printf_unfiltered (("\n\032\032frames-invalid\n"));
237 annotate_new_thread (void)
239 if (annotation_level
> 1)
241 printf_unfiltered (("\n\032\032new-thread\n"));
246 annotate_thread_changed (void)
248 if (annotation_level
> 1)
250 printf_unfiltered (("\n\032\032thread-changed\n"));
255 annotate_field_begin (struct type
*type
)
257 if (annotation_level
== 2)
259 printf_filtered (("\n\032\032field-begin "));
260 print_value_flags (type
);
261 printf_filtered (("\n"));
266 annotate_field_name_end (void)
268 if (annotation_level
== 2)
269 printf_filtered (("\n\032\032field-name-end\n"));
273 annotate_field_value (void)
275 if (annotation_level
== 2)
276 printf_filtered (("\n\032\032field-value\n"));
280 annotate_field_end (void)
282 if (annotation_level
== 2)
283 printf_filtered (("\n\032\032field-end\n"));
289 if (annotation_level
> 1)
290 printf_filtered (("\n\032\032quit\n"));
294 annotate_error (void)
296 if (annotation_level
> 1)
297 printf_filtered (("\n\032\032error\n"));
301 annotate_error_begin (void)
303 if (annotation_level
> 1)
304 fprintf_filtered (gdb_stderr
, "\n\032\032error-begin\n");
308 annotate_value_history_begin (int histindex
, struct type
*type
)
310 if (annotation_level
== 2)
312 printf_filtered (("\n\032\032value-history-begin %d "), histindex
);
313 print_value_flags (type
);
314 printf_filtered (("\n"));
319 annotate_value_begin (struct type
*type
)
321 if (annotation_level
== 2)
323 printf_filtered (("\n\032\032value-begin "));
324 print_value_flags (type
);
325 printf_filtered (("\n"));
330 annotate_value_history_value (void)
332 if (annotation_level
== 2)
333 printf_filtered (("\n\032\032value-history-value\n"));
337 annotate_value_history_end (void)
339 if (annotation_level
== 2)
340 printf_filtered (("\n\032\032value-history-end\n"));
344 annotate_value_end (void)
346 if (annotation_level
== 2)
347 printf_filtered (("\n\032\032value-end\n"));
351 annotate_display_begin (void)
353 if (annotation_level
== 2)
354 printf_filtered (("\n\032\032display-begin\n"));
358 annotate_display_number_end (void)
360 if (annotation_level
== 2)
361 printf_filtered (("\n\032\032display-number-end\n"));
365 annotate_display_format (void)
367 if (annotation_level
== 2)
368 printf_filtered (("\n\032\032display-format\n"));
372 annotate_display_expression (void)
374 if (annotation_level
== 2)
375 printf_filtered (("\n\032\032display-expression\n"));
379 annotate_display_expression_end (void)
381 if (annotation_level
== 2)
382 printf_filtered (("\n\032\032display-expression-end\n"));
386 annotate_display_value (void)
388 if (annotation_level
== 2)
389 printf_filtered (("\n\032\032display-value\n"));
393 annotate_display_end (void)
395 if (annotation_level
== 2)
396 printf_filtered (("\n\032\032display-end\n"));
400 annotate_arg_begin (void)
402 if (annotation_level
== 2)
403 printf_filtered (("\n\032\032arg-begin\n"));
407 annotate_arg_name_end (void)
409 if (annotation_level
== 2)
410 printf_filtered (("\n\032\032arg-name-end\n"));
414 annotate_arg_value (struct type
*type
)
416 if (annotation_level
== 2)
418 printf_filtered (("\n\032\032arg-value "));
419 print_value_flags (type
);
420 printf_filtered (("\n"));
425 annotate_arg_end (void)
427 if (annotation_level
== 2)
428 printf_filtered (("\n\032\032arg-end\n"));
432 annotate_source (char *filename
, int line
, int character
, int mid
, CORE_ADDR pc
)
434 if (annotation_level
> 1)
435 printf_filtered (("\n\032\032source "));
437 printf_filtered (("\032\032"));
439 printf_filtered (("%s:%d:%d:%s:%s\n"), filename
, line
, character
,
440 mid
? "middle" : "beg", paddress (pc
));
444 annotate_frame_begin (int level
, CORE_ADDR pc
)
446 if (annotation_level
> 1)
447 printf_filtered (("\n\032\032frame-begin %d %s\n"), level
, paddress (pc
));
451 annotate_function_call (void)
453 if (annotation_level
== 2)
454 printf_filtered (("\n\032\032function-call\n"));
458 annotate_signal_handler_caller (void)
460 if (annotation_level
== 2)
461 printf_filtered (("\n\032\032signal-handler-caller\n"));
465 annotate_frame_address (void)
467 if (annotation_level
== 2)
468 printf_filtered (("\n\032\032frame-address\n"));
472 annotate_frame_address_end (void)
474 if (annotation_level
== 2)
475 printf_filtered (("\n\032\032frame-address-end\n"));
479 annotate_frame_function_name (void)
481 if (annotation_level
== 2)
482 printf_filtered (("\n\032\032frame-function-name\n"));
486 annotate_frame_args (void)
488 if (annotation_level
== 2)
489 printf_filtered (("\n\032\032frame-args\n"));
493 annotate_frame_source_begin (void)
495 if (annotation_level
== 2)
496 printf_filtered (("\n\032\032frame-source-begin\n"));
500 annotate_frame_source_file (void)
502 if (annotation_level
== 2)
503 printf_filtered (("\n\032\032frame-source-file\n"));
507 annotate_frame_source_file_end (void)
509 if (annotation_level
== 2)
510 printf_filtered (("\n\032\032frame-source-file-end\n"));
514 annotate_frame_source_line (void)
516 if (annotation_level
== 2)
517 printf_filtered (("\n\032\032frame-source-line\n"));
521 annotate_frame_source_end (void)
523 if (annotation_level
== 2)
524 printf_filtered (("\n\032\032frame-source-end\n"));
528 annotate_frame_where (void)
530 if (annotation_level
== 2)
531 printf_filtered (("\n\032\032frame-where\n"));
535 annotate_frame_end (void)
537 if (annotation_level
== 2)
538 printf_filtered (("\n\032\032frame-end\n"));
542 annotate_array_section_begin (int index
, struct type
*elttype
)
544 if (annotation_level
== 2)
546 printf_filtered (("\n\032\032array-section-begin %d "), index
);
547 print_value_flags (elttype
);
548 printf_filtered (("\n"));
553 annotate_elt_rep (unsigned int repcount
)
555 if (annotation_level
== 2)
556 printf_filtered (("\n\032\032elt-rep %u\n"), repcount
);
560 annotate_elt_rep_end (void)
562 if (annotation_level
== 2)
563 printf_filtered (("\n\032\032elt-rep-end\n"));
569 if (annotation_level
== 2)
570 printf_filtered (("\n\032\032elt\n"));
574 annotate_array_section_end (void)
576 if (annotation_level
== 2)
577 printf_filtered (("\n\032\032array-section-end\n"));
581 breakpoint_changed (struct breakpoint
*b
)
583 breakpoints_changed ();
587 _initialize_annotate (void)
589 if (annotation_level
== 2)
591 deprecated_delete_breakpoint_hook
= breakpoint_changed
;
592 deprecated_modify_breakpoint_hook
= breakpoint_changed
;