2002-11-15 Andrew Cagney <ac131313@redhat.com>
[deliverable/binutils-gdb.git] / gdb / complaints.h
index d65b037c3b52b055ee3aec137490e28dfed19a7f..f43feb0fc6a65f4bb00518f89f78205108434fc0 100644 (file)
@@ -1,5 +1,7 @@
 /* Definitions for complaint handling during symbol reading in GDB.
-   Copyright (C) 1990, 1991, 1992  Free Software Foundation, Inc.
+
+   Copyright 1990, 1991, 1992, 1995, 1998, 2000, 2002 Free Software
+   Foundation, Inc.
 
    This file is part of GDB.
 
 #if !defined (COMPLAINTS_H)
 #define COMPLAINTS_H
 
+/* Opaque object used to track the number of complaints of a
+   particular category.  */
+struct complaints;
 
-/* Support for complaining about things in the symbol file that aren't
-   catastrophic.
+/* Predefined categories.  */
+extern struct complaints *symfile_complaints;
+
+/* Register a complaint.  */
+extern void complaint (struct complaints **complaints, const char *fmt,
+                      ...) ATTR_FORMAT (printf, 2, 3);
+extern void internal_complaint (struct complaints **complaints,
+                               const char *file, int line, const char *fmt,
+                               ...) ATTR_FORMAT (printf, 4, 5);
+
+/* Clear out / initialize all complaint counters that have ever been
+   incremented.  If LESS_VERBOSE is 1, be less verbose about
+   successive complaints, since the messages are appearing all
+   together during a command that is reporting a contiguous block of
+   complaints (rather than being interleaved with other messages).  If
+   noisy is 1, we are in a noisy command, and our caller will print
+   enough context for the user to figure it out.  */
+
+extern void clear_complaints (struct complaints **complaints,
+                             int less_verbose, int noisy);
 
-   Each such thing gets a counter.  The first time we have the problem,
-   during a symbol read, we report it.  At the end of symbol reading,
-   if verbose, we report how many of each problem we had.  */
 
-struct complaint
-  {
-    char *message;
-    unsigned counter;
-    struct complaint *next;
-  };
+/* Deprecated interfaces to keep the old code working (until it is all
+   converted to the above).  Existing code such as:
 
-/* Root of the chain of complaints that have at some point been issued. 
-   This is used to reset the counters, and/or report the total counts.  */
+     struct deprecated_complaint msg = { "msg 0x%08x[sic]", 0, 0 };
+     deprecated_complain (&msg, addr);
 
-extern struct complaint complaint_root[1];
+   should be replaced by either the new call (for the singular case):
 
-/* Functions that handle complaints.  (in complaints.c)  */
+     complaint (&symtab_complaints, "msg 0x%s", paddr (addr));
 
-extern void
-complain PARAMS ((struct complaint *,...));
+   or with a wrapper function (for the many-of case):
+
+     msg_complaint (CORE_ADDR addr)
+     { complaint (&symtab_complaints, "msg 0x%s", paddr (addr)); }
+     ...
+     msg_complaint (addr);
+
+   Yes, the typo is intentional.  The motivation behind this interface
+   change is to eliminate all possability of this problem re-occuring
+   (it has occured in the past and no one is sure that it isn't
+   present now).
+
+   Support for complaining about things in the symbol file that aren't
+   catastrophic.
+
+   Each such thing gets a counter.  The first time we have the problem,
+   during a symbol read, we report it.  At the end of symbol reading,
+   if verbose, we report how many of each problem we had.  */
 
-extern void
-clear_complaints PARAMS ((int, int));
+struct deprecated_complaint
+{
+  const char *message;
+  unsigned counter_ignored;
+  struct deprecated_complaint *next_ignored;
+};
 
+extern void complain (struct deprecated_complaint *, ...);
 
 #endif /* !defined (COMPLAINTS_H) */
This page took 0.028213 seconds and 4 git commands to generate.