/*
** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
+** Copyright (C) 1994-2003 University of Virginia,
** Massachusetts Institute of Technology
**
** This program is free software; you can redistribute it and/or modify it
*/
# include "splintMacros.nf"
-# include "llbasic.h"
+# include "basic.h"
# include "usymtab_interface.h"
# include "exprChecks.h"
# include "llmain.h"
# include "intSet.h"
# include "osd.h"
-# include "portab.h"
extern /*@external@*/ int yydebug;
extern /*@external@*/ int mtdebug;
int counters[NUMVALUEFLAGS];
o_cstring strings[NUMSTRINGFLAGS];
- sRefSetList modrecs; /*@i32 ???? what is this for? */
+ sRefSetList modrecs; /* Keep track of file static symbols modified. */
metaStateTable stateTable; /* User-defined state information. */
annotationTable annotTable; /* User-defined annotations table. */
return (!context_getFlag (flag)
|| context_inSuppressRegion ()
|| context_inSuppressZone (fl)
- || (/*@!@@#@ gc.inDerivedFile && */ context_inSuppressFlagZone (fl, flag)));
+ || (context_inSuppressFlagZone (fl, flag))); /* removed gc.inDerivedFile from this */
}
else
{
case FLG_BOOLTYPE:
val = cstring_makeLiteral (DEFAULT_BOOLTYPE); break;
case FLG_BOOLFALSE:
- val = cstring_makeLiteral ("FALSE"); break;
+ val = cstring_makeLiteral ("false"); break;
case FLG_BOOLTRUE:
- val = cstring_makeLiteral ("TRUE"); break;
+ val = cstring_makeLiteral ("true"); break;
case FLG_MACROVARPREFIX:
val = cstring_makeLiteral ("m_"); break;
case FLG_SYSTEMDIRS:
** These flags are true by default.
*/
- /*@i34 move this into flags.def */
+ /* eventually, move this into flags.def */
gc.flags[FLG_STREAMOVERWRITE] = TRUE;
-
gc.flags[FLG_OBVIOUSLOOPEXEC] = TRUE;
gc.flags[FLG_MODIFIES] = TRUE;
gc.flags[FLG_NESTCOMMENT] = TRUE;
gc.flags[FLG_FULLINITBLOCK] = TRUE;
gc.flags[FLG_INITSIZE] = TRUE;
gc.flags[FLG_INITALLELEMENTS] = TRUE;
+ gc.flags[FLG_NULLINIT] = TRUE;
gc.flags[FLG_STRINGLITTOOLONG] = TRUE;
gc.flags[FLG_WARNFLAGS] = TRUE;
gc.flags[FLG_WARNRC] = TRUE;
gc.flags[FLG_FILEEXTENSIONS] = TRUE;
- gc.flags[FLG_WARNUNIXLIB] = TRUE;
+ gc.flags[FLG_WARNUNIXLIB] = FALSE;
gc.flags[FLG_WARNPOSIX] = TRUE;
gc.flags[FLG_SHOWCOL] = TRUE;
gc.flags[FLG_SHOWDEEPHISTORY] = FALSE; /* TRUE; */
{
FLG_BOOLINT, FLG_CHARINT, FLG_FLOATDOUBLE, FLG_LONGINT, FLG_SHORTINT,
FLG_ENUMINT, FLG_RELAXQUALS, FLG_FORWARDDECL,
- FLG_CHARINDEX, FLG_ABSTVOIDP, FLG_USEALLGLOBS,
+ FLG_CHARINDEX, FLG_NUMABSTRACTINDEX, FLG_ABSTVOIDP, FLG_USEALLGLOBS,
FLG_CHARUNSIGNEDCHAR,
FLG_PREDBOOLOTHERS,
FLG_NUMABSTRACTLIT,
FLG_SPECUNDEF, FLG_IMPCHECKMODINTERNALS,
FLG_DECLUNDEF, FLG_INCONDEFS, FLG_INCONDEFSLIB,
FLG_MISPLACEDSHAREQUAL, FLG_REDUNDANTSHAREQUAL,
+ FLG_NUMABSTRACTPRINT,
FLG_MATCHFIELDS,
FLG_MACROPARAMS,
FLG_MACROASSIGN,
FLG_MODFILESYSTEM,
FLG_MACROMATCHNAME,
FLG_FORMATCONST,
+ FLG_NUMABSTRACTPRINT,
FLG_STRINGLITNOROOM,
FLG_STRINGLITNOROOMFINALNULL,
FLG_STRINGLITSMALLER,
void context_exitClauseAux (exprNode pred, exprNode tbranch)
{
context_setJustPopped ();
- /*@i32 was makeAlt */
- usymtab_popTrueBranch (pred, tbranch, gc.inclause);
+ usymtab_popTrueBranch (pred, tbranch, gc.inclause); /* evans 2003-02-02?: was makeAlt */
clauseStack_pop (gc.clauses);
gc.inclause = topClause (gc.clauses);
}
switch (flag)
{
- /*
- case FLG_BOOLTRUE:
- usymtab_supGlobalEntry
- (uentry_makeConstantValue (val, ctype_bool,
- fileloc_getBuiltin (), TRUE,
- multiVal_makeInt (1)));
- break;
- case FLG_BOOLFALSE:
- usymtab_supGlobalEntry
- (uentry_makeConstantValue (val, ctype_bool,
- fileloc_getBuiltin (), FALSE,
- multiVal_makeInt (0)));
- break;
- */
case FLG_MESSAGESTREAM:
case FLG_WARNINGSTREAM:
case FLG_ERRORSTREAM:
{
; /* Okay not handle everything in this switch */
}
- /*@i523@*/ } /* evans 2002-03-24: splintme reports a spurious (I think) warning here...need to look into it */
-
+ /*@-branchstate@*/
+ } /* evans 2002-03-24: splintme reports a spurious (I think) warning here...need to look into it */
+ /*@=branchstate@*/
+
if (cstring_length (val) >= 1
&& cstring_firstChar (val) == '\"')
{
llerror_flagWarning
(cstring_makeLiteral
("Selecting unix library. Unix library is "
- "ad hoc addition to POSIX library. Recommend "
- "use +posixlib to select POSIX library instead. "
+ "based on the Single Unix Specification, Version 2. Not all "
+ "Unix implementations are consistend with this specification. "
"Use -warnunixlib to suppress this message."));
}
}
globSet_free (gc.globs_used);
metaStateTable_free (gc.stateTable);
annotationTable_free (gc.annotTable);
-
-
}
/*
return (gc.kind == CX_LCLLIB);
}
+
+/*drl add these 3/5/2003*/
+static bool inSizeof = FALSE;
+
+bool context_inSizeof (void)
+{
+ return (inSizeof);
+}
+
+void context_enterSizeof (void)
+{
+ DPRINTF((message("context_enterSizeof ") ) );
+ inSizeof = TRUE;
+}
+
+void context_leaveSizeof (void)
+{
+ DPRINTF((message("context_leaveSizeof ") ));
+ inSizeof = FALSE;
+}
+/*end function added 3/5/2003*/
+
+
bool context_inImport (void)
{
return (gc.inimport);
/*@null@*/ annotationInfo context_lookupAnnotation (cstring annot)
{
- annotationInfo ainfo;
-
- ainfo = annotationTable_lookup (gc.annotTable, annot);
-
- return ainfo;
+ return annotationTable_lookup (gc.annotTable, annot);
}
-void context_addAnnotation (annotationInfo ainfo)
+void context_addAnnotation (annotationInfo info)
{
- if (annotationTable_contains (gc.annotTable, annotationInfo_getName (ainfo)))
+ if (annotationTable_contains (gc.annotTable, annotationInfo_getName (info)))
{
voptgenerror
(FLG_SYNTAX,
- message ("Duplicate annotation declaration: %s", annotationInfo_getName (ainfo)),
- annotationInfo_getLoc (ainfo));
+ message ("Duplicate annotation declaration: %s", annotationInfo_getName (info)),
+ annotationInfo_getLoc (info));
- annotationInfo_free (ainfo);
+ annotationInfo_free (info);
}
else
{
- annotationTable_insert (gc.annotTable, ainfo);
+ annotationTable_insert (gc.annotTable, info);
}
}
}
}
-valueTable context_createValueTable (sRef s, stateInfo sinfo)
+valueTable context_createValueTable (sRef s, stateInfo info)
{
if (metaStateTable_size (gc.stateTable) > 0)
{
valueTable res = valueTable_create (metaStateTable_size (gc.stateTable));
- /*@i32 should use smaller value... */
+ /* should use smaller value... */
DPRINTF (("Value table for: %s", sRef_unparse (s)));
metaStateTable_elements (gc.stateTable, msname, msi)
(res,
cstring_copy (metaStateInfo_getName (msi)),
stateValue_createImplicit (metaStateInfo_getDefaultValue (msi, s),
- stateInfo_copy (sinfo)));
+ stateInfo_copy (info)));
}
else
{
}
end_metaStateTable_elements ;
- stateInfo_free (sinfo);
+ stateInfo_free (info);
DPRINTF (("Value table: %s", valueTable_unparse (res)));
return res;
}
else
{
- stateInfo_free (sinfo);
+ stateInfo_free (info);
return valueTable_undefined;
}
}
-valueTable context_createGlobalMarkerValueTable (stateInfo sinfo)
+valueTable context_createGlobalMarkerValueTable (stateInfo info)
{
if (metaStateTable_size (gc.stateTable) > 0)
{
valueTable res = valueTable_create (metaStateTable_size (gc.stateTable));
- /*@i32 should use smaller value... */
+ /* should use smaller value... */
metaStateTable_elements (gc.stateTable, msname, msi)
{
- /*@i23 only add global...*/
+ /* only add global...*/
DPRINTF (("Create: %s", metaStateInfo_unparse (msi)));
llassert (cstring_equal (msname, metaStateInfo_getName (msi)));
valueTable_insert (res,
cstring_copy (metaStateInfo_getName (msi)),
stateValue_create (metaStateInfo_getDefaultGlobalValue (msi),
- stateInfo_copy (sinfo)));
+ stateInfo_copy (info)));
}
end_metaStateTable_elements ;
- stateInfo_free (sinfo);
+ stateInfo_free (info);
DPRINTF (("Value table: %s", valueTable_unparse (res)));
return res;
}
else
{
- stateInfo_free (sinfo);
+ stateInfo_free (info);
return valueTable_undefined;
}
}
/*@-paramuse@*/
-void context_setGlobalStructInfo(ctype ct, constraintList list)
+void context_setGlobalStructInfo (ctype ct, constraintList list)
{
# if 0
/* int i;