xref: /dflybsd-src/contrib/gcc-8.0/gcc/diagnostic-core.h (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj /* Declarations of core diagnostic functionality for code that does
2*38fd1498Szrj    not need to deal with diagnostic contexts or diagnostic info
3*38fd1498Szrj    structures.
4*38fd1498Szrj    Copyright (C) 1998-2018 Free Software Foundation, Inc.
5*38fd1498Szrj 
6*38fd1498Szrj This file is part of GCC.
7*38fd1498Szrj 
8*38fd1498Szrj GCC is free software; you can redistribute it and/or modify it under
9*38fd1498Szrj the terms of the GNU General Public License as published by the Free
10*38fd1498Szrj Software Foundation; either version 3, or (at your option) any later
11*38fd1498Szrj version.
12*38fd1498Szrj 
13*38fd1498Szrj GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14*38fd1498Szrj WARRANTY; without even the implied warranty of MERCHANTABILITY or
15*38fd1498Szrj FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16*38fd1498Szrj for more details.
17*38fd1498Szrj 
18*38fd1498Szrj You should have received a copy of the GNU General Public License
19*38fd1498Szrj along with GCC; see the file COPYING3.  If not see
20*38fd1498Szrj <http://www.gnu.org/licenses/>.  */
21*38fd1498Szrj 
22*38fd1498Szrj #ifndef GCC_DIAGNOSTIC_CORE_H
23*38fd1498Szrj #define GCC_DIAGNOSTIC_CORE_H
24*38fd1498Szrj 
25*38fd1498Szrj #include "bversion.h"
26*38fd1498Szrj 
27*38fd1498Szrj /* Constants used to discriminate diagnostics.  */
28*38fd1498Szrj typedef enum
29*38fd1498Szrj {
30*38fd1498Szrj #define DEFINE_DIAGNOSTIC_KIND(K, msgid, C) K,
31*38fd1498Szrj #include "diagnostic.def"
32*38fd1498Szrj #undef DEFINE_DIAGNOSTIC_KIND
33*38fd1498Szrj   DK_LAST_DIAGNOSTIC_KIND,
34*38fd1498Szrj   /* This is used for tagging pragma pops in the diagnostic
35*38fd1498Szrj      classification history chain.  */
36*38fd1498Szrj   DK_POP
37*38fd1498Szrj } diagnostic_t;
38*38fd1498Szrj 
39*38fd1498Szrj extern const char *progname;
40*38fd1498Szrj 
41*38fd1498Szrj extern const char *trim_filename (const char *);
42*38fd1498Szrj 
43*38fd1498Szrj /* If we haven't already defined a front-end-specific diagnostics
44*38fd1498Szrj    style, use the generic one.  */
45*38fd1498Szrj #ifndef GCC_DIAG_STYLE
46*38fd1498Szrj #define GCC_DIAG_STYLE __gcc_tdiag__
47*38fd1498Szrj #endif
48*38fd1498Szrj /* None of these functions are suitable for ATTRIBUTE_PRINTF, because
49*38fd1498Szrj    each language front end can extend them with its own set of format
50*38fd1498Szrj    specifiers.  We must use custom format checks.  */
51*38fd1498Szrj #if (CHECKING_P && GCC_VERSION >= 4001) || GCC_VERSION == BUILDING_GCC_VERSION
52*38fd1498Szrj #define ATTRIBUTE_GCC_DIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m, n))) ATTRIBUTE_NONNULL(m)
53*38fd1498Szrj #else
54*38fd1498Szrj #define ATTRIBUTE_GCC_DIAG(m, n) ATTRIBUTE_NONNULL(m)
55*38fd1498Szrj #endif
56*38fd1498Szrj extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
57*38fd1498Szrj      ATTRIBUTE_NORETURN;
58*38fd1498Szrj extern void internal_error_no_backtrace (const char *, ...)
59*38fd1498Szrj      ATTRIBUTE_GCC_DIAG(1,2) ATTRIBUTE_NORETURN;
60*38fd1498Szrj /* Pass one of the OPT_W* from options.h as the first parameter.  */
61*38fd1498Szrj extern bool warning (int, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
62*38fd1498Szrj extern bool warning_n (location_t, int, unsigned HOST_WIDE_INT,
63*38fd1498Szrj 		       const char *, const char *, ...)
64*38fd1498Szrj     ATTRIBUTE_GCC_DIAG(4,6) ATTRIBUTE_GCC_DIAG(5,6);
65*38fd1498Szrj extern bool warning_n (rich_location *, int, unsigned HOST_WIDE_INT,
66*38fd1498Szrj 		       const char *, const char *, ...)
67*38fd1498Szrj     ATTRIBUTE_GCC_DIAG(4, 6) ATTRIBUTE_GCC_DIAG(5, 6);
68*38fd1498Szrj extern bool warning_at (location_t, int, const char *, ...)
69*38fd1498Szrj     ATTRIBUTE_GCC_DIAG(3,4);
70*38fd1498Szrj extern bool warning_at (rich_location *, int, const char *, ...)
71*38fd1498Szrj     ATTRIBUTE_GCC_DIAG(3,4);
72*38fd1498Szrj extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
73*38fd1498Szrj extern void error_n (location_t, unsigned HOST_WIDE_INT, const char *,
74*38fd1498Szrj 		     const char *, ...)
75*38fd1498Szrj     ATTRIBUTE_GCC_DIAG(3,5) ATTRIBUTE_GCC_DIAG(4,5);
76*38fd1498Szrj extern void error_at (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
77*38fd1498Szrj extern void error_at (rich_location *, const char *, ...)
78*38fd1498Szrj   ATTRIBUTE_GCC_DIAG(2,3);
79*38fd1498Szrj extern void fatal_error (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3)
80*38fd1498Szrj      ATTRIBUTE_NORETURN;
81*38fd1498Szrj /* Pass one of the OPT_W* from options.h as the second parameter.  */
82*38fd1498Szrj extern bool pedwarn (location_t, int, const char *, ...)
83*38fd1498Szrj      ATTRIBUTE_GCC_DIAG(3,4);
84*38fd1498Szrj extern bool pedwarn (rich_location *, int, const char *, ...)
85*38fd1498Szrj      ATTRIBUTE_GCC_DIAG(3,4);
86*38fd1498Szrj extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
87*38fd1498Szrj extern bool permerror (rich_location *, const char *,
88*38fd1498Szrj 				   ...) ATTRIBUTE_GCC_DIAG(2,3);
89*38fd1498Szrj extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
90*38fd1498Szrj extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
91*38fd1498Szrj extern void inform (rich_location *, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
92*38fd1498Szrj extern void inform_n (location_t, unsigned HOST_WIDE_INT, const char *,
93*38fd1498Szrj 		      const char *, ...)
94*38fd1498Szrj     ATTRIBUTE_GCC_DIAG(3,5) ATTRIBUTE_GCC_DIAG(4,5);
95*38fd1498Szrj extern void verbatim (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
96*38fd1498Szrj extern bool emit_diagnostic (diagnostic_t, location_t, int,
97*38fd1498Szrj 			     const char *, ...) ATTRIBUTE_GCC_DIAG(4,5);
98*38fd1498Szrj extern bool emit_diagnostic_valist (diagnostic_t, location_t, int, const char *,
99*38fd1498Szrj 				    va_list *) ATTRIBUTE_GCC_DIAG (4,0);
100*38fd1498Szrj extern bool seen_error (void);
101*38fd1498Szrj 
102*38fd1498Szrj #ifdef BUFSIZ
103*38fd1498Szrj   /* N.B. Unlike all the others, fnotice is just gettext+fprintf, and
104*38fd1498Szrj      therefore it can have ATTRIBUTE_PRINTF.  */
105*38fd1498Szrj extern void fnotice			(FILE *, const char *, ...)
106*38fd1498Szrj      ATTRIBUTE_PRINTF_2;
107*38fd1498Szrj #endif
108*38fd1498Szrj 
109*38fd1498Szrj #endif /* ! GCC_DIAGNOSTIC_CORE_H */
110