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