Switch the license of all .c files to GPLv3.
[deliverable/binutils-gdb.git] / gdb / annotate.c
1 /* Annotation routines for GDB.
2 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1998, 1999,
3 2000, 2007 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
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.
11
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.
16
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/>. */
19
20 #include "defs.h"
21 #include "annotate.h"
22 #include "value.h"
23 #include "target.h"
24 #include "gdbtypes.h"
25 #include "breakpoint.h"
26 \f
27
28 /* Prototypes for local functions. */
29
30 extern void _initialize_annotate (void);
31
32 static void print_value_flags (struct type *);
33
34 static void breakpoint_changed (struct breakpoint *);
35
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);
41
42 static int ignore_count_changed = 0;
43
44 static void
45 print_value_flags (struct type *t)
46 {
47 if (can_dereference (t))
48 printf_filtered (("*"));
49 else
50 printf_filtered (("-"));
51 }
52 \f
53 void
54 breakpoints_changed (void)
55 {
56 if (annotation_level == 2)
57 {
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. */
62 }
63 }
64
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". */
70
71 void
72 annotate_ignore_count_change (void)
73 {
74 if (annotation_level > 1)
75 ignore_count_changed = 1;
76 }
77
78 void
79 annotate_breakpoint (int num)
80 {
81 if (annotation_level > 1)
82 printf_filtered (("\n\032\032breakpoint %d\n"), num);
83 }
84
85 void
86 annotate_catchpoint (int num)
87 {
88 if (annotation_level > 1)
89 printf_filtered (("\n\032\032catchpoint %d\n"), num);
90 }
91
92 void
93 annotate_watchpoint (int num)
94 {
95 if (annotation_level > 1)
96 printf_filtered (("\n\032\032watchpoint %d\n"), num);
97 }
98
99 void
100 annotate_starting (void)
101 {
102
103 if (deprecated_annotate_starting_hook)
104 deprecated_annotate_starting_hook ();
105 else
106 {
107 if (annotation_level > 1)
108 {
109 printf_filtered (("\n\032\032starting\n"));
110 }
111 }
112 }
113
114 void
115 annotate_stopped (void)
116 {
117 if (deprecated_annotate_stopped_hook)
118 deprecated_annotate_stopped_hook ();
119 else
120 {
121 if (annotation_level > 1)
122 printf_filtered (("\n\032\032stopped\n"));
123 }
124 if (annotation_level > 1 && ignore_count_changed)
125 {
126 ignore_count_changed = 0;
127 breakpoints_changed ();
128 }
129 }
130
131 void
132 annotate_exited (int exitstatus)
133 {
134 if (deprecated_annotate_exited_hook)
135 deprecated_annotate_exited_hook ();
136 else
137 {
138 if (annotation_level > 1)
139 printf_filtered (("\n\032\032exited %d\n"), exitstatus);
140 }
141 }
142
143 void
144 annotate_signalled (void)
145 {
146 if (deprecated_annotate_signalled_hook)
147 deprecated_annotate_signalled_hook ();
148
149 if (annotation_level > 1)
150 printf_filtered (("\n\032\032signalled\n"));
151 }
152
153 void
154 annotate_signal_name (void)
155 {
156 if (annotation_level == 2)
157 printf_filtered (("\n\032\032signal-name\n"));
158 }
159
160 void
161 annotate_signal_name_end (void)
162 {
163 if (annotation_level == 2)
164 printf_filtered (("\n\032\032signal-name-end\n"));
165 }
166
167 void
168 annotate_signal_string (void)
169 {
170 if (annotation_level == 2)
171 printf_filtered (("\n\032\032signal-string\n"));
172 }
173
174 void
175 annotate_signal_string_end (void)
176 {
177 if (annotation_level == 2)
178 printf_filtered (("\n\032\032signal-string-end\n"));
179 }
180
181 void
182 annotate_signal (void)
183 {
184 if (deprecated_annotate_signal_hook)
185 deprecated_annotate_signal_hook ();
186
187 if (annotation_level > 1)
188 printf_filtered (("\n\032\032signal\n"));
189 }
190 \f
191 void
192 annotate_breakpoints_headers (void)
193 {
194 if (annotation_level == 2)
195 printf_filtered (("\n\032\032breakpoints-headers\n"));
196 }
197
198 void
199 annotate_field (int num)
200 {
201 if (annotation_level == 2)
202 printf_filtered (("\n\032\032field %d\n"), num);
203 }
204
205 void
206 annotate_breakpoints_table (void)
207 {
208 if (annotation_level == 2)
209 printf_filtered (("\n\032\032breakpoints-table\n"));
210 }
211
212 void
213 annotate_record (void)
214 {
215 if (annotation_level == 2)
216 printf_filtered (("\n\032\032record\n"));
217 }
218
219 void
220 annotate_breakpoints_table_end (void)
221 {
222 if (annotation_level == 2)
223 printf_filtered (("\n\032\032breakpoints-table-end\n"));
224 }
225
226 void
227 annotate_frames_invalid (void)
228 {
229 if (annotation_level == 2)
230 {
231 target_terminal_ours ();
232 printf_unfiltered (("\n\032\032frames-invalid\n"));
233 }
234 }
235
236 void
237 annotate_field_begin (struct type *type)
238 {
239 if (annotation_level == 2)
240 {
241 printf_filtered (("\n\032\032field-begin "));
242 print_value_flags (type);
243 printf_filtered (("\n"));
244 }
245 }
246
247 void
248 annotate_field_name_end (void)
249 {
250 if (annotation_level == 2)
251 printf_filtered (("\n\032\032field-name-end\n"));
252 }
253
254 void
255 annotate_field_value (void)
256 {
257 if (annotation_level == 2)
258 printf_filtered (("\n\032\032field-value\n"));
259 }
260
261 void
262 annotate_field_end (void)
263 {
264 if (annotation_level == 2)
265 printf_filtered (("\n\032\032field-end\n"));
266 }
267 \f
268 void
269 annotate_quit (void)
270 {
271 if (annotation_level > 1)
272 printf_filtered (("\n\032\032quit\n"));
273 }
274
275 void
276 annotate_error (void)
277 {
278 if (annotation_level > 1)
279 printf_filtered (("\n\032\032error\n"));
280 }
281
282 void
283 annotate_error_begin (void)
284 {
285 if (annotation_level > 1)
286 fprintf_filtered (gdb_stderr, "\n\032\032error-begin\n");
287 }
288
289 void
290 annotate_value_history_begin (int histindex, struct type *type)
291 {
292 if (annotation_level == 2)
293 {
294 printf_filtered (("\n\032\032value-history-begin %d "), histindex);
295 print_value_flags (type);
296 printf_filtered (("\n"));
297 }
298 }
299
300 void
301 annotate_value_begin (struct type *type)
302 {
303 if (annotation_level == 2)
304 {
305 printf_filtered (("\n\032\032value-begin "));
306 print_value_flags (type);
307 printf_filtered (("\n"));
308 }
309 }
310
311 void
312 annotate_value_history_value (void)
313 {
314 if (annotation_level == 2)
315 printf_filtered (("\n\032\032value-history-value\n"));
316 }
317
318 void
319 annotate_value_history_end (void)
320 {
321 if (annotation_level == 2)
322 printf_filtered (("\n\032\032value-history-end\n"));
323 }
324
325 void
326 annotate_value_end (void)
327 {
328 if (annotation_level == 2)
329 printf_filtered (("\n\032\032value-end\n"));
330 }
331
332 void
333 annotate_display_begin (void)
334 {
335 if (annotation_level == 2)
336 printf_filtered (("\n\032\032display-begin\n"));
337 }
338
339 void
340 annotate_display_number_end (void)
341 {
342 if (annotation_level == 2)
343 printf_filtered (("\n\032\032display-number-end\n"));
344 }
345
346 void
347 annotate_display_format (void)
348 {
349 if (annotation_level == 2)
350 printf_filtered (("\n\032\032display-format\n"));
351 }
352
353 void
354 annotate_display_expression (void)
355 {
356 if (annotation_level == 2)
357 printf_filtered (("\n\032\032display-expression\n"));
358 }
359
360 void
361 annotate_display_expression_end (void)
362 {
363 if (annotation_level == 2)
364 printf_filtered (("\n\032\032display-expression-end\n"));
365 }
366
367 void
368 annotate_display_value (void)
369 {
370 if (annotation_level == 2)
371 printf_filtered (("\n\032\032display-value\n"));
372 }
373
374 void
375 annotate_display_end (void)
376 {
377 if (annotation_level == 2)
378 printf_filtered (("\n\032\032display-end\n"));
379 }
380
381 void
382 annotate_arg_begin (void)
383 {
384 if (annotation_level == 2)
385 printf_filtered (("\n\032\032arg-begin\n"));
386 }
387
388 void
389 annotate_arg_name_end (void)
390 {
391 if (annotation_level == 2)
392 printf_filtered (("\n\032\032arg-name-end\n"));
393 }
394
395 void
396 annotate_arg_value (struct type *type)
397 {
398 if (annotation_level == 2)
399 {
400 printf_filtered (("\n\032\032arg-value "));
401 print_value_flags (type);
402 printf_filtered (("\n"));
403 }
404 }
405
406 void
407 annotate_arg_end (void)
408 {
409 if (annotation_level == 2)
410 printf_filtered (("\n\032\032arg-end\n"));
411 }
412
413 void
414 annotate_source (char *filename, int line, int character, int mid, CORE_ADDR pc)
415 {
416 if (annotation_level > 1)
417 printf_filtered (("\n\032\032source "));
418 else
419 printf_filtered (("\032\032"));
420
421 printf_filtered (("%s:%d:%d:%s:0x"), filename,
422 line, character,
423 mid ? "middle" : "beg");
424 deprecated_print_address_numeric (pc, 0, gdb_stdout);
425 printf_filtered (("\n"));
426 }
427
428 void
429 annotate_frame_begin (int level, CORE_ADDR pc)
430 {
431 if (annotation_level > 1)
432 {
433 printf_filtered (("\n\032\032frame-begin %d 0x"), level);
434 deprecated_print_address_numeric (pc, 0, gdb_stdout);
435 printf_filtered (("\n"));
436 }
437 }
438
439 void
440 annotate_function_call (void)
441 {
442 if (annotation_level == 2)
443 printf_filtered (("\n\032\032function-call\n"));
444 }
445
446 void
447 annotate_signal_handler_caller (void)
448 {
449 if (annotation_level == 2)
450 printf_filtered (("\n\032\032signal-handler-caller\n"));
451 }
452
453 void
454 annotate_frame_address (void)
455 {
456 if (annotation_level == 2)
457 printf_filtered (("\n\032\032frame-address\n"));
458 }
459
460 void
461 annotate_frame_address_end (void)
462 {
463 if (annotation_level == 2)
464 printf_filtered (("\n\032\032frame-address-end\n"));
465 }
466
467 void
468 annotate_frame_function_name (void)
469 {
470 if (annotation_level == 2)
471 printf_filtered (("\n\032\032frame-function-name\n"));
472 }
473
474 void
475 annotate_frame_args (void)
476 {
477 if (annotation_level == 2)
478 printf_filtered (("\n\032\032frame-args\n"));
479 }
480
481 void
482 annotate_frame_source_begin (void)
483 {
484 if (annotation_level == 2)
485 printf_filtered (("\n\032\032frame-source-begin\n"));
486 }
487
488 void
489 annotate_frame_source_file (void)
490 {
491 if (annotation_level == 2)
492 printf_filtered (("\n\032\032frame-source-file\n"));
493 }
494
495 void
496 annotate_frame_source_file_end (void)
497 {
498 if (annotation_level == 2)
499 printf_filtered (("\n\032\032frame-source-file-end\n"));
500 }
501
502 void
503 annotate_frame_source_line (void)
504 {
505 if (annotation_level == 2)
506 printf_filtered (("\n\032\032frame-source-line\n"));
507 }
508
509 void
510 annotate_frame_source_end (void)
511 {
512 if (annotation_level == 2)
513 printf_filtered (("\n\032\032frame-source-end\n"));
514 }
515
516 void
517 annotate_frame_where (void)
518 {
519 if (annotation_level == 2)
520 printf_filtered (("\n\032\032frame-where\n"));
521 }
522
523 void
524 annotate_frame_end (void)
525 {
526 if (annotation_level == 2)
527 printf_filtered (("\n\032\032frame-end\n"));
528 }
529 \f
530 void
531 annotate_array_section_begin (int index, struct type *elttype)
532 {
533 if (annotation_level == 2)
534 {
535 printf_filtered (("\n\032\032array-section-begin %d "), index);
536 print_value_flags (elttype);
537 printf_filtered (("\n"));
538 }
539 }
540
541 void
542 annotate_elt_rep (unsigned int repcount)
543 {
544 if (annotation_level == 2)
545 printf_filtered (("\n\032\032elt-rep %u\n"), repcount);
546 }
547
548 void
549 annotate_elt_rep_end (void)
550 {
551 if (annotation_level == 2)
552 printf_filtered (("\n\032\032elt-rep-end\n"));
553 }
554
555 void
556 annotate_elt (void)
557 {
558 if (annotation_level == 2)
559 printf_filtered (("\n\032\032elt\n"));
560 }
561
562 void
563 annotate_array_section_end (void)
564 {
565 if (annotation_level == 2)
566 printf_filtered (("\n\032\032array-section-end\n"));
567 }
568
569 static void
570 breakpoint_changed (struct breakpoint *b)
571 {
572 breakpoints_changed ();
573 }
574
575 void
576 _initialize_annotate (void)
577 {
578 if (annotation_level == 2)
579 {
580 deprecated_delete_breakpoint_hook = breakpoint_changed;
581 deprecated_modify_breakpoint_hook = breakpoint_changed;
582 }
583 }
This page took 0.048892 seconds and 5 git commands to generate.