xref: /utopia/UTPA2-700.0.x/projects/tools/lint/lnt/co-gnu3.lnt (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi
2*53ee8cc1Swenshuai.xi//    co-gnu3.lnt
3*53ee8cc1Swenshuai.xi//    Compiler Options for GCC versions 2.95.3 and later
4*53ee8cc1Swenshuai.xi
5*53ee8cc1Swenshuai.xi//    This file contains options to allow FlexeLint to process source
6*53ee8cc1Swenshuai.xi//    files for the Gnu compiler (GCC).
7*53ee8cc1Swenshuai.xi//
8*53ee8cc1Swenshuai.xi//    flint  co-gnu3.lnt  source-file(s)
9*53ee8cc1Swenshuai.xi//
10*53ee8cc1Swenshuai.xi//    If you are using GCC on some other system you will need to change
11*53ee8cc1Swenshuai.xi//    the following options:
12*53ee8cc1Swenshuai.xi
13*53ee8cc1Swenshuai.xi-cgnu       // Notifies FlexeLint that gcc is being used.
14*53ee8cc1Swenshuai.xi// +fus     // activate this option if your compiler supports an assumed
15*53ee8cc1Swenshuai.xi            // using namespace std at the beginning of processing
16*53ee8cc1Swenshuai.xi
17*53ee8cc1Swenshuai.xi// Begin: System Dependent Options
18*53ee8cc1Swenshuai.xi// -------------------------------
19*53ee8cc1Swenshuai.xi
20*53ee8cc1Swenshuai.xi-d__i386__  // a define of this type is machine-dependent
21*53ee8cc1Swenshuai.xi            // modify if you are running on non-intel hardware.
22*53ee8cc1Swenshuai.xi-d__linux__ // Linux define!
23*53ee8cc1Swenshuai.xi//-d__mc68000__  //a machine dependent define
24*53ee8cc1Swenshuai.xi
25*53ee8cc1Swenshuai.xi-di386=1         // needed for some Unix's
26*53ee8cc1Swenshuai.xi-a#machine(i386) //  #assert's machine(i386)  (SVR4 facility).
27*53ee8cc1Swenshuai.xi
28*53ee8cc1Swenshuai.xi// To let FlexeLint know where to find header files you need one
29*53ee8cc1Swenshuai.xi// or more -i options where each -i option is followed immediately
30*53ee8cc1Swenshuai.xi// by a single directory.
31*53ee8cc1Swenshuai.xi// For example:     -i/usr/include
32*53ee8cc1Swenshuai.xi// Use 'cpp -v emptyfile.cpp' to get a list of C++ search directories.
33*53ee8cc1Swenshuai.xi// Use 'cpp -v emptyfile.c' to get a list of C search directories.
34*53ee8cc1Swenshuai.xi
35*53ee8cc1Swenshuai.xi// You may use the following option to include standard C headers.
36*53ee8cc1Swenshuai.xi// This would normally come before other -i options.
37*53ee8cc1Swenshuai.xi
38*53ee8cc1Swenshuai.xi-i/FlexeLint/supp/ansi  // This is offered as a collection of ...
39*53ee8cc1Swenshuai.xi            // ANSI (i.e ISO) header files.  Replace the word "FlexeLint"
40*53ee8cc1Swenshuai.xi            // with the name of the directory in which FlexeLint has
41*53ee8cc1Swenshuai.xi            // been installed.  Note, you might want to replace "ansi"
42*53ee8cc1Swenshuai.xi            // with "posix".
43*53ee8cc1Swenshuai.xi
44*53ee8cc1Swenshuai.xi-si4    // int's are typically 4 bytes
45*53ee8cc1Swenshuai.xi-sp4    // ptr's are typically 4 bytes
46*53ee8cc1Swenshuai.xi
47*53ee8cc1Swenshuai.xi// -----------------------------
48*53ee8cc1Swenshuai.xi// End: System Dependent Options
49*53ee8cc1Swenshuai.xi
50*53ee8cc1Swenshuai.xi+cpp(.cc,.C)  // extensions for C++ that are commonly used in addition
51*53ee8cc1Swenshuai.xi            // to the default extensions of .cpp and .cxx
52*53ee8cc1Swenshuai.xi+fld        // support gcc's label designators
53*53ee8cc1Swenshuai.xi
54*53ee8cc1Swenshuai.xi            // while processing library headers
55*53ee8cc1Swenshuai.xi-wlib(1)    // sets the warning level within library headers to 1
56*53ee8cc1Swenshuai.xi	    // (no warnings, just syntax errors).  Comment out if you
57*53ee8cc1Swenshuai.xi	    // are actually linting library headers.  This
58*53ee8cc1Swenshuai.xi	    // option makes obsolete options of the form -elib(axxx) where
59*53ee8cc1Swenshuai.xi	    // xxx >= 400 which may be retained for historical reasons.
60*53ee8cc1Swenshuai.xi-elib(15)   // redeclaration of symbol
61*53ee8cc1Swenshuai.xi-elib(516)  // lots of redeclarations in Linux stdlib.h
62*53ee8cc1Swenshuai.xi-elib(652)  // suppress message about #define of earlier declared symbols
63*53ee8cc1Swenshuai.xi-elib(762)  // suppress message about multiple identical declarations and
64*53ee8cc1Swenshuai.xi-elib(760)  // suppress message about multiple identical macro defs
65*53ee8cc1Swenshuai.xi-elib(553)  // undefined preprocessor variables are taken as 0
66*53ee8cc1Swenshuai.xi-elib(410)  // unusual size_t
67*53ee8cc1Swenshuai.xi-elib(767)  // differently defined macro
68*53ee8cc1Swenshuai.xi-elib(624)  // typedef symbol redeclared
69*53ee8cc1Swenshuai.xi-elib(607)  // parameter substitution within string
70*53ee8cc1Swenshuai.xi-elib(602)  // in dial.h there are comments within comments ?
71*53ee8cc1Swenshuai.xi-elib(537)  // repeated include files
72*53ee8cc1Swenshuai.xi-elib(2)    // unclosed quotes in nserve.h
73*53ee8cc1Swenshuai.xi-elib(123)  // size is both a variable and a macro with args
74*53ee8cc1Swenshuai.xi-elib(1014) // class member definition within extern "C++"
75*53ee8cc1Swenshuai.xi
76*53ee8cc1Swenshuai.xi-emacro(734,putc)   // don't complain about items being too large.
77*53ee8cc1Swenshuai.xi-emacro((???),va_arg)   // the va_arg() macro can yield 415, 416, 661, 662
78*53ee8cc1Swenshuai.xi			// 796 and 797 (out-of-bounds errors).
79*53ee8cc1Swenshuai.xi-emacro(413,offsetof)  // use of NULL pointer creates a stir
80*53ee8cc1Swenshuai.xi-emacro(545,offsetof)  // addressing an array member is OK
81*53ee8cc1Swenshuai.xi
82*53ee8cc1Swenshuai.xi-elib(793)   // Linux has minor ANSI violation in stddef.h
83*53ee8cc1Swenshuai.xi-elib(569)   // Linux truncates some data in huge_val.h
84*53ee8cc1Swenshuai.xi-esym(528,__huge_val,__nan,__qnan,__qnanf,__snan,__snanf)
85*53ee8cc1Swenshuai.xi           // We don't care if we don't reference some GNU funcs
86*53ee8cc1Swenshuai.xi-esym(528,__gnu_malloc,__gnu_calloc)
87*53ee8cc1Swenshuai.xi
88*53ee8cc1Swenshuai.xi
89*53ee8cc1Swenshuai.xi//  The following options were found necessary when processing
90*53ee8cc1Swenshuai.xi//  the Unix headers within /usr/include
91*53ee8cc1Swenshuai.xi
92*53ee8cc1Swenshuai.xi+fdi            // Use the directory of the including file
93*53ee8cc1Swenshuai.xi
94*53ee8cc1Swenshuai.xi+ppw(ident)     // Tolerate #ident
95*53ee8cc1Swenshuai.xi+rw(__inline)   // enable the (non-standard) __inline keyword
96*53ee8cc1Swenshuai.xi+rw(__inline__)   // enable the (non-standard) __inline__ keyword
97*53ee8cc1Swenshuai.xi
98*53ee8cc1Swenshuai.xi//  The following functions exhibit variable return modes.
99*53ee8cc1Swenshuai.xi//  That is, they may equally-usefully be called for a value
100*53ee8cc1Swenshuai.xi//  as called just for their effects.  Accordingly we inhibit
101*53ee8cc1Swenshuai.xi//  Warning 534 for these functions.
102*53ee8cc1Swenshuai.xi//  Feel free to add to or subtract from this list.
103*53ee8cc1Swenshuai.xi
104*53ee8cc1Swenshuai.xi-esym(534,close,creat,fclose,fprintf,fputc)
105*53ee8cc1Swenshuai.xi-esym(534,fputs,fscanf,fseek,fwrite,lseek,memcpy,memmove,memset)
106*53ee8cc1Swenshuai.xi-esym(534,printf,puts,scanf,sprintf,sscanf,strcat,strcpy)
107*53ee8cc1Swenshuai.xi-esym(534,strncat,strncpy,unlink,write)
108*53ee8cc1Swenshuai.xi
109*53ee8cc1Swenshuai.xi// For non-ANSI compilers we suppress messages 515 and 516
110*53ee8cc1Swenshuai.xi// for functions known to have variable argument lists.
111*53ee8cc1Swenshuai.xi// For ANSI compilers, header files should take care of this.
112*53ee8cc1Swenshuai.xi
113*53ee8cc1Swenshuai.xi-esym(515,fprintf,printf,sprintf,fscanf,scanf,sscanf)
114*53ee8cc1Swenshuai.xi-esym(516,fprintf,printf,sprintf,fscanf,scanf,sscanf)
115*53ee8cc1Swenshuai.xi
116*53ee8cc1Swenshuai.xi// The following options are required by most compilers to
117*53ee8cc1Swenshuai.xi// noiselessly process iostream.h
118*53ee8cc1Swenshuai.xi
119*53ee8cc1Swenshuai.xi-elib(1717) //empty prototypes
120*53ee8cc1Swenshuai.xi-elib(522) //function return value ignored
121*53ee8cc1Swenshuai.xi-elib(1053) //prototypes cannot be distinguished
122*53ee8cc1Swenshuai.xi-elib(1721) //unusual operator =() declaration
123*53ee8cc1Swenshuai.xi-elib(1720) //assignment op has non-const parameter
124*53ee8cc1Swenshuai.xi-elib(655)  // bitwise operator combining compatible enum's
125*53ee8cc1Swenshuai.xi-elib(641)  // converting enum's to int
126*53ee8cc1Swenshuai.xi-elib(537)  // repeated include file (ios.h)
127*53ee8cc1Swenshuai.xi-elib(1511) // member (rdbuf) hides nonvirtual member
128*53ee8cc1Swenshuai.xi-elib(1712) // default constructor not defined for class
129*53ee8cc1Swenshuai.xi-esym(1702,operator<<,operator>>)
130*53ee8cc1Swenshuai.xi
131*53ee8cc1Swenshuai.xi// These functions return things that are frequently ignored.
132*53ee8cc1Swenshuai.xi
133*53ee8cc1Swenshuai.xi-esym(534,ostream::operator<<,istream::operator>>)
134*53ee8cc1Swenshuai.xi
135*53ee8cc1Swenshuai.xi-elib(747) //significant prototype coercion
136*53ee8cc1Swenshuai.xi-elib(740) //unusual pointer casts
137*53ee8cc1Swenshuai.xi-elib(1029) //default argument repeated -- can't dist. char, signed char
138*53ee8cc1Swenshuai.xi-elib(1055) //call to rdbuf() questioned?
139*53ee8cc1Swenshuai.xi-elib(1708,1709) // minor C/C++ declaration conflict
140*53ee8cc1Swenshuai.xi
141*53ee8cc1Swenshuai.xi-elib(763)   // redundant declaration
142*53ee8cc1Swenshuai.xi-elib(1510)  // base class has no destructor
143*53ee8cc1Swenshuai.xi-elib(1516)  // data member hiding inherited member
144*53ee8cc1Swenshuai.xi-elib(1730)  // class/struct inconsistancy
145*53ee8cc1Swenshuai.xi-elib(569)   // loss of information 8-bits - 7bits
146*53ee8cc1Swenshuai.xi
147*53ee8cc1Swenshuai.xi// What follows here is a collection of options we have found
148*53ee8cc1Swenshuai.xi// to be needed to support Version 3 of GCC.  The need for these
149*53ee8cc1Swenshuai.xi// options actually predate Version 3 and are of the 2.9... time frame
150*53ee8cc1Swenshuai.xi
151*53ee8cc1Swenshuai.xi-e93         // allow newlines within quoted string arguments to macros
152*53ee8cc1Swenshuai.xi-dasm()=     // support inline assembly code by ignoring asm(...)
153*53ee8cc1Swenshuai.xi-d__attribute__()=   // ignore this keyword and following parenthetical
154*53ee8cc1Swenshuai.xi-d__extension__=            // ignore this keyword
155*53ee8cc1Swenshuai.xi-d__builtin_va_list=void*   // used by stdarg.h
156*53ee8cc1Swenshuai.xi-d__builtin_stdarg_start()=_to_semi  // ditto
157*53ee8cc1Swenshuai.xi-d__builtin_va_end()=_to_semi        // ditto
158*53ee8cc1Swenshuai.xi-d__builtin_fabsf=(float)
159*53ee8cc1Swenshuai.xi-d"__builtin_fabsl=(long double)"
160*53ee8cc1Swenshuai.xi-d__builtin_cosf=(float)
161*53ee8cc1Swenshuai.xi-d"__builtin_cosl=(long double)"
162*53ee8cc1Swenshuai.xi-d__builtin_sinf=(float)
163*53ee8cc1Swenshuai.xi-d"__builtin_sinl=(long double)"
164*53ee8cc1Swenshuai.xi-d__builtin_sqrtf=(float)
165*53ee8cc1Swenshuai.xi-d"__builtin_sqrtl=(long double)"
166*53ee8cc1Swenshuai.xi-d"__builtin_fabs=(double)"
167*53ee8cc1Swenshuai.xi+rw(_to_semi)               // needed for the two macros above.
168*53ee8cc1Swenshuai.xi-d__const=const             // gconv.h uses __const rather than const
169*53ee8cc1Swenshuai.xi-d__STDC_VERSION__=199901L  // required by C99
170*53ee8cc1Swenshuai.xi-d__FUNCTION__="somefunction"
171*53ee8cc1Swenshuai.xi-d__PRETTY_FUNCTION__="somefunction"
172*53ee8cc1Swenshuai.xi+fwc                    // wchar_t is builtin
173*53ee8cc1Swenshuai.xi-d_WCHAR_T              // tell the header files as much
174*53ee8cc1Swenshuai.xi-elib(148)              // Some of the libraries are redefining member
175*53ee8cc1Swenshuai.xi                        // functions
176*53ee8cc1Swenshuai.xi-elib(1073)             // reverse_iterator<> is being invoked with
177*53ee8cc1Swenshuai.xi                        // an insufficient number of parameters.
178*53ee8cc1Swenshuai.xi+rw(__typeof__)         // activate __typeof__ keyword
179*53ee8cc1Swenshuai.xi-d__typeof=__typeof__   // an alternative to using __typeof__
180*53ee8cc1Swenshuai.xi+rw( __volatile__ )         // unusual reserved word ignored.
181*53ee8cc1Swenshuai.xi+rw( _to_brackets )         // a pair of options to ignore an elaborated
182*53ee8cc1Swenshuai.xi+d__asm__=_to_brackets      // assembly language escape.
183*53ee8cc1Swenshuai.xi-rw(__except)               // This MS reserved word is used as an identifier
184*53ee8cc1Swenshuai.xi+rw( __complex__, __real__, __imag__ )  // reserved words that can be ignored.
185*53ee8cc1Swenshuai.xi+d__builtin_strchr=(char*)  // permits the inline definition ...
186*53ee8cc1Swenshuai.xi+d__builtin_strpbrk=(char*) // of these functions to be linted ...
187*53ee8cc1Swenshuai.xi+d__builtin_strrchr=(char*) // without drawing a complaint
188*53ee8cc1Swenshuai.xi+d__builtin_strstr=(char*)  // about the use of a non-standard name
189*53ee8cc1Swenshuai.xi-esym( 718, __builtin_* )   // The compiler does not need these ...
190*53ee8cc1Swenshuai.xi-esym( 746, __builtin_* )   // declared and it knows their prototypes.
191*53ee8cc1Swenshuai.xi-d__EXCEPTIONS              // make sure try and catch are not redefined out
192*53ee8cc1Swenshuai.xi                            // from under you as execeptions_defines.h could do
193*53ee8cc1Swenshuai.xi--uconst                    // keep const from being defined away
194*53ee8cc1Swenshuai.xi
195*53ee8cc1Swenshuai.xi+rw(__restrict)             // ignore this keyword.
196*53ee8cc1Swenshuai.xi
197*53ee8cc1Swenshuai.xi// The following was produced by `gcc -v`, and may not be necessary.
198*53ee8cc1Swenshuai.xi// Naturally if you include these options, you should make sure they
199*53ee8cc1Swenshuai.xi// match your version of GCC:
200*53ee8cc1Swenshuai.xi//  -d__GNUC__=3
201*53ee8cc1Swenshuai.xi//  -d__GNUC_MINOR__=3
202*53ee8cc1Swenshuai.xi//  -d__GNUC_PATCHLEVEL__=2
203*53ee8cc1Swenshuai.xi-d_GNU_SOURCE
204*53ee8cc1Swenshuai.xi
205*53ee8cc1Swenshuai.xi// Built-in identifiers follow.  These constants are compiled into gcc and are not
206*53ee8cc1Swenshuai.xi// defined in any GCC headers.  They might vary from platform to platform.  To
207*53ee8cc1Swenshuai.xi// see what they are on yours, put the following into a source file and run it
208*53ee8cc1Swenshuai.xi// through gcc with the -E option; copy the result into your local copy of
209*53ee8cc1Swenshuai.xi// co-gnu3.lnt if your output differs from the constants used for the -d Lint options below:
210*53ee8cc1Swenshuai.xi	// //---begin builtin.c---
211*53ee8cc1Swenshuai.xi	//  __CHAR_BIT__
212*53ee8cc1Swenshuai.xi	//  __FLT_MANT_DIG__
213*53ee8cc1Swenshuai.xi	//  __FLT_DIG__
214*53ee8cc1Swenshuai.xi	//  __FLT_RADIX__
215*53ee8cc1Swenshuai.xi	//  __FLT_MIN_EXP__
216*53ee8cc1Swenshuai.xi	//  __FLT_MIN_10_EXP__
217*53ee8cc1Swenshuai.xi	//  __FLT_MAX_EXP__
218*53ee8cc1Swenshuai.xi	//  __FLT_MAX_10_EXP__
219*53ee8cc1Swenshuai.xi	//  __FLT_DENORM_MIN__
220*53ee8cc1Swenshuai.xi	//  __DBL_MANT_DIG__
221*53ee8cc1Swenshuai.xi	//  __DBL_DIG__
222*53ee8cc1Swenshuai.xi	//  __FLT_RADIX__
223*53ee8cc1Swenshuai.xi	//  __DBL_MIN_EXP__
224*53ee8cc1Swenshuai.xi	//  __DBL_MIN_10_EXP__
225*53ee8cc1Swenshuai.xi	//  __DBL_MAX_EXP__
226*53ee8cc1Swenshuai.xi	//  __DBL_MAX_10_EXP__
227*53ee8cc1Swenshuai.xi	//  __DBL_DENORM_MIN__
228*53ee8cc1Swenshuai.xi	//  __LDBL_MANT_DIG__
229*53ee8cc1Swenshuai.xi	//  __LDBL_DIG__
230*53ee8cc1Swenshuai.xi	//  __LDBL_MIN_EXP__
231*53ee8cc1Swenshuai.xi	//  __LDBL_MIN_10_EXP__
232*53ee8cc1Swenshuai.xi	//  __LDBL_MAX_EXP__
233*53ee8cc1Swenshuai.xi	//  __LDBL_MAX_10_EXP__
234*53ee8cc1Swenshuai.xi	//  __LDBL_DENORM_MIN__
235*53ee8cc1Swenshuai.xi	// //--end builtin.c---
236*53ee8cc1Swenshuai.xi-d__CHAR_BIT__=8
237*53ee8cc1Swenshuai.xi-d__FLT_MANT_DIG__=24
238*53ee8cc1Swenshuai.xi-d__FLT_DIG__=6
239*53ee8cc1Swenshuai.xi-d__FLT_RADIX__=2
240*53ee8cc1Swenshuai.xi-d__FLT_MIN_EXP__=(-125)
241*53ee8cc1Swenshuai.xi-d__FLT_MIN_10_EXP__=(-37)
242*53ee8cc1Swenshuai.xi-d__FLT_MAX_EXP__=128
243*53ee8cc1Swenshuai.xi-d__FLT_MAX_10_EXP__=38
244*53ee8cc1Swenshuai.xi-d__FLT_DENORM_MIN__=1.40129846e-45F
245*53ee8cc1Swenshuai.xi-d__DBL_MANT_DIG__=53
246*53ee8cc1Swenshuai.xi-d__DBL_DIG__=15
247*53ee8cc1Swenshuai.xi-d__FLT_RADIX__=2
248*53ee8cc1Swenshuai.xi-d__DBL_MIN_EXP__=(-1021)
249*53ee8cc1Swenshuai.xi-d__DBL_MIN_10_EXP__=(-307)
250*53ee8cc1Swenshuai.xi-d__DBL_MAX_EXP__=1024
251*53ee8cc1Swenshuai.xi-d__DBL_MAX_10_EXP__=308
252*53ee8cc1Swenshuai.xi-d__DBL_DENORM_MIN__=4.9406564584124654e-324
253*53ee8cc1Swenshuai.xi-d__LDBL_MANT_DIG__=64
254*53ee8cc1Swenshuai.xi-d__LDBL_DIG__=18
255*53ee8cc1Swenshuai.xi-d__LDBL_MIN_EXP__=(-16381)
256*53ee8cc1Swenshuai.xi-d__LDBL_MIN_10_EXP__=(-4931)
257*53ee8cc1Swenshuai.xi-d__LDBL_MAX_EXP__=16384
258*53ee8cc1Swenshuai.xi-d__LDBL_MAX_10_EXP__=4932
259*53ee8cc1Swenshuai.xi-d__LDBL_DENORM_MIN__=3.64519953188247460253e-4951L
260*53ee8cc1Swenshuai.xi
261*53ee8cc1Swenshuai.xi//bypass too large line error
262*53ee8cc1Swenshuai.xi-e91
263*53ee8cc1Swenshuai.xi-e10
264*53ee8cc1Swenshuai.xi-ident($)
265*53ee8cc1Swenshuai.xi-e156