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