123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- /* Date Stamp */ -d"_lint_co_gcc_lnt=co-gcc.lnt modified 12-Jun-2014"
- /* To document usage use: -message( "Using " _lint_co_gcc_lnt ) */
- // ---------------------------------------------------------------------
- // This file is provided by Gimpel Software (www.gimpel.com) for use with
- // its products PC-lint and FlexeLint.
- //
- // Redistribution and use of this file, with or without modification, is
- // permitted provided that any such redistribution retains this notice.
- // ---------------------------------------------------------------------
- /* co-gcc.lnt: This is the seed file for configuring Lint for use with
- GCC versions 2.95.3 and later.
- Like all compiler options files this file is intended to be used
- as follows:
- lint co-gcc.lnt source-files-to-be-linted
- Some of the information that co-gcc.lnt requires needs to be furnished
- with the help of the gcc system itself. The easiest way to generate
- this information is to use the makefile co-gcc.mak (supplied with the
- Lint distribution) in an invocation of GNU Make; for details, see the
- commentary at the top of co-gcc.mak.
- */
- -cgnu // Notifies FlexeLint that gcc is being used.
- // ===========================
- // Preprocessor Configuration:
- +fdi // GCC starts its #include search in the directory of the including
- // file.
- ++fln // Allow:
- // # digit-sequence " [s-char-sequence] " new-line
- // as a synonym for:
- // # line digit-sequence " [s-char-sequence] " new-line
- // GCC additionally allows flag values to follow the
- // s-char-sequence, but currently Lint ignores them.
- -header(pclint/co-gcc.h) // Includes headers generated by GCC (bringing in
- // predefined macros).
- +libh(pclint/co-gcc.h) // Marks that header as library code.
- pclint/gcc-include-path.lnt // This .lnt file should contain --i options
- // and should be generated by invoking gcc with its '-v' option.
- // (GCC's implicit #include search path is presented in the output.)
- // This happens automatically when 'make -f co-gcc.mak' is invoked.
- // Assertion directives (a feature of GCC's preprocessor) have been
- // considered obsolete in GCC's documentation since version 3.0, so we do
- // not use them here. If support for #assert is needed in the form of a
- // lint option, one may use '-a#' like so:
- // -a#machine(i386) // #assert's machine(i386) (SVR4 facility).
- // File extensions:
- // From the GCC man page:
- //
- // file.cc
- // file.cp
- // file.cxx
- // file.cpp
- // file.CPP
- // file.c++
- // file.C
- // C++ source code that must be preprocessed. Note that in .cxx, the
- // last two letters must both be literally x. Likewise, .C refers to
- // a literal capital C.
- //
- // We emulate this with:
- +cpp(.cc)
- +cpp(.cp)
- +cpp(.cxx)
- +cpp(.cpp)
- +cpp(.c++)
- // Note the exceptions:
- // +cpp(.CPP)
- // +cpp(.C)
- // These are commented out for the default config because they seem to
- // cause trouble more often than not. For starters, it is problematic
- // with filesystems that are case-insensitive (which has become common
- // even on some POSIX systems).
- // =============
- // Size Options:
- // +fwc // wchar_t might be builtin; if so, uncomment this option. (NOTE:
- // // this option needs to be set before a size option is given for
- // // wchar_t; see the documentation for -sw# in the Lint manual.)
- pclint/size-options.lnt // This .lnt file should be generated (preferrably
- // by a program created by invoking GCC with the compile options that
- // are used in the compilation of the project to be linted). This
- // happens automatically when 'make -f co-gcc.mak' is invoked.
- // ===========================================
- // +rw and -d options to cope with GNU syntax:
- +ppw(ident) // Tolerate #ident
- +ppw(warning)
- // GCC provides alternative spellings of certain keywords:
- +rw(__inline)
- -rw_asgn(__inline__,__inline)
- -rw_asgn(__header_always_inline,__inline)
- -rw_asgn(__header_inline,__inline)
- -rw_asgn(__signed__,signed)
- -rw_asgn(__signed,signed)
- -rw_asgn( __volatile__, volatile )
- -rw_asgn( __volatile, volatile )
- +rw(restrict)
- -rw_asgn(__restrict,restrict)
- -rw_asgn(__restrict__,restrict)
- ++d"__const=const" // gconv.h uses __const rather than const
- ++d"const=const" // ensure const expands to const.
- -rw_asgn( asm, _up_to_brackets )
- -rw_asgn( __asm, _up_to_brackets )
- -rw_asgn( __asm__, _up_to_brackets )
- // This re-definition of the various spellings of the asm keyword enables
- // Lint to pass gracefully over expression-statements like:
- // __asm __volatile ("fsqrt" : "=t" (__result) : "0" (__x));
- // But it may be necessary to suppress certain error messages that are
- // triggered by tokens that are part of an assembly declaration or
- // statement. For example:
- // -d"__asm__(p...)=/*lint -e{19}*/ __asm__(p)"
- // ...causes Lint to be quiet about the semicolon that follows an
- // __asm__() declaration. Note, the -e{N} form of suppression takes
- // effect only for the forward-declaration, definition or
- // [possibly-compound] statement that immediately follows. Because a
- // semicolon is seen as a declaration-terminator, Error 19 will be
- // re-enabled immediately after the semicolon in '__asm__(...);'.
- // (The elipsis after the macro parameter p allows zero or more commas to
- // appear in the operand.)
- //
- // If you encounter other diagnostics that appear to need suppression in
- // or near assembly regions, please let us know!
- //
- -esym(123,__asm__)
- -rw_asgn(__alignof__,__alignof)
- // "__extension__" is GCC's way of allowing the use of non-standard
- // constructs in a strict Standard-conforming mode. We don't currently
- // have explicit support for it, but we can use local suppressions. For
- // example, we can use -e(160) so that we will not see any Errors about
- // GNU statement-expressions wrapped in __extension__().
- ++d"__extension__=/*lint -e(160) */"
- ++d"__null=0"
- +rw(_to_semi) // needed for the two macros above.
- +rw(__typeof__) // activate __typeof__ keyword
- -d"__typeof=__typeof__" // an alternative to using __typeof__
- -rw(__except) // This MS reserved word is used as an identifier
- +rw( __complex__, __real__, __imag__ ) // reserved words that can be ignored.
- ++d"__builtin_strchr=(char*)" // permits the inline definition ...
- ++d"__builtin_strpbrk=(char*)" // of these functions to be linted ...
- ++d"__builtin_strrchr=(char*)" // without drawing a complaint
- ++d"__builtin_strstr=(char*)" // about the use of a non-standard name
- ++d"__PRETTY_FUNCTION__=___function___" // lint defines ___function___ internally
- ++d"__FUNCTION__=___function___" // lint defines ___function___ internally
- ++d"__func__=___function___" // Some C++ modes suport the implicit __func__
- // identifier.
- -ident($)
- // =========================================================
- // Other options supporting GNU C/C++ syntax:
- +fld // enables the processing of _L_abel _D_esignators E.g.:
- // union { double d; int i; } u = { d: 3.141 };
- // =========================================================
- // Generally useful suppressions:
- -wlib(1) // sets the warning level within library headers to 1
- // (no warnings, just syntax errors). Comment out if you
- // are actually linting library headers.
- -elib(123) // 123 is really a warning, but it's in the "Error" range.
- -elib(93) // allow newlines within quoted string arguments to macros
- -elib(46) // allow bit fields to have integral types other than
- // '_Bool' and 'int'.
- -elibsym(628) // Suppress 628 for __builtin symbols.
- -esym(528,__huge_val,__nan,__qnan,__qnanf,__snan,__snanf)
- // We don't care if we don't reference some GNU functions
- -esym(528,__gnu_malloc,__gnu_calloc)
- // The following functions exhibit variable return modes.
- // That is, they may equally-usefully be called for a value
- // as called just for their effects. Accordingly we inhibit
- // Warning 534 for these functions.
- // Feel free to add to or subtract from this list.
- -esym(534,close,creat,fclose,fprintf,fputc)
- -esym(534,fputs,fscanf,fseek,fwrite,lseek,memcpy,memmove,memset)
- -esym(534,printf,puts,scanf,sprintf,sscanf,strcat,strcpy)
- -esym(534,strncat,strncpy,unlink,write)
- // For non-ANSI compilers we suppress messages 515 and 516
- // for functions known to have variable argument lists.
- // For ANSI compilers, header files should take care of this.
- -esym(515,fprintf,printf,sprintf,fscanf,scanf,sscanf)
- -esym(516,fprintf,printf,sprintf,fscanf,scanf,sscanf)
- -esym(1702,*operator<<,*operator>>)
- -esym(534,*operator<<,*operator>>)
- -esym(1055,*__builtin*)
- -esym(718,*__builtin*) // The compiler does not need these ...
- -esym(746,*__builtin*) // declared and it knows their prototypes.
|