From: drl7x Date: Wed, 2 Aug 2000 21:10:44 +0000 (+0000) Subject: Fixed stupid bug in constraintList causing a segfault. X-Git-Tag: merged25q~3 X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/commitdiff_plain/cc78dedd2082263a37e7c43f65b40c221bff6592 Fixed stupid bug in constraintList causing a segfault. Added files for new tests to the repository. --- diff --git a/test/Makefile b/test/Makefile index bab3fe2..48ad9d2 100644 --- a/test/Makefile +++ b/test/Makefile @@ -19,7 +19,7 @@ .PHONY: specclauses stack staticarray .PHONY: strings structassign .PHONY: typequals ud ulstypes union unreachable unused -.PHONY: db1 db2 db3 tests2.2 tests2.2a tests2.4 +.PHONY: db1 db2 db3 tests2.2 tests2.2a tests2.4 tests2.5 .PHONY: all test fulltest expects quicktest .PHONY: nullterminatedtest @@ -28,7 +28,7 @@ SHELL = /bin/csh -f # Command to run lclint -LCLINT = lclint +LCLINT = ${HOME}/lclint-dev/src/lclint LCLINTP = $(LCLINT) # Make sure .lclintrc files are not used so test results do not @@ -36,7 +36,7 @@ LCLINTP = $(LCLINT) LCLINTRN = $(LCLINTP) -nof -hints -booltype "bool" LCLINTR = $(LCLINTRN) -exportlocal -UNITTESTS = help abstptr abstract alias alttypes ansireserved argorder args blocks break cases cast charlit clauses commentchar compdestroy controldepth csyntax czechnames czechoslovaknames decl enum exports external fields flags funcpointer glob globals impabstract init inparam internal iter keep libs lintcomments list macros macrosef merge modifies modtest moduncon mongoincludes null observer oldstyle outglob outparam preds prefixes printflike rc refcounts release repexpose sharing slovaknames specclauses special stack staticarray strings structassign typequals ud ulstypes union unreachable unused tests2.2 tests2.2a tests2.4 nullterminatedtest +UNITTESTS = help abstptr abstract alias alttypes ansireserved argorder args blocks break cases cast charlit clauses commentchar compdestroy controldepth csyntax czechnames czechoslovaknames decl enum exports external fields flags funcpointer glob globals impabstract init inparam internal iter keep libs lintcomments list macros macrosef merge modifies modtest moduncon mongoincludes null nullterminatedtest observer oldstyle outglob outparam preds prefixes printflike rc refcounts release repexpose sharing slovaknames specclauses special stack staticarray strings structassign typequals ud ulstypes union unreachable unused tests2.2 tests2.2a tests2.4 tests2.5 UNITEXPECTS = $(addsuffix .expect, $(UNITTESTS)) @@ -176,9 +176,11 @@ cast: $(LCLINTR) cast -accessmodule -expect 20 $(LCLINTRN) cast2.c +checks -exportlocal -exportheader -expect 3 +### Two addition errors detected with 2.5 with -numliteral. + charlit: $(LCLINTR) +hints charlit.c -expect 4 - $(LCLINTR) +hints -numliteral charlit.c -expect 5 + $(LCLINTR) +hints -numliteral charlit.c -expect 6 $(LCLINTR) +hints charlit.c +charintliteral +ignoresigns clauses: @@ -202,9 +204,9 @@ compdestroy: $(LCLINTRN) compdestroy.c +strict +partial -exportheader -expect 3 csyntax: - $(LCLINTR) +quiet -incondefs csyntax.c - $(LCLINTR) +quiet csyntax2.c - $(LCLINTR) +quiet csyntax3.c + $(LCLINTR) +quiet -incondefs csyntax.c -expect 1 + $(LCLINTR) +quiet csyntax2.c -expect 2 + $(LCLINTR) +quiet csyntax3.c -expect 1 $(LCLINTR) +quiet -incondefs csyntax4.c $(LCLINTR) +quiet csyntax5.c $(LCLINTR) +quiet csyntax6.c @@ -214,11 +216,11 @@ csyntax: $(LCLINTR) +quiet csyntax10.c $(LCLINTR) +quiet csyntax11.c $(LCLINTR) +quiet csyntax12.c - $(LCLINTR) +quiet csyntax13.c + $(LCLINTR) +quiet csyntax13.c -expect 1 $(LCLINTR) +quiet csyntax14.c $(LCLINTR) +quiet csyntax15.c - $(LCLINTR) +quiet csyntax16.c - $(LCLINTR) +quiet csyntax17.c + $(LCLINTR) +quiet csyntax16.c -expect 2 + $(LCLINTR) +quiet csyntax17.c -expect 3 czechnames: $(LCLINTR) czechnames.c @@ -421,11 +423,11 @@ printflike: $(LCLINTR) printflike.c -warnlintcomments -expect 5 rc: - -$(LCLINTR) -DMYSTERY='"a flag\"wicked cool"' rc.c -expect 1 - -$(LCLINTR) -DMYSTERY=12 rc.c -expect 1 - -$(LCLINTR) -f rc1.lclintrc rc.c - -$(LCLINTR) -UMYSTERY -f rc1.lclintrc rc.c -expect 1 - -$(LCLINTR) -f rc3.lclintrc rc.c -expect 1 + $(LCLINTR) -DMYSTERY='"a flag\"wicked cool"' rc.c -expect 1 + $(LCLINTR) -DMYSTERY=12 rc.c -expect 1 + $(LCLINTR) -f rc1.lclintrc rc.c -expect 1 + $(LCLINTR) -UMYSTERY -f rc1.lclintrc rc.c -expect 1 + $(LCLINTR) -f rc3.lclintrc rc.c -expect 1 refcounts: $(LCLINTR) refcounts.c -expect 7 @@ -490,6 +492,7 @@ ulstypes: $(LCLINTR) ulstypes.c -expect 8 $(LCLINTR) ulstypes.c +ignorequals $(LCLINTRN) ulstypes.c +strict -exportheader -exportheadervar -expect 28 +# 3 more detected with version 2.5 (change in -numliteral setting) union: $(LCLINTR) +memchecks union.c -expect 8 @@ -537,7 +540,7 @@ tests2.2a: $(LCLINTR) sizeof.c ; \ $(LCLINTR) arrayparam.c -expect 5 ; \ $(LCLINTR) notreached.c ; \ - $(LCLINTR) duff.c -casebreak -expect 1 ; \ + $(LCLINTR) duff.c -casebreak -firstcase ; \ $(LCLINTR) obviousloop.c -expect 4 ; \ $(LCLINTR) bitops.c +bitwisesigned -expect 11 ; \ $(LCLINTR) bitops.c -expect 5 ; \ @@ -581,6 +584,9 @@ nullterminatedtest: $(LCLINTR) test1.c; \ $(LCLINTR) test2.c +tests2.5: + setenv LCLINT '$(LCLINTRN)'; cd tests2.5 ; $(MAKE) -e + ### ### Integration Tests ### @@ -594,11 +600,6 @@ db2: db3: setenv LCLINT '$(LCLINTRN)'; cd db3; $(MAKE) -e test -### -### More integration tests are used locally. If you are developing -### LCLint send mail to evs@larch.lcs.mit.edu to obtain extra -### integration test cases. - clean: -rm -f *~ #*# *.o *.lcs a.out -cd db1 ; $(MAKE) clean @@ -607,3 +608,4 @@ clean: + diff --git a/test/bool.h b/test/bool.h index d297edc..7f37dae 100644 --- a/test/bool.h +++ b/test/bool.h @@ -3,7 +3,7 @@ /*@-cppnames@*/ /*@-exporttype@*/ -typedef int bool; +typedef /*@abstract@*/ int bool; /*@=exporttype@*/ /*@=cppnames@*/ diff --git a/test/charlit.expect b/test/charlit.expect index 8bf01d4..979deac 100644 --- a/test/charlit.expect +++ b/test/charlit.expect @@ -26,6 +26,6 @@ charlit.c:11:18: Initial value of s[1] is type int, expects short int: -1 charlit.c:12:14: Variable u initialized to type int, expects unsigned int: -3 To ignore signs in type comparisons use +ignoresigns -Finished LCLint checking --- 6 code errors found, expected 5 +Finished LCLint checking --- 6 code errors found, as expected Finished LCLint checking --- no code errors found diff --git a/test/charlit.out b/test/charlit.out index 521d861..979deac 100644 --- a/test/charlit.out +++ b/test/charlit.out @@ -26,4 +26,6 @@ charlit.c:11:18: Initial value of s[1] is type int, expects short int: -1 charlit.c:12:14: Variable u initialized to type int, expects unsigned int: -3 To ignore signs in type comparisons use +ignoresigns -Finished LCLint checking --- 6 code errors found, expected 5 +Finished LCLint checking --- 6 code errors found, as expected + +Finished LCLint checking --- no code errors found diff --git a/test/csyntax.expect b/test/csyntax.expect index 2dca99e..ff3ef0b 100644 --- a/test/csyntax.expect +++ b/test/csyntax.expect @@ -1,18 +1,24 @@ csyntax.c:20:5: Function main declared with 1 arg, should have 2 (int argc, char *argv[]) + csyntax2.c: (in function mapping_create) csyntax2.c:13:3: Assignment of size_t to int: x = sizeof((t)) csyntax2.c:14:3: Assignment of size_t to int: x = sizeof(*t) + csyntax3.c:3:4: Function main declared to return a1, should return int + csyntax13.c: (in function f) csyntax13.c:9:11: Variable isrs shadows outer declaration csyntax13.c:7:9: Previous definition of isrs: isr_t + csyntax16.c: (in function main) csyntax16.c:18:11: Variable getbuiltout used before definition csyntax16.c: (in function getbuiltout) csyntax16.c:43:14: Variable qpolygon used before definition + csyntax17.c: (in function f) csyntax17.c:11:11: Variable x initialized to type EID_UNIT_NUM, expects int: (EID_UNIT_NUM)3 csyntax17.c:12:2: Path with no return in function declared to return int csyntax17.c:11:7: Variable x declared but not used + diff --git a/test/csyntax.out b/test/csyntax.out index 8b69d18..ff3ef0b 100644 --- a/test/csyntax.out +++ b/test/csyntax.out @@ -1,3 +1,24 @@ csyntax.c:20:5: Function main declared with 1 arg, should have 2 (int argc, char *argv[]) +csyntax2.c: (in function mapping_create) +csyntax2.c:13:3: Assignment of size_t to int: x = sizeof((t)) +csyntax2.c:14:3: Assignment of size_t to int: x = sizeof(*t) + +csyntax3.c:3:4: Function main declared to return a1, should return int + +csyntax13.c: (in function f) +csyntax13.c:9:11: Variable isrs shadows outer declaration + csyntax13.c:7:9: Previous definition of isrs: isr_t + +csyntax16.c: (in function main) +csyntax16.c:18:11: Variable getbuiltout used before definition +csyntax16.c: (in function getbuiltout) +csyntax16.c:43:14: Variable qpolygon used before definition + +csyntax17.c: (in function f) +csyntax17.c:11:11: Variable x initialized to type EID_UNIT_NUM, expects int: + (EID_UNIT_NUM)3 +csyntax17.c:12:2: Path with no return in function declared to return int +csyntax17.c:11:7: Variable x declared but not used + diff --git a/test/czechnames.out b/test/czechnames.out index e354f5a..3fe4ae9 100644 --- a/test/czechnames.out +++ b/test/czechnames.out @@ -19,18 +19,6 @@ czechnames.c:26:5: Function budweiser name is not consistent with Czech naming Finished LCLint checking --- 1 code error found, as expected -bool.h:22: Function bool_initMod name violates Czech naming convention. Type - bool is not accessible. - Use +accessczech to allow access to type in functions named _. -bool.h:25: Function bool_unparse name violates Czech naming convention. Type - bool is not accessible. - Use +accessczech to allow access to type in functions named _. -bool.h:28: Function bool_not name violates Czech naming convention. Type bool - is not accessible. - Use +accessczech to allow access to type in functions named _. -bool.h:31: Function bool_equal name violates Czech naming convention. Type bool - is not accessible. - Use +accessczech to allow access to type in functions named _. czechnames.c:4:5: Variable pivo_pyet name violates Czech naming convention. Czech prefix pivo names an abstract type that is not accessible. Use +accessczech to allow access to type in functions named _. @@ -50,4 +38,4 @@ czechnames.c:15:11: Left operand of == is abstract type (pivo): p == 1 czechnames.c:26:5: Function budweiser name is not consistent with Czech naming convention. Accessible types: pivo -Finished LCLint checking --- 10 code errors found, expected 6 +Finished LCLint checking --- 6 code errors found, as expected diff --git a/test/db1.expect b/test/db1.expect index 307db06..ba47d7c 100644 --- a/test/db1.expect +++ b/test/db1.expect @@ -219,7 +219,7 @@ empset.c: (in function _empset_get) empset.c:11: Undocumented modification of s possible from call to erc_iterStart: erc_iterStart(s) empset.c:15: Body of if statement is not a block: - do { { erc_iterFinal(it) } } while (0) + do { { erc_iterFinal(it) } } while (FALSE) empset.c: (in function empset_insert) empset.c:30: Undetected modification possible from call to unconstrained function _empset_get: _empset_get @@ -257,9 +257,10 @@ empset.c: (in function empset_subset) empset.c:139: Undocumented modification of s1 possible from call to erc_iterStart: erc_iterStart(s1) empset.c:141: Body of if statement is not a block: - do { { erc_iterFinal(it) } } while (0) + do { { erc_iterFinal(it) } } while (FALSE) empset.c:140: Body of for statement is not a block: - if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it) } } while (0) + if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it) + } } while (FALSE) empset.c:135: Variable e declared but not used empset.c: (in function empset_initMod) empset.c:148: Undocumented use of file static initDone diff --git a/test/db1.out b/test/db1.out index 9b083f9..ba47d7c 100644 --- a/test/db1.out +++ b/test/db1.out @@ -218,9 +218,8 @@ empset.c:5: Name _empset_get is in the implementation name space (any empset.c: (in function _empset_get) empset.c:11: Undocumented modification of s possible from call to erc_iterStart: erc_iterStart(s) -empset.c:15: Test expression for while not bool, type int: 0 empset.c:15: Body of if statement is not a block: - do { { erc_iterFinal(it) } } while (0) + do { { erc_iterFinal(it) } } while (FALSE) empset.c: (in function empset_insert) empset.c:30: Undetected modification possible from call to unconstrained function _empset_get: _empset_get @@ -257,11 +256,11 @@ empset.c:128: Body of for statement is not a block: erc_delete(s1, er) empset.c: (in function empset_subset) empset.c:139: Undocumented modification of s1 possible from call to erc_iterStart: erc_iterStart(s1) -empset.c:141: Test expression for while not bool, type int: 0 empset.c:141: Body of if statement is not a block: - do { { erc_iterFinal(it) } } while (0) + do { { erc_iterFinal(it) } } while (FALSE) empset.c:140: Body of for statement is not a block: - if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it) } } while (0) + if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it) + } } while (FALSE) empset.c:135: Variable e declared but not used empset.c: (in function empset_initMod) empset.c:148: Undocumented use of file static initDone @@ -352,7 +351,6 @@ erc.h:16: Called procedure bool_initMod may access internal state, but globals erc.h:16: Undocumented modification of internal state possible from call to bool_initMod: bool_initMod() erc.h:16: Statement has no effect: employee_initMod() -erc.h:16: Test expression for while not bool, type int: 0 erc.h: (in macro erc_iterFinal) erc.h:20: Implicitly temp storage it passed as only param: free (it) < checking dbase.c > @@ -375,7 +373,6 @@ dbase.c:40: Name _db_ercKeyGet is in the implementation name space (any dbase.c: (in function _db_ercKeyGet) dbase.c:45: Undocumented modification of c possible from call to erc_iterStart: erc_iterStart(c) -dbase.c:49: Test expression for while not bool, type int: 0 dbase.c:56: Name _db_keyGet is in the implementation name space (any identifier beginning with underscore) dbase.c: (in function _db_keyGet) @@ -674,7 +671,6 @@ nullret 1 0 nullstate 1 0 sizeoftype 7 0 formalarray 0 17 -predboolptr 4 0 type 1 0 enumindex 24 0 relaxtypes 15 0 @@ -686,6 +682,6 @@ paramuse 1 0 typeuse 1 0 varuse 4 0 ======== ========= -Total 335 53 +Total 331 53 -Finished LCLint checking --- 335 code errors found, expected 331 +Finished LCLint checking --- 331 code errors found, as expected diff --git a/test/db1/bool.lh b/test/db1/bool.lh index 6436969..c4312a4 100644 --- a/test/db1/bool.lh +++ b/test/db1/bool.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" diff --git a/test/db1/dbase.lh b/test/db1/dbase.lh index 3443f1a..141afe0 100644 --- a/test/db1/dbase.lh +++ b/test/db1/dbase.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include # include "bool.h" diff --git a/test/db1/employee.lh b/test/db1/employee.lh index e1fbc26..e201551 100644 --- a/test/db1/employee.lh +++ b/test/db1/employee.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "bool.h" diff --git a/test/db1/empset.lh b/test/db1/empset.lh index 099660b..1104ded 100644 --- a/test/db1/empset.lh +++ b/test/db1/empset.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db1/erc.h b/test/db1/erc.h index 7cba640..ad40e79 100644 --- a/test/db1/erc.h +++ b/test/db1/erc.h @@ -15,12 +15,12 @@ typedef ercList *ercIter; # define erc_choose(c) ((c->vals)->val) # define erc_initMod() \ do { bool_initMod(); employee_initMod();\ - eref_initMod(); } while (0) + eref_initMod(); } while (FALSE) # define erc_iterFinal(it) (free(it)) # define erc_iterReturn(it, result) \ - do { erc_iterFinal(it); return result; } while (0) + do { erc_iterFinal(it); return result; } while (FALSE) # define for_ercElems(er, it, c)\ for (er = erc_yield (it = erc_iterStart (c)); \ diff --git a/test/db1/erc.lh b/test/db1/erc.lh index 6395967..c3a3c94 100644 --- a/test/db1/erc.lh +++ b/test/db1/erc.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "eref.h" diff --git a/test/db1/eref.lh b/test/db1/eref.lh index 29b0542..6009c9c 100644 --- a/test/db1/eref.lh +++ b/test/db1/eref.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db1/ereftab.lh b/test/db1/ereftab.lh index a43fcb7..5142bff 100644 --- a/test/db1/ereftab.lh +++ b/test/db1/ereftab.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db2.out b/test/db2.out index fde37eb..9ad7275 100644 --- a/test/db2.out +++ b/test/db2.out @@ -52,8 +52,118 @@ erc.c:102: Released storage c->vals reachable from parameter at return point erc.c: (in function erc_sprint) erc.c:141: Fresh storage returned as unqualified (should be only): result erc.c:122: Fresh storage result allocated -*** Segmentation Violation -*** Location (not trusted): erc.h:20 -*** Last code point: exprNode.c:8886 -*** Previous code point: exprNode.c:8886 -*** Please report bug to lclint-bug@cs.virginia.edu +< checking dbase.c > +< checking drive.c > +< checking macros bool.h > +< global checks > + +Finished LCLint checking --- 15 code errors found, as expected + +< reading spec employee.lcl > +< reading spec eref.lcl > +< reading spec empset.lcl > +< reading spec ereftab.lcl > +< reading spec erc.lcl > +< reading spec dbase.lcl > +< preprocessing > +< checking employee.c > +employee.c: (in function employee_setName) +employee.c:14: Parameter 1 (e->name) to function strcpy is declared unique but + may be aliased externally by parameter 2 (na) +< checking eref.c > +eref.c: (in function eref_initMod) +eref.c:62: Implicitly only storage eref_Pool.conts not released before + assignment: eref_Pool.conts = (employee *)malloc(size * sizeof(employee)) +eref.c:70: Implicitly only storage eref_Pool.status not released before + assignment: eref_Pool.status = (eref_status *)malloc(size * + sizeof(eref_status)) +eref.c:84: Global storage *(eref_Pool.conts) contains 4 undefined fields when + call returns: ssNum, salary, gen, j +eref.c:84: Global storage eref_Pool contains 1 undefined field when call + returns: status +< checking empset.c > +empset.c: (in function empset_insertUnique) +empset.c:44: Clauses exit with er referencing fresh storage in true branch, + local storage in continuation + empset.c:41: Fresh storage er allocated +empset.c: (in function empset_intersect) +empset.c:126: Fresh storage toDelete not released before return + empset.c:112: Fresh storage toDelete allocated +< checking ereftab.c > +< checking erc.c > +erc.c: (in function erc_create) +erc.c:33: Null storage c->vals derivable from return value: c + erc.c:31: Storage c->vals becomes null +erc.c: (in function erc_clear) +erc.c:49: Function returns with null storage derivable from parameter c->vals + erc.c:47: Storage c->vals becomes null +erc.c: (in function erc_final) +erc.c:54: Implicitly temp storage c passed as only param: free (c) +erc.c: (in function erc_delete) +erc.c:98: Implicitly only storage prev->next not released before assignment: + prev->next = elem->next +erc.c:98: Clauses exit with elem referencing implicitly only storage in true + branch, local storage in false branch + erc.c:96: Storage elem becomes implicitly only +erc.c:98: Storage c->vals->next is kept in one path, but live in another. + erc.c:98: Storage c->vals->next becomes kept +erc.c:102: Released storage c->vals reachable from parameter at return point + erc.c:100: Storage c->vals is released +< checking dbase.c > +dbase.c: (in function uncheckedHire) +dbase.c:121: Fresh storage er not released before return + dbase.c:108: Fresh storage er allocated +< checking drive.c > +drive.c: (in function main) +drive.c:49: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:65: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:83: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:120: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:124: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:135: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:140: Fresh storage em1 not released before assignment: + em1 = empset_create() + drive.c:35: Fresh storage em1 allocated +drive.c:146: Fresh storage em2 not released before assignment: + em2 = empset_create() + drive.c:74: Fresh storage em2 allocated +drive.c:147: Fresh storage em3 not released before assignment: + em3 = empset_disjointUnion(em2, em1) + drive.c:87: Fresh storage em3 allocated +drive.c:159: Variable m_res name is not a macro variable (it is a local + variable), but matches the macro variable namespace prefix "m_" +drive.c:163: Fresh storage em1 not released before return + drive.c:140: Fresh storage em1 allocated +drive.c:163: Fresh storage em2 not released before return + drive.c:146: Fresh storage em2 allocated +drive.c:163: Fresh storage em3 not released before return + drive.c:147: Fresh storage em3 allocated +< checking macros bool.h > +< global checks > + +Finished LCLint checking --- 28 code errors found, as expected + +< reading spec employee.lcl > +< reading spec eref.lcl > +< reading spec empset.lcl > +< reading spec ereftab.lcl > +< reading spec erc.lcl > +< reading spec dbase.lcl > +< preprocessing > +< checking employee.c > +< checking eref.c > +< checking empset.c > +< checking ereftab.c > +< checking erc.c > +< checking dbase.c > +< checking drive.c > +< checking macros bool.h > +< global checks > + +Finished LCLint checking --- no code errors found diff --git a/test/db2/dbase.lh b/test/db2/dbase.lh index 3443f1a..141afe0 100644 --- a/test/db2/dbase.lh +++ b/test/db2/dbase.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include # include "bool.h" diff --git a/test/db2/employee.lh b/test/db2/employee.lh index 3a3ce42..e9081ea 100644 --- a/test/db2/employee.lh +++ b/test/db2/employee.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include # include "bool.h" diff --git a/test/db2/empset.lh b/test/db2/empset.lh index 733f393..3099d2e 100644 --- a/test/db2/empset.lh +++ b/test/db2/empset.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db2/erc.lh b/test/db2/erc.lh index 9089a05..8105c22 100644 --- a/test/db2/erc.lh +++ b/test/db2/erc.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "eref.h" diff --git a/test/db2/eref.lh b/test/db2/eref.lh index 29b0542..6009c9c 100644 --- a/test/db2/eref.lh +++ b/test/db2/eref.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db2/ereftab.lh b/test/db2/ereftab.lh index a43fcb7..5142bff 100644 --- a/test/db2/ereftab.lh +++ b/test/db2/ereftab.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db3.out b/test/db3.out index e7a9c84..8c4e8fb 100644 --- a/test/db3.out +++ b/test/db3.out @@ -1,8 +1,141 @@ -erc.h: (in macro erc_initMod) -erc.h:19: Test expression for while not bool, type int: 0 -*** Segmentation Violation -*** Location (not trusted): erc.h:24 -*** Last code point: exprNode.c:8886 -*** Previous code point: exprNode.c:8886 -*** Please report bug to lclint-bug@cs.virginia.edu + +Error Type Reported Suppressed +=================== ======== ========= +usedef 0 1 +exporttype 0 3 +compdef 0 1 +modfilesys 0 25 +formalarray 0 17 + ======== ========= +Total 0 47 + +Finished LCLint checking --- no code errors found + +eref.c: (in function eref_alloc) +eref.c:36: Called procedure printf may access global stdout +eref.c:36: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in eref_alloc\n") +eref.c:36: Return value (type int) ignored: printf("Malloc r... +eref.c:46: Called procedure printf may access global stdout +eref.c:46: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in eref_alloc\n") +eref.c:46: Return value (type int) ignored: printf("Malloc r... +eref.c: (in function eref_initMod) +eref.c:82: Called procedure printf may access global stdout +eref.c:82: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in eref_initMod\n") +eref.c:82: Return value (type int) ignored: printf("Malloc r... +eref.c:90: Called procedure printf may access global stdout +eref.c:90: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in eref_initMod\n") +eref.c:90: Return value (type int) ignored: printf("Malloc r... +erc.c: (in function int_toSize) +erc.c:11: Undocumented use of global stderr +erc.c:11: Undocumented modification of *stderr possible from call to fprintf: + fprintf(stderr, "Error: int_toSize failure: %d", x) +erc.c:11: Return value (type int) ignored: fprintf(stderr, ... +erc.c: (in function erc_create) +erc.c:28: Called procedure printf may access global stdout +erc.c:28: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in erc_create\n") +erc.c:28: Return value (type int) ignored: printf("Malloc r... +erc.c: (in function erc_insert) +erc.c:80: Called procedure printf may access global stdout +erc.c:80: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in erc_insert\n") +erc.c:80: Return value (type int) ignored: printf("Malloc r... +erc.c: (in function erc_sprint) +erc.c:145: Called procedure printf may access global stdout +erc.c:145: Undocumented modification of *stdout possible from call to printf: + printf("Malloc returned null in erc_sprint\n") +erc.c:145: Return value (type int) ignored: printf("Malloc r... +dbase.c: (in function db_print) +dbase.c:307: Return value (type int) ignored: printf("Employee... +dbase.c:312: Return value (type int) ignored: printf("%s", pri... +drive.c: (in function main) +drive.c:31: Called procedure printf may access global stdout +drive.c:31: Undocumented modification of *stdout possible from call to printf: + printf("FormatPos: Wrong number of arguments. Given %d needs 0.\n", argc - + 1) +drive.c:31: Return value (type int) ignored: printf("FormatPo... +drive.c:41: Called procedure printf may access global stdout +drive.c:41: Undocumented modification of *stdout possible from call to printf: + printf("Size should be 0.\n") +drive.c:41: Return value (type int) ignored: printf("Size sho... +drive.c:57: Called procedure printf may access global stdout +drive.c:57: Undocumented modification of *stdout possible from call to printf: + printf("Size should be 500.\n") +drive.c:57: Return value (type int) ignored: printf("Size sho... +drive.c:73: Called procedure printf may access global stdout +drive.c:73: Undocumented modification of *stdout possible from call to printf: + printf("Size should be 250.\n") +drive.c:73: Return value (type int) ignored: printf("Size sho... +drive.c:93: Called procedure printf may access global stdout +drive.c:93: Undocumented modification of *stdout possible from call to printf: + printf("Size should be 350.\n") +drive.c:93: Return value (type int) ignored: printf("Size sho... +drive.c:100: Called procedure printf may access global stdout +drive.c:100: Undocumented modification of *stdout possible from call to printf: + printf("Size should be 350.\n") +drive.c:100: Return value (type int) ignored: printf("Size sho... +drive.c:103: Called procedure printf may access global stdout +drive.c:103: Undocumented modification of *stdout possible from call to printf: + printf("Print two different employees:\n") +drive.c:103: Return value (type int) ignored: printf("Print tw... +drive.c:109: Called procedure printf may access global stdout +drive.c:109: Undocumented modification of *stdout possible from call to printf: + printf("%s\n", &(na[0])) +drive.c:109: Return value (type int) ignored: printf("%s\n", &... +drive.c:151: Called procedure printf may access global stdout +drive.c:151: Undocumented modification of *stdout possible from call to printf: + printf("Should print true: %s\n", bool_unparse(status == DBS_DUPLERR)) +drive.c:151: Return value (type int) ignored: printf("Should p... +drive.c:154: Called procedure printf may access global stdout +drive.c:154: Undocumented modification of *stdout possible from call to printf: + printf("Employees 0 - 19\n") +drive.c:154: Return value (type int) ignored: printf("Employee... +drive.c:155: Called procedure db_print may access global stdout +drive.c:155: Undocumented modification of *stdout possible from call to + db_print: db_print() +drive.c:158: Called procedure printf may access global stdout +drive.c:158: Undocumented modification of *stdout possible from call to printf: + printf("Employees 0 - 16, 18 - 19\n") +drive.c:158: Return value (type int) ignored: printf("Employee... +drive.c:159: Called procedure db_print may access global stdout +drive.c:159: Undocumented modification of *stdout possible from call to + db_print: db_print() +drive.c:164: Called procedure printf may access global stdout +drive.c:164: Undocumented modification of *stdout possible from call to printf: + printf("Should get two females: %d\n%s\n", i, sprintResult) +drive.c:164: Return value (type int) ignored: printf("Should g... +drive.c:174: Called procedure printf may access global stdout +drive.c:174: Undocumented modification of *stdout possible from call to printf: + printf("Should get two females and ten males: %d\n%s\n", i, sprintResult) +drive.c:174: Return value (type int) ignored: printf("Should g... +drive.c:180: Called procedure printf may access global stdout +drive.c:180: Undocumented modification of *stdout possible from call to printf: + printf("Should get two females: %d\n%s\n", i, sprintResult) +drive.c:180: Return value (type int) ignored: printf("Should g... +drive.c:184: Called procedure printf may access global stdout +drive.c:184: Undocumented modification of *stdout possible from call to printf: + printf("Should get 18 employees\n") +drive.c:184: Return value (type int) ignored: printf("Should g... +drive.c:185: Called procedure db_print may access global stdout +drive.c:185: Undocumented modification of *stdout possible from call to + db_print: db_print() + +Error Type Reported Suppressed +=================== ======== ========= +usedef 0 1 +exporttype 0 3 +globs 26 0 +retvalint 25 0 +compdef 0 1 +mods 26 0 +modfilesys 0 25 +formalarray 0 17 + ======== ========= +Total 77 47 + +Finished LCLint checking --- 77 code errors found, as expected diff --git a/test/db3/bool.lh b/test/db3/bool.lh index 1b60ec7..3a4de16 100644 --- a/test/db3/bool.lh +++ b/test/db3/bool.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" diff --git a/test/db3/check.lh b/test/db3/check.lh index e4a41f6..04e55af 100644 --- a/test/db3/check.lh +++ b/test/db3/check.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "bool.h" diff --git a/test/db3/dbase.lh b/test/db3/dbase.lh index a54d63b..0bfec40 100644 --- a/test/db3/dbase.lh +++ b/test/db3/dbase.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include # include "bool.h" diff --git a/test/db3/employee.h b/test/db3/employee.h index 6489fba..c3141b5 100644 --- a/test/db3/employee.h +++ b/test/db3/employee.h @@ -1,7 +1,7 @@ # ifndef EMPLOYEE_H # define EMPLOYEE_H -# define maxEmployeeName ((size_t) 20) +# define maxEmployeeName ((size_t) 20) # define employeePrintSize (63) /*@notfunction@*/ diff --git a/test/db3/employee.lh b/test/db3/employee.lh index b8dd981..54cd8f4 100644 --- a/test/db3/employee.lh +++ b/test/db3/employee.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include # include "bool.h" diff --git a/test/db3/empset.lh b/test/db3/empset.lh index d5656bb..4a7ba7b 100644 --- a/test/db3/empset.lh +++ b/test/db3/empset.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db3/erc.h b/test/db3/erc.h index f6fdb9b..cec926c 100644 --- a/test/db3/erc.h +++ b/test/db3/erc.h @@ -18,7 +18,7 @@ typedef ercInfo *erc; # define erc_initMod() \ do { bool_initMod(); employee_initMod();\ - eref_initMod(); } while (0) + eref_initMod(); } while (FALSE) # define erc_elements(c, m_x) \ { erc m_c = (c); ercElem *m_ec = (m_c)->vals; int m_i = 0; \ diff --git a/test/db3/erc.lh b/test/db3/erc.lh index 8f67d93..d4011bc 100644 --- a/test/db3/erc.lh +++ b/test/db3/erc.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "eref.h" diff --git a/test/db3/eref.lh b/test/db3/eref.lh index e42cd16..8d28611 100644 --- a/test/db3/eref.lh +++ b/test/db3/eref.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/db3/ereftab.lh b/test/db3/ereftab.lh index fffce7e..50bcca2 100644 --- a/test/db3/ereftab.lh +++ b/test/db3/ereftab.lh @@ -1,4 +1,4 @@ -/* Output from LCLint 2.5q */ +/* Output from LCLint 2.5p */ # include "bool.h" # include "employee.h" diff --git a/test/help.expect b/test/help.expect index 19632a3..3a339ba 100644 --- a/test/help.expect +++ b/test/help.expect @@ -85,7 +85,6 @@ Finished LCLint checking --- no code processed assignexpose badflag bitwisesigned - bool boolcompare boolfalse boolint @@ -313,6 +312,8 @@ Finished LCLint checking --- no code processed nullptrarith nullret nullstate + nullterminated + nullterminated numenummembers numliteral numstructfields @@ -447,9 +448,9 @@ Finished LCLint checking --- no code processed whichlib whileblock whileempty + zerobool -bool --- boolean type is abstract likelybool --- type name is probably a boolean type but does not match default boolean type name, "bool", and alternate name is not set impabstract --- assume user type definitions are abstract (unless @@ -663,7 +664,7 @@ hints --- provide hints on using lclint (hint only reported for first related error) retval --- return value ignored (sets retvalint, retvalbool and retvalother) retvalother --- return value of type other than bool or int ignored -retvalbool --- return value of type bool ignored +retvalbool --- return value of manifest type bool ignored retvalint --- return value of type int ignored f --- load options file (default ~/.lclintrc not loaded) i --- set LCL initilization file @@ -886,6 +887,8 @@ includenest --- set maximum number of nested #include files ansilimits --- check for violations of standard limits (controlnestdepth, stringliterallen, includenest, numstructfields, numenummembers) null --- misuses of null pointer +nullterminated --- misuse of nullterminated allocation +nullterminated --- misuse of nullterminated allocation nullderef --- possible dereferencce of null pointer fcnderef --- dereferencce of a function type nullpass --- possibly null pointer passed as formal with no null annotation @@ -964,6 +967,7 @@ unsigned integral type (e.g., size_t) longsignedintegral --- allow long type to match an arbitrary signed integral type (e.g., ssize_t) zeroptr --- 0 is treated as a pointer +zerobool --- 0 is treated as a boolean repeatunrecog --- do not suppress repeated unrecognized identifier messages (instead of only reporting the first error) sysunrecog --- report unrecognized identifiers with system (__) prefix diff --git a/test/rc.expect b/test/rc.expect index 8722300..255367f 100644 --- a/test/rc.expect +++ b/test/rc.expect @@ -16,7 +16,7 @@ rc.c: (in function f) rc.c:3:10: Observer storage returned without qualification: "a silly\"flag\"\\" rc.c:3:10: Storage becomes observer -Finished LCLint checking --- 1 code error found +Finished LCLint checking --- 1 code error found, as expected rc2.lclintrc:1:18: Warning: setting +boolint redundant with current value rc.c: (in function f) diff --git a/test/rc.out b/test/rc.out index 8722300..255367f 100644 --- a/test/rc.out +++ b/test/rc.out @@ -16,7 +16,7 @@ rc.c: (in function f) rc.c:3:10: Observer storage returned without qualification: "a silly\"flag\"\\" rc.c:3:10: Storage becomes observer -Finished LCLint checking --- 1 code error found +Finished LCLint checking --- 1 code error found, as expected rc2.lclintrc:1:18: Warning: setting +boolint redundant with current value rc.c: (in function f) diff --git a/test/t1.c b/test/t1.c new file mode 100644 index 0000000..3e5acf2 --- /dev/null +++ b/test/t1.c @@ -0,0 +1,8 @@ +void f () +{ + int *z; + z = (int *) malloc (4); +} + + + diff --git a/test/test.c b/test/test.c new file mode 100644 index 0000000..908a1fa --- /dev/null +++ b/test/test.c @@ -0,0 +1,4 @@ +int main (void) { + int *ip; + *ip = 3; /* 5. possible null deref */ +} diff --git a/test/tests2.2a.expect b/test/tests2.2a.expect index 0e4a8f4..1f957e8 100644 --- a/test/tests2.2a.expect +++ b/test/tests2.2a.expect @@ -54,11 +54,7 @@ Finished LCLint checking --- 5 code errors found, as expected Finished LCLint checking --- no code errors found -duff.c: (in function copy) -duff.c:15:12: Statement after switch is not a case: do { { case 0: } } while - (--n > 0) - -Finished LCLint checking --- 1 code error found, as expected +Finished LCLint checking --- no code errors found obviousloop.c: (in function f) obviousloop.c:14:3: Unreachable code: x = 12 @@ -98,12 +94,12 @@ bitops.c:6:9: Variable s2 declared but not used Finished LCLint checking --- 5 code errors found, as expected isalpha.c: (in function f) -isalpha.c:5:19: Function isalpha expects arg 1 to be unsigned char gets char: c +isalpha.c:5:19: Function isalpha expects arg 1 to be int gets char: c Finished LCLint checking --- 1 code error found, as expected isalpha.c: (in function f) -isalpha.c:5:19: Function isalpha expects arg 1 to be unsigned char gets char: c +isalpha.c:5:19: Function isalpha expects arg 1 to be int gets char: c Finished LCLint checking --- 1 code error found, as expected diff --git a/test/tests2.2a.out b/test/tests2.2a.out index 97fe981..1f957e8 100644 --- a/test/tests2.2a.out +++ b/test/tests2.2a.out @@ -54,11 +54,7 @@ Finished LCLint checking --- 5 code errors found, as expected Finished LCLint checking --- no code errors found -duff.c: (in function copy) -duff.c:15:12: Statement after switch is not a case: do { { case 0: } } while - (--n > 0) - -Finished LCLint checking --- 1 code error found, as expected +Finished LCLint checking --- no code errors found obviousloop.c: (in function f) obviousloop.c:14:3: Unreachable code: x = 12 diff --git a/test/tests2.5.expect b/test/tests2.5.expect new file mode 100644 index 0000000..efa8849 --- /dev/null +++ b/test/tests2.5.expect @@ -0,0 +1,39 @@ + +Finished LCLint checking --- no code errors found + +boolt.c: (in function test) +boolt.c:7:16: Function test expects arg 1 to be pan_bool_t gets int: 2 + +Finished LCLint checking --- 1 code error found, as expected + +uconstants.c: (in function f) +uconstants.c:2:16: Variable x0 declared but not used +uconstants.c:3:21: Variable x1 declared but not used + +Finished LCLint checking --- 2 code errors found, as expected + +hoof.c: (in function main) +hoof.c:12:16: Function init_arr expects arg 2 to be long int * gets int *: &j + +Finished LCLint checking --- 1 code error found, as expected + +Finished LCLint checking --- no code errors found + +Finished LCLint checking --- no code errors found + +booltest.c: (in function f) +booltest.c:9:12: Return value type int does not match declared type bool: i +booltest.c:8:7: Test expression for if not bool, type int: i + +Finished LCLint checking --- 2 code errors found, as expected + +Finished LCLint checking --- no code errors found + +booltest.c: (in function f) +booltest.c:9:12: Return value type int does not match declared type bool: i + +Finished LCLint checking --- 1 code error found, as expected + +Finished LCLint checking --- no code errors found + +Finished LCLint checking --- no code errors found diff --git a/test/tests2.5.out b/test/tests2.5.out new file mode 100644 index 0000000..efa8849 --- /dev/null +++ b/test/tests2.5.out @@ -0,0 +1,39 @@ + +Finished LCLint checking --- no code errors found + +boolt.c: (in function test) +boolt.c:7:16: Function test expects arg 1 to be pan_bool_t gets int: 2 + +Finished LCLint checking --- 1 code error found, as expected + +uconstants.c: (in function f) +uconstants.c:2:16: Variable x0 declared but not used +uconstants.c:3:21: Variable x1 declared but not used + +Finished LCLint checking --- 2 code errors found, as expected + +hoof.c: (in function main) +hoof.c:12:16: Function init_arr expects arg 2 to be long int * gets int *: &j + +Finished LCLint checking --- 1 code error found, as expected + +Finished LCLint checking --- no code errors found + +Finished LCLint checking --- no code errors found + +booltest.c: (in function f) +booltest.c:9:12: Return value type int does not match declared type bool: i +booltest.c:8:7: Test expression for if not bool, type int: i + +Finished LCLint checking --- 2 code errors found, as expected + +Finished LCLint checking --- no code errors found + +booltest.c: (in function f) +booltest.c:9:12: Return value type int does not match declared type bool: i + +Finished LCLint checking --- 1 code error found, as expected + +Finished LCLint checking --- no code errors found + +Finished LCLint checking --- no code errors found diff --git a/test/tests2.5/Makefile b/test/tests2.5/Makefile new file mode 100644 index 0000000..c9724c9 --- /dev/null +++ b/test/tests2.5/Makefile @@ -0,0 +1,40 @@ +.PHONY: boolt testalt booltest boolbad hoof testalt uconstants ull baz + +LCLINT = lclint + +# ull and baz added after 2.5q +all: testalt boolt uconstants badcomment hoof boolbad booltest ull baz + +testalt: + ${LCLINT} -dump newlint.lcd testalt.c + +boolt: + ${LCLINT} -expect 1 +partial +booltype pan_bool_t +booltrue PAN_TRUE +boolfalse PAN_FALSE boolt.c + +uconstants: + ${LCLINT} uconstants.c -expect 2 + +badcomment: + ${LCLINT} badcomment.c -expect 3 + +hoof: + ${LCLINT} hoof.c -expect 1 + ${LCLINT} hoof.c +ignorequals + +ignorecmd: + ${LCLINT} +ignorecommand -we + +booltest: + ${LCLINT} booltest.c -booltype bool -expect 2 + ${LCLINT} booltest.c -booltype bool +boolint + ${LCLINT} booltest.c -booltype bool -predboolint -expect 1 + +boolbad: + ${LCLINT} -weak -booltype BOOLEAN boolbad.c + + +ull: + ${LCLINT} ull.c + +baz: + ${LCLINT} baz.h bimbim.h -I. diff --git a/test/tests2.5/Makefile~ b/test/tests2.5/Makefile~ new file mode 100644 index 0000000..0675ded --- /dev/null +++ b/test/tests2.5/Makefile~ @@ -0,0 +1,32 @@ +.PHONY: boolt testalt booltest boolbad hoof testalt uconstants + +LCLINT = lclint + +all: testalt boolt uconstants badcomment hoof boolbad booltest + +testalt: + ${LCLINT} -dump newlint.lcd testalt.c + +boolt: + ${LCLINT} -expect 1 +partial +booltype pan_bool_t +booltrue PAN_TRUE +boolfalse PAN_FALSE boolt.c + +uconstants: + ${LCLINT} uconstants.c -expect 2 + +badcomment: + ${LCLINT} badcomment.c -expect 3 + +hoof: + ${LCLINT} hoof.c -expect 1 + ${LCLINT} hoof.c +ignorequals + +ignorecmd: + ${LCLINT} +ignorecommand -we + +booltest: + ${LCLINT} booltest.c -booltype bool -expect 2 + ${LCLINT} booltest.c -booltype bool +boolint + ${LCLINT} booltest.c -booltype bool -predboolint -expect 1 + +boolbad: + ${LCLINT} -weak -booltype BOOLEAN boolbad.c diff --git a/test/tests2.5/badcomment b/test/tests2.5/badcomment new file mode 100644 index 0000000..e69de29 diff --git a/test/tests2.5/badcomment.c b/test/tests2.5/badcomment.c new file mode 100644 index 0000000..63ed335 --- /dev/null +++ b/test/tests2.5/badcomment.c @@ -0,0 +1 @@ +/*@-PRIVATE-CALLS-@*/ diff --git a/test/tests2.5/baz.h b/test/tests2.5/baz.h new file mode 100644 index 0000000..0bac11d --- /dev/null +++ b/test/tests2.5/baz.h @@ -0,0 +1,48 @@ +/* + * baz.h + */ + +#ifndef _BAZ_H_ +#define _BAZ_H_ + +struct pxs { + int a; + int b; + int c[4]; + int d; +}; + +typedef struct pxs pxt; + +struct xstr { + pxt a; +}; + +typedef struct xstr pvt; + +struct pvas { + int a; + int b[4]; +}; + +typedef struct pvas ppvat; + +struct pvzas { + int a; + int c[4]; +}; + +typedef struct pvzas pvzat; + +struct p4zas { + int a; + int b[4]; +}; + +struct yabbawabba { + pxt a; +}; + +#endif /* !_BAZ_H_ */ + + diff --git a/test/tests2.5/bimbim.h b/test/tests2.5/bimbim.h new file mode 100644 index 0000000..99969f9 --- /dev/null +++ b/test/tests2.5/bimbim.h @@ -0,0 +1,10 @@ +/* + * bimbim.h + */ + +#ifndef _BIMBIM_H_ +#define _BIMBIM_H_ + +#include + +#endif /* !_BIMBIM_H_ */ diff --git a/test/tests2.5/boolbad b/test/tests2.5/boolbad new file mode 100644 index 0000000..e69de29 diff --git a/test/tests2.5/boolbad.c b/test/tests2.5/boolbad.c new file mode 100644 index 0000000..4f15ffb --- /dev/null +++ b/test/tests2.5/boolbad.c @@ -0,0 +1,15 @@ +typedef /*@abstract@*/ enum {FALSE = 0, TRUE = 1} BOOLEAN; + +void func (BOOLEAN foo) +{ + foo = FALSE; +} + +int main (void) +{ + BOOLEAN foo; + + func (foo); + + return 0; +} diff --git a/test/tests2.5/boolt.c b/test/tests2.5/boolt.c new file mode 100644 index 0000000..969c0f2 --- /dev/null +++ b/test/tests2.5/boolt.c @@ -0,0 +1,12 @@ +typedef int pan_bool_t; + +#define PAN_FALSE (0) +#define PAN_TRUE ((pan_bool_t) 1) + +pan_bool_t test (pan_bool_t b) { + (void) test (2); + (void) test (PAN_FALSE); + (void) test (PAN_TRUE); + (void) test (b); + return PAN_TRUE; +} diff --git a/test/tests2.5/booltest b/test/tests2.5/booltest new file mode 100644 index 0000000..e69de29 diff --git a/test/tests2.5/booltest.c b/test/tests2.5/booltest.c new file mode 100644 index 0000000..48fc58b --- /dev/null +++ b/test/tests2.5/booltest.c @@ -0,0 +1,14 @@ +/* +** Boolean type checking +*/ + +typedef int bool; + +bool f (int i, bool b) { + if (i) { /* error with -boolint -predboolint */ + return i; /* error with -boolint */ + } else { + return b; /* okay */ + } +} + diff --git a/test/tests2.5/dummyfile.c b/test/tests2.5/dummyfile.c new file mode 100644 index 0000000..f00e319 --- /dev/null +++ b/test/tests2.5/dummyfile.c @@ -0,0 +1,48 @@ +/* + * Problem File. + * Command Line used to run: + * + * /extra/msmoot/lclint-2.5m/bin/lclint -dump newlint.lcd dummyfile.c + */ + + +#if 1 +// This is our normal definition of PRINTF_LIKE - our lclint run normally +// does not use this definition because I think I had a problem in a file +// if I used this definition (I have to retest with 2.5 though). this +// example does not seem to have a problem +#define PRINTF_LIKE __attribute__ ((format(printf,1,2))) +#else +#define PRINTF_LIKE +#endif + +#if 1 // These fail to -dump +int /*@alt void@*/ console_printf(const char *__format, ...) +PRINTF_LIKE; +int /*@alt void@*/ eprintf(const char *__format, ...) PRINTF_LIKE; +int /*@alt void@*/ lprintf(const char *__format, ...) PRINTF_LIKE; +#endif + +#if 0 // Even these fail +int /*@alt void@*/ console_printf(const char *__format, ...); +int /*@alt void@*/ eprintf(const char *__format, ...); +int /*@alt void@*/ lprintf(const char *__format, ...); +#endif + + +/* But all of these work */ +int /* @alt void@ */ console_printf(const char *__format, ...); +int /* @alt void@ */ eprintf(const char *__format, ...); +int /* @alt void@ */ lprintf(const char *__format, ...); + +int console_printf(const char *__format, ...) PRINTF_LIKE; +int eprintf(const char *__format, ...) PRINTF_LIKE; +int lprintf(const char *__format, ...) PRINTF_LIKE; + +int console_printf(const char *__format, ...); +int eprintf(const char *__format, ...); +int lprintf(const char *__format, ...); + + + + diff --git a/test/tests2.5/hoof.c b/test/tests2.5/hoof.c new file mode 100644 index 0000000..56ff0b1 --- /dev/null +++ b/test/tests2.5/hoof.c @@ -0,0 +1,30 @@ +#include + +static void test (long int x); +static void init_arr(/*@out@*/ float[],/*@out@*/ long int*); + +int main(void) +{ + int j; + long i; + float arr[2]; + + init_arr(arr,&j); + test (j); + + for( i=0; i < j; i++ ) { + printf("%ld %d: %.6e\n",i,j,arr[i]); + } + return(0); +} + +void init_arr(float arr[], + long int *j) +{ + long i; + + *j = 2L; + for( i=0; i < 2L; i++ ) { + arr[i] = (float)(i+1); + } +} diff --git a/test/tests2.5/newlint.lcd b/test/tests2.5/newlint.lcd new file mode 100644 index 0000000..fb2a9b2 --- /dev/null +++ b/test/tests2.5/newlint.lcd @@ -0,0 +1,898 @@ +;;LCLint Dump: newlint.lcd +;;LCLint 2.5q --- 20 May 2000 +;;lib:166 +;;ctTable +0 u-2 19 38 +0 p1|-2 20 39 +0 b-2 21 40 +0 p3|-2 22 41 +0 p4|-2 23 42 +0 p5|-2 24 43 +0 p6|-2 25 44 +0 p7|-2 26 45 +0 p8|-2 27 46 +0 p9|-2 28 47 +0 p10|-2 29 48 +0 p11|-2 30 49 +0 p12|-2 31 50 +0 p13|-2 32 51 +0 p14|-2 33 52 +0 p15|-2 34 53 +0 p16|-2 35 54 +0 p17|-2 36 55 +0 p18|-2 37 56 +1 t0|0 312 -1 +1 t1|1& +1 t2|2& +1 t3|3& +1 t4|4 313 -1 +1 t5|5& +1 t6|6& +1 t7|7& +1 t8|8& +1 t9|9& +1 t10|10& +1 t11|11& +1 t12|12& +1 t13|13& +1 t14|14& +1 t15|15& +1 t16|16& +1 t17|17& +1 t18|18& +2 y0|0& +2 y1|1& +2 y2|2& +2 y3|3& +2 y4|4& +2 y5|5& +2 y6|6& +2 y7|7& +2 y8|8& +2 y9|9& +2 y10|10& +2 y11|11& +2 y12|12& +2 y13|13& +2 y14|14& +2 y15|15& +2 y16|16& +2 y17|17& +2 y18|18& +-2 ?! +0 s1|& +0 s2|& +0 s3|& +0 s4|& +0 s5|& +0 s14|& +0 s15|& +0 s6|-1 381 -1 +0 s7|& +0 a0|-1 399 -1 +3 C0.5/20|! +3 C0.68/2|! +3 C0.2/5|! +3 f0 (70|@7|$#,)! +3 f1 (70|@7|$#,)! +3 C0.5/3|! +3 f0 (73|$#,)! +3 f2 (73|$#,)! +3 f70 (73|$#,)! +3 f0 (73|$#,)! +3 f2 (73|$#,)! +3 f70 (73|$#,)! +3 f0 (73|$#,)! +3 f2 (73|$#,)! +3 f70 (73|$#,)! +3 f0 (73|$#,)! +3 f2 (73|$#,)! +3 f70 (73|$#,)! +3 f0 (73|$#,)! +3 f2 (73|$#,)! +3 C0.2/5|! +3 f88 (73|$#,)! +3 C0.5/3|! +3 f0 (90|$#,)! +3 f2 (90|$#,)! +3 f88 (90|$#,)! +3 f0 (90|$#,)! +3 f2 (90|$#,)! +3 f88 (90|$#,)! +3 f0 (90|$#,)! +3 f2 (90|$#,)! +3 f88 (90|$#,)! +3 f0 (90|$#,)! +3 f2 (90|$#,)! +3 f88 (90|$#,)! +3 f0 (90|$#,)! +3 f2 (90|$#,)! +3 C0.2/5|! +3 f105 (90|$#,)! +3 C0.5/3|! +3 f0 (107|$#,)! +3 f2 (107|$#,)! +3 f105 (107|$#,)! +3 C0.4/5|! +3 f0 (107|$#,)! +3 f4 (107|$#,)! +3 f111 (107|$#,)! +3 f0 (107|$#,)! +3 f4 (107|$#,)! +3 f111 (107|$#,)! +3 Slconv{23|@1|0@0@3&#decimal_point,23|@1|0@0@3&#thousands_sep,23|@1|0@0@3&#grouping,23|@1|0@0@3&#int_curr_symbol,23|@1|0@0@3&#currency_symbol,23|@1|0@0@3&#mon_decimal_point,23|@1|0@0@3&#mon_thousands_sep,23|@1|0@0@3&#mon_grouping,23|@1|0@0@3&#positive_sign,23|@1|0@0@3&#negative_sign,4|@1|$#int_frac_digits,4|@1|$#frac_digits,4|@1|$#p_cs_precedes,4|@1|$#p_sep_by_space,4|@1|$#n_cs_precedes,4|@1|$#n_sep_by_space,4|@1|$#p_sign_posn,4|@1|$#n_sign_posn,}! +0 s343|-1 125 -1 +3 f0 (5|$#,23|0@5@7&#,)! +3 f19 (5|$#,23|0@5@7&#,)! +3 f23 (5|$#,23|0@5@7&#,)! +3 f0 ()! +3 f19 ()! +1 t119|119& +3 f125 ()! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,17|$#,)! +3 f17 (17|$#,17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,5|$#,)! +3 f17 (17|$#,5|$#,)! +3 f0 (17|$#,24|4@0@7&#,)! +3 f17 (17|$#,24|4@0@7&#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,17|$#,)! +3 f17 (17|$#,17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,)! +3 f17 (17|$#,)! +3 f0 (17|$#,36|4@0@7&#,)! +3 f17 (17|$#,36|4@0@7&#,)! +3 f0 (17|$#,17|$#,)! +3 f17 (17|$#,17|$#,)! +0 a16|& +3 f0 (171|4@0@7&#,)! +3 f5 (171|4@0@7&#,)! +3 f0 (171|$#,5|$#,)! +3 f1 (171|$#,5|$#,)! +0 s8|& +3 ?! +3 f177 (5|$#,)! +3 f1 (5|$#,)^180 +1 t179|179& +3 ?! +3 f181 (5|$#,)! +3 f1 (5|$#,)^184 +1 t183|183& +3 ?! +3 f185 (5|$#,)! +3 f1 (5|$#,)^188 +1 t187|187& +3 ?! +3 f189 (5|$#,)! +3 f1 (5|$#,)^192 +1 t191|191& +3 f0 (5|$#,192|0@5@7&#,)! +3 f19 (5|$#,192|0@5@7&#,)^195 +1 t194|194& +3 ?! +3 f196 (5|$#,)! +3 f19 (5|$#,)! +3 f1 (5|$#,192|0@5@7&#,)! +3 f1 (5|$#,)! +3 f200 (5|$#,192|0@5@7&#,)! +3 f0 (5|$#,)! +3 f5 (5|$#,)! +0 a17|& +3 f0 (204|4@0@7&#,!.,)! +3 f1 (204|4@0@7&#,!.,)! +3 f0 (204|$#,)! +3 f1 (204|$#,)! +0 a18|-1 211 -1 +0 a19|-1 287 -1 +1 t209|209& +3 f0 (23|$#,)! +3 f5 (23|$#,)! +3 f0 (23|$#,23|$#,)! +3 f5 (23|$#,23|$#,)! +3 f0 ()! +3 f19 ()! +3 f211 ()! +3 f0 (23|@5|4@5@7&#,)! +3 f19 (23|@5|4@5@7&#,)! +3 f23 (23|@5|4@5@7&#,)! +3 f0 (211|$#,)! +3 f5 (211|$#,)! +3 f0 (211|0@5@7&#,)! +3 f5 (211|0@5@7&#,)! +3 f0 (23|$#,23|$#,)! +3 f19 (23|$#,23|$#,)! +3 f211 (23|$#,23|$#,)! +3 f0 (23|$#,23|$#,211|$#,)! +3 f19 (23|$#,23|$#,211|$#,)! +3 f211 (23|$#,23|$#,211|$#,)! +3 f0 (211|$#,23|0@5@19@2@0#,)! +3 f1 (211|$#,23|0@5@19@2@0#,)! +3 f0 (211|$#,23|0@5@19@2@0#,5|$#,63|$#,)! +3 f5 (211|$#,23|0@5@19@2@0#,5|$#,63|$#,)! +3 C0.5/1|! +3 f0 (211|$#,23|$#,!.,)! +3 f5 (211|$#,23|$#,!.,)! +3 f236 (211|$#,23|$#,!.,)! +3 f0 (211|$#,23|$#,!.,)! +3 f5 (211|$#,23|$#,!.,)! +3 f0 (23|$#,!.,)! +3 f5 (23|$#,!.,)! +3 f236 (23|$#,!.,)! +3 f0 (23|$#,!.,)! +3 f5 (23|$#,!.,)! +3 f0 (23|4@0@7&#,23|$#,!.,)! +3 f5 (23|4@0@7&#,23|$#,!.,)! +3 f236 (23|4@0@7&#,23|$#,!.,)! +3 f0 (23|4@0@7&#,23|$#,!.,)! +3 f5 (23|4@0@7&#,23|$#,!.,)! +3 f0 (211|$#,23|$#,204|$#,)! +3 f5 (211|$#,23|$#,204|$#,)! +3 f0 (23|$#,204|$#,)! +3 f5 (23|$#,204|$#,)! +3 f0 (23|4@0@7&#,23|$#,204|$#,)! +3 f5 (23|4@0@7&#,23|$#,204|$#,)! +3 f0 (211|$#,)! +3 f5 (211|$#,)! +3 f0 (23|@5|4@0@7&#,5|$#,211|$#,)! +3 f19 (23|@5|4@0@7&#,5|$#,211|$#,)! +3 f23 (23|@5|4@0@7&#,5|$#,211|$#,)! +3 C0.5/4|! +3 f0 (263|$#,211|$#,)! +3 f5 (263|$#,211|$#,)! +3 f0 (23|$#,211|$#,)! +3 f5 (23|$#,211|$#,)! +3 f0 (211|@7|$#,)! +3 f5 (211|@7|$#,)! +3 f0 ()! +3 f5 ()! +3 f0 (23|4@0@7&#,)! +3 f19 (23|4@0@7&#,)! +3 f23 (23|4@0@7&#,)! +3 f0 (263|$#,211|@7|$#,)! +3 f5 (263|$#,211|@7|$#,)! +3 f0 (263|$#,)! +3 f5 (263|$#,)! +3 f0 (23|$#,)! +3 f5 (23|$#,)! +3 f0 (263|$#,211|$#,)! +3 f5 (263|$#,211|$#,)! +3 f0 (20|4@0@7&#,63|$#,63|$#,211|$#,)! +3 f63 (20|4@0@7&#,63|$#,63|$#,211|$#,)! +3 f0 (20|$#,63|$#,63|$#,211|$#,)! +3 f63 (20|$#,63|$#,63|$#,211|$#,)! +1 t210|210& +3 f0 (211|$#,287|4@0@7&#,)! +3 f5 (211|$#,287|4@0@7&#,)! +3 f0 (211|$#,9|$#,5|$#,)! +3 f5 (211|$#,9|$#,5|$#,)! +3 f0 (211|$#,287|$#,)! +3 f5 (211|$#,287|$#,)! +3 f0 (211|$#,)! +3 f9 (211|$#,)! +3 f0 (211|$#,)! +3 f1 (211|$#,)! +3 f0 (211|$#,)! +3 f1 (211|$#,)! +3 f0 (211|$#,)! +3 f5 (211|$#,)! +3 f0 (211|$#,)! +3 f5 (211|$#,)! +3 f0 (23|0@5@7&#,)! +3 f1 (23|0@5@7&#,)! +3 f0 (23|$#,)! +3 f17 (23|$#,)! +3 f0 (23|$#,)! +3 f5 (23|$#,)! +3 f0 (23|$#,)! +3 f9 (23|$#,)! +1 t19|19& +1 t23|23& +3 f0 (23|$#,313|4@5@7&#,)! +3 f17 (23|$#,313|4@5@7&#,)! +3 f0 (23|$#,313|4@5@7&#,5|$#,)! +3 f9 (23|$#,313|4@5@7&#,5|$#,)! +3 f0 (23|$#,313|4@5@7&#,5|$#,)! +3 f10 (23|$#,313|4@5@7&#,5|$#,)! +3 f0 ()! +3 f5 ()! +3 f0 (6|$#,)! +3 f1 (6|$#,)! +3 f0 (63|$#,63|$#,)! +3 f19 (63|$#,63|$#,)! +3 f20 (63|$#,63|$#,)! +3 f0 (63|$#,)! +3 f19 (63|$#,)! +3 f20 (63|$#,)! +3 f0 (20|@5|4@5@2&#,63|$#,)! +3 f19 (20|@5|4@5@2&#,63|$#,)! +3 f20 (20|@5|4@5@2&#,63|$#,)! +3 f0 (20|4@5@2&#,)! +3 f1 (20|4@5@2&#,)! +3 f0 ()! +3 f1 ()! +3 f0 (5|$#,)! +3 f1 (5|$#,)! +3 ?! +3 f339 ()! +3 f1 ()^342 +1 t341|341& +3 f0 (342|$#,)! +3 f5 (342|$#,)! +3 f0 (23|$#,)! +3 f19 (23|$#,)! +3 f23 (23|$#,)! +3 f0 (23|0@5@7&#,)! +3 f5 (23|0@5@7&#,)! +3 ?! +3 f350 (20|$#,20|$#,)! +3 f5 (20|$#,20|$#,)^353 +1 t352|352& +3 f0 (20|$#,20|$#,63|$#,63|$#,353|$#,)! +3 f19 (20|$#,20|$#,63|$#,63|$#,353|$#,)! +3 f20 (20|$#,20|$#,63|$#,63|$#,353|$#,)! +3 ?! +3 f357 (20|$#,20|$#,)! +3 f5 (20|$#,20|$#,)^360 +1 t359|359& +3 f0 (20|$#,63|$#,63|$#,360|$#,)! +3 f1 (20|$#,63|$#,63|$#,360|$#,)! +3 f0 (5|$#,)! +3 f5 (5|$#,)! +3 S!2{5|@1|$#quot,5|@1|$#rem,}! +0 s340|& +0 s20|& +3 f0 (5|$#,5|$#,)! +3 f367 (5|$#,5|$#,)! +3 f0 (9|$#,)! +3 f9 (9|$#,)! +3 S!3{9|@1|$#quot,9|@1|$#rem,}! +0 s341|& +0 s21|& +3 f0 (9|$#,9|$#,)! +3 f374 (9|$#,9|$#,)! +3 f0 (5|$#,)! +3 f66 (5|$#,)! +3 f0 (211|$#,)! +3 f66 (211|$#,)! +1 t65|65 463 -1 +3 f0 (381|@5|$#,5|$#,211|$#,)! +3 f19 (381|@5|$#,5|$#,211|$#,)! +3 f381 (381|@5|$#,5|$#,211|$#,)! +3 f0 (65|$#,211|$#,)! +3 f66 (65|$#,211|$#,)! +3 f0 (381|$#,211|$#,)! +3 f5 (381|$#,211|$#,)! +3 f0 (211|$#,5|$#,)! +3 f5 (211|$#,5|$#,)! +3 f0 (211|$#,381|$#,!.,)! +3 f5 (211|$#,381|$#,!.,)! +3 f0 (211|$#,381|$#,!.,)! +3 f5 (211|$#,381|$#,!.,)! +3 f0 (211|@7|$#,)! +3 f66 (211|@7|$#,)! +3 f0 ()! +3 f66 ()! +1 t67|67& +3 f0 (23|$#,63|$#,399|0@5@7&#,)! +3 f63 (23|$#,63|$#,399|0@5@7&#,)! +3 f0 (381|0@5@7&#,23|$#,63|$#,399|0@5@7&#,)! +3 f63 (381|0@5@7&#,23|$#,63|$#,399|0@5@7&#,)! +3 f0 (399|0@5@7&#,)! +3 f5 (399|0@5@7&#,)! +3 f0 (381|0@5@7&#,313|$#,63|$#,399|0@5@7&#,)! +3 f63 (381|0@5@7&#,313|$#,63|$#,399|0@5@7&#,)! +3 f0 (65|$#,211|@7|$#,)! +3 f66 (65|$#,211|@7|$#,)! +3 f0 (65|$#,)! +3 f66 (65|$#,)! +3 f0 (381|$#,63|$#,381|$#,!.,)! +3 f5 (381|$#,63|$#,381|$#,!.,)! +3 f0 (381|$#,381|$#,!.,)! +3 f5 (381|$#,381|$#,!.,)! +3 f0 (66|$#,211|$#,)! +3 f66 (66|$#,211|$#,)! +3 f0 (211|$#,381|$#,204|$#,)! +3 f5 (211|$#,381|$#,204|$#,)! +3 f0 (381|$#,63|$#,381|$#,204|$#,)! +3 f5 (381|$#,63|$#,381|$#,204|$#,)! +3 f0 (381|$#,204|$#,)! +3 f5 (381|$#,204|$#,)! +3 f0 (23|4@5@7&#,65|$#,399|0@5@7&#,)! +3 f63 (23|4@5@7&#,65|$#,399|0@5@7&#,)! +3 C0.1/381|! +3 f0 (381|@5|4@0@9&#,381|$#,)! +3 f1 (381|@5|4@0@9&#,381|$#,)! +3 f426 (381|@5|4@0@9&#,381|$#,)! +3 f0 (381|@5|$#,65|$#,)! +3 f19 (381|@5|$#,65|$#,)! +3 f381 (381|@5|$#,65|$#,)! +3 f0 (381|$#,381|$#,)! +3 f5 (381|$#,381|$#,)! +3 f0 (381|$#,381|$#,)! +3 f5 (381|$#,381|$#,)! +3 f0 (381|@5|4@0@9&#,381|$#,)! +3 f1 (381|@5|4@0@9&#,381|$#,)! +3 f426 (381|@5|4@0@9&#,381|$#,)! +3 f0 (381|$#,381|$#,)! +3 f63 (381|$#,381|$#,)! +0 s342|-1 443 -1 +1 t442|442& +3 f0 (381|4@0@7&#,63|$#,381|$#,443|$#,)! +3 f63 (381|4@0@7&#,63|$#,381|$#,443|$#,)! +3 f0 (381|$#,)! +3 f63 (381|$#,)! +3 C0.1/381|! +3 f0 (381|@5|4@0@9&#,381|$#,63|$#,)! +3 f1 (381|@5|4@0@9&#,381|$#,63|$#,)! +3 f448 (381|@5|4@0@9&#,381|$#,63|$#,)! +3 f0 (381|$#,381|$#,63|$#,)! +3 f5 (381|$#,381|$#,63|$#,)! +3 f0 (381|@5|4@0@9&#,381|$#,63|$#,)! +3 f1 (381|@5|4@0@9&#,381|$#,63|$#,)! +3 f448 (381|@5|4@0@9&#,381|$#,63|$#,)! +3 f0 (381|@5|$#,381|$#,)! +3 f19 (381|@5|$#,381|$#,)! +3 f381 (381|@5|$#,381|$#,)! +3 f0 (381|@5|$#,65|$#,)! +3 f19 (381|@5|$#,65|$#,)! +3 f381 (381|@5|$#,65|$#,)! +1 t381|381& +3 f0 (23|0@5@7&#,463|$#,63|$#,399|0@5@7&#,)! +3 f63 (23|0@5@7&#,463|$#,63|$#,399|0@5@7&#,)! +3 f0 (381|$#,381|$#,)! +3 f63 (381|$#,381|$#,)! +3 f0 (381|$#,381|$#,)! +3 f19 (381|$#,381|$#,)! +3 f381 (381|$#,381|$#,)! +3 f0 (381|$#,463|0@5@7&#,)! +3 f17 (381|$#,463|0@5@7&#,)! +3 f0 (381|0@5@7&#,381|$#,463|$#,)! +3 f19 (381|0@5@7&#,381|$#,463|$#,)! +3 f381 (381|0@5@7&#,381|$#,463|$#,)! +3 f0 (381|$#,463|0@5@7&#,5|$#,)! +3 f9 (381|$#,463|0@5@7&#,5|$#,)! +3 f0 (381|$#,463|0@5@7&#,5|$#,)! +3 f10 (381|$#,463|0@5@7&#,5|$#,)! +3 f0 (381|0@5@7&#,381|$#,63|$#,)! +3 f63 (381|0@5@7&#,381|$#,63|$#,)! +3 f0 (66|$#,)! +3 f5 (66|$#,)! +3 f0 (381|$#,65|$#,63|$#,)! +3 f19 (381|$#,65|$#,63|$#,)! +3 f381 (381|$#,65|$#,63|$#,)! +3 f0 (381|$#,381|$#,63|$#,)! +3 f5 (381|$#,381|$#,63|$#,)! +3 f0 (381|@5|$#,381|$#,63|$#,)! +3 f19 (381|@5|$#,381|$#,63|$#,)! +3 f381 (381|@5|$#,381|$#,63|$#,)! +3 f0 (381|@5|$#,381|$#,63|$#,)! +3 f19 (381|@5|$#,381|$#,63|$#,)! +3 f381 (381|@5|$#,381|$#,63|$#,)! +3 f0 (381|@5|$#,65|$#,63|$#,)! +3 f19 (381|@5|$#,65|$#,63|$#,)! +3 f381 (381|@5|$#,65|$#,63|$#,)! +3 f0 (381|$#,!.,)! +3 f5 (381|$#,!.,)! +3 f0 (381|$#,!.,)! +3 f5 (381|$#,!.,)! +0 s9|& +0 s10|& +3 C0.2/5|! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f504 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f504 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f504 (66|$#,)! +3 f0 (66|$#,502|$#,)! +3 f2 (66|$#,502|$#,)! +3 f504 (66|$#,502|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f504 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 C0.2/5|! +3 f522 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f522 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f522 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f522 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f522 (66|$#,)! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f522 (66|$#,)! +3 C0.2/5|! +3 f0 (66|$#,)! +3 f2 (66|$#,)! +3 f539 (66|$#,)! +3 C0.66/5|! +3 f0 (66|$#,503|$#,)! +3 f66 (66|$#,503|$#,)! +3 f543 (66|$#,503|$#,)! +3 f0 (66|$#,)! +3 f66 (66|$#,)! +3 f543 (66|$#,)! +3 f0 (66|$#,)! +3 f66 (66|$#,)! +3 f543 (66|$#,)! +3 f0 (23|$#,)! +3 f503 (23|$#,)! +3 f0 (23|$#,)! +3 f502 (23|$#,)! +3 f0 (23|$#,63|$#,)! +3 f5 (23|$#,63|$#,)! +3 f0 (381|0@5@7&#,23|0@5@7&#,63|$#,)! +3 f5 (381|0@5@7&#,23|0@5@7&#,63|$#,)! +3 f0 (23|4@5@7&#,65|$#,)! +3 f5 (23|4@5@7&#,65|$#,)! +3 f0 (381|4@0@7&#,23|$#,63|$#,)! +3 f63 (381|4@0@7&#,23|$#,63|$#,)! +3 f0 (23|4@0@7&#,381|$#,63|$#,)! +3 f63 (23|4@0@7&#,381|$#,63|$#,)! +3 C0.1/20|! +3 f0 (20|@5|4@0@9&#,20|$#,63|$#,)! +3 f1 (20|@5|4@0@9&#,20|$#,63|$#,)! +3 f567 (20|@5|4@0@9&#,20|$#,63|$#,)! +3 f0 (20|@5|4@0@7&#,20|$#,63|$#,)! +3 f1 (20|@5|4@0@7&#,20|$#,63|$#,)! +3 f567 (20|@5|4@0@7&#,20|$#,63|$#,)! +3 C0.1/23|! +3 f0 (23|@5|4@0@9&#,23|$#,)! +3 f1 (23|@5|4@0@9&#,23|$#,)! +3 f574 (23|@5|4@0@9&#,23|$#,)! +3 f0 (23|@5|4@0@9&#,23|$#,63|$#,)! +3 f1 (23|@5|4@0@9&#,23|$#,63|$#,)! +3 f574 (23|@5|4@0@9&#,23|$#,63|$#,)! +3 f0 (23|@5|4@0@9&#,23|$#,)! +3 f1 (23|@5|4@0@9&#,23|$#,)! +3 f574 (23|@5|4@0@9&#,23|$#,)! +3 f0 (23|@5|4@0@9&#,23|$#,5|$#,)! +3 f1 (23|@5|4@0@9&#,23|$#,5|$#,)! +3 f574 (23|@5|4@0@9&#,23|$#,5|$#,)! +3 f0 (20|$#,20|$#,63|$#,)! +3 f5 (20|$#,20|$#,63|$#,)! +3 f0 (23|$#,23|$#,)! +3 f5 (23|$#,23|$#,)! +3 f0 (23|$#,23|$#,)! +3 f5 (23|$#,23|$#,)! +3 f0 (23|$#,23|$#,63|$#,)! +3 f5 (23|$#,23|$#,63|$#,)! +3 f0 (23|4@5@7&#,23|$#,63|$#,)! +3 f63 (23|4@5@7&#,23|$#,63|$#,)! +3 f0 (20|$#,5|$#,63|$#,)! +3 f19 (20|$#,5|$#,63|$#,)! +3 f20 (20|$#,5|$#,63|$#,)! +3 f0 (23|@5|$#,263|$#,)! +3 f19 (23|@5|$#,263|$#,)! +3 f23 (23|@5|$#,263|$#,)! +3 f0 (23|$#,23|$#,)! +3 f63 (23|$#,23|$#,)! +3 f0 (23|@5|$#,23|$#,)! +3 f19 (23|@5|$#,23|$#,)! +3 f23 (23|@5|$#,23|$#,)! +3 f0 (23|@5|$#,263|$#,)! +3 f19 (23|@5|$#,263|$#,)! +3 f23 (23|@5|$#,263|$#,)! +3 f0 (23|$#,23|$#,)! +3 f63 (23|$#,23|$#,)! +3 f0 (23|@5|0@0@9&#,23|$#,)! +3 f19 (23|@5|0@0@9&#,23|$#,)! +3 f23 (23|@5|0@0@9&#,23|$#,)! +3 f0 (23|@5|0@5@7&#,23|$#,)! +3 f19 (23|@5|0@5@7&#,23|$#,)! +3 f23 (23|@5|0@5@7&#,23|$#,)! +3 C0.1/20|! +3 f0 (20|@5|4@0@7&#,5|$#,63|$#,)! +3 f1 (20|@5|4@0@7&#,5|$#,63|$#,)! +3 f619 (20|@5|4@0@7&#,5|$#,63|$#,)! +3 f0 (5|$#,)! +3 f19 (5|$#,)! +3 f23 (5|$#,)! +3 f0 (23|$#,)! +3 f63 (23|$#,)! +0 s11|& +0 s12|-1 637 -1 +3 Stm{5|@1|$#tm_sec,5|@1|$#tm_min,5|@1|$#tm_hour,5|@1|$#tm_mday,5|@1|$#tm_mon,5|@1|$#tm_year,5|@1|$#tm_wday,5|@1|$#tm_yday,5|@1|$#tm_isdst,}! +3 f0 ()! +3 f628 ()! +3 f0 (629|$#,629|$#,)! +3 f17 (629|$#,629|$#,)! +3 f0 (443|$#,)! +3 f629 (443|$#,)! +1 t629|629& +3 f0 (637|4@5@7&#,)! +3 f629 (637|4@5@7&#,)! +3 f0 (443|$#,)! +3 f19 (443|$#,)! +3 f23 (443|$#,)! +3 f0 (637|$#,)! +3 f19 (637|$#,)! +3 f23 (637|$#,)! +3 f0 (637|$#,)! +3 f19 (637|$#,)! +3 f443 (637|$#,)! +3 f0 (637|$#,)! +3 f19 (637|$#,)! +3 f443 (637|$#,)! +3 f0 (23|4@0@7&#,63|$#,23|$#,443|$#,)! +3 f63 (23|4@0@7&#,63|$#,23|$#,443|$#,)! +0 s13|& +3 C1.5/1|! +3 f0 (!.,)! +3 f5 (!.,)! +3 f655 (!.,)! +3 f0 (!.,)! +3 f5 (!.,)! +3 f655 (!.,)! +;;tistable +0 +0,16 +16 +0,16,17 +17 +0,16,17,18 +18 +0,16,17,18,19 +19 +;;symTable +*0 (Datatype) +0@+@=@0@7@0@0@67#mbstate_t +2@-@-@0@0@0@0@2#lltX_bool +13@-@-@0@0@0@0@59#__SIZE_TYPE__ +13@-@-@0@0@0@0@60#__PTRDIFF_TYPE__ +13@-@-@0@0@0@0@61#__WCHAR_TYPE__ +13@-@-@0@0@0@0@62#ptrdiff_t +13@-@-@0@0@0@0@65#wchar_t +13@-@-@0@0@0@0@66#wint_t +13@-@-@0@0@0@0@176#sig_atomic_t +13@-@-@0@0@0@0@502#wctype_t +13@-@-@0@0@0@0@503#wctrans_t +13@-@-@0@0@0@0@628#clock_t +13@-@-@0@0@0@0@629#time_t +13@-@-@0@0@0@0@654#__PTRDIFF_TYPE__ +14@-@-@0@0@0@0@63#size_t +15@-@-@0@0@0@0@64#ssize_t +20@+@+@0@0@0@0@171#jmp_buf +20@+@+@0@0@0@0@204#va_list +20@+@+@0@0@0@0@209#FILE +20@+@+@0@0@0@0@210#fpos_t +365@-@-@0@0@0@0@367#div_t +372@-@-@0@0@0@0@374#ldiv_t +*1 (Constant) +0@i0@0@6#NULL +2@i1@0@0#TRUE +2$#NDEBUG +2@i0@0@6#FALSE +3$#UCHAR_MAX#UCHAR_MIN +4$#CHAR_MAX#CHAR_MIN#SCHAR_MAX#SCHAR_MIN +5$#BUFSIZ#CHAR_BIT#CLOCKS_PER_SEC#EDOM#EILSEQ#EOF#ERANGE#EXIT_FAILURE#EXIT_SUCCESS#FILENAME_MAX#FLT_RADIX#FOPEN_MAX#INT_MAX#INT_MIN#LC_ALL#LC_COLLATE#LC_CTYPE#LC_MONETARY#LC_NUMERIC#LC_TIME#L_tmpnam#RAND_MAX#SEEK_CUR#SEEK_END#SEEK_SET#SIGABRT#SIGFPE#SIGILL#SIGINT#SIGSEGV#SIGTERM#TMP_MAX#WCHAR_MAX#WCHAR_MIN#_IOFBF#_IOLBF#_IONBF#__INCLUDE_LEVEL__#__LCLINT__#__LINE__ +6$#UINT_MAX +7$#SHRT_MAX#SHRT_MIN +8$#USHRT_MAX +9$#LONG_MAX#LONG_MIN#MB_LEN_MAX +10$#ULONG_MAX +17$#HUGE_VAL +23$#__BASE_FILE__#__DATE__#__FILE__#__REGISTER_PREFIX__#__TIME__#__USER_LABEL_PREFIX__#__VERSION__ +63$#MB_CUR_MAX +66$#WEOF +180$#SIG_DFL +184$#SIG_ERR +188$#SIG_IGN +*3 (Variable) +5|@1|0@0@0@0@1#DBL_DIG#DBL_MANT_DIG#DBL_MAX_10_EXP#DBL_MAX_EXP#DBL_MIN_10_EXP#DBL_MIN_EXP#FLT_DIG#FLT_MANT_DIG#FLT_MAX_10_EXP#FLT_MAX_EXP#FLT_MIN_10_EXP#FLT_MIN_EXP#FLT_ROUNDS#LDBL_DIG#LDBL_MANT_DIG#LDBL_MAX_10_EXP#LDBL_MAX_EXP#LDBL_MIN_10_EXP#LDBL_MIN_EXP#errno +16|@1|0@0@0@0@1#FLT_EPSILON#FLT_MAX#FLT_MIN +17|@1|0@0@0@0@1#DBL_EPSILON#DBL_MAX#DBL_MIN +18|@1|0@0@0@0@1#LDBL_EPSILON#LDBL_MAX#LDBL_MIN +211|@1|0@0@0@0@1#stderr#stdin#stdout +*4 (Function) +362$@0@g112@0@0@1@tp0,g112$@0#qsort +175@6@0@5@0@0@1@@1@s0$@0#longjmp +206$@0@@1@p0$@0#va_start +233$@0@s3@1@s3,tp0,tp1$@0#setbuf +338@6@0@6@0@0@1@@1@s0$@0#exit +323$@0@s1@1@s1$@0#srand +334$@0@@1@tp0$@0#free +305$@1@g112@0@0,g122@0@0,s3@1@s3,tg122$@0#perror +208$@0@@1@p0$@0#va_end +299$@0@@1@tp0$@0#clearerr#rewind +72@6@0@8@0@0@1@@1@s0$@0#assert +336@6@0@6@0@0@1@@1@s0$@0#abort +235$@0@s3@1@s3,tp0,tp1$@0#setvbuf +421$@0@@1@tp0$@0#vswprintf +413@6@0@1@1@0@0@@1@tp0$@0#swprintf +588$@1@@1@s0$@0#memcmp +594$@1@@1@s0$@0#strncmp +257$@0@@1@tp0,p2$@0#vsprintf +251@6@0@1@2@0@1@@1@s0$@0#sscanf +291$@0@s3,g112@0@0@1@s3,tp0,g112$@0#fseek +253$@0@s3,g112@0@0@1@s3,tp0,p2,g112$@0#vfprintf +241@6@0@1@2@0@0@s3@1@s3,tp0$@0#fscanf +419$@0@s3@1@s3,tp0$@0#vfwprintf +392@6@0@1@1@0@0@s3@1@tp0,s3$@0#fwprintf +394@6@0@1@2@0@0@s3@1@tp0,s3$@0#fwscanf +453$@1@@1@s0$@0#wcsncmp#wmemcmp +415@6@0@1@2@0@0@g123@0@0@1@tg123$@0#swscanf +560$@0@@1@tp0$@0#mbtowc +215$@0@s3,g112@0@0@1@s3,g112$@0#rename +590$@1@@1@s0$@0#strcmp#strcoll +558$@1@@1@s0$@0#mblen +255$@1@g124@0@0,s3@1@s3,p1,tg124$@0#vprintf +267$@0@s3@1@s3,tp1$@0#fputs +246@6@0@1@2@0@1@g123@0@0,s3@1@s3,tg123$@0#scanf +562$@0@@1@tp0$@0#wctomb +390$@1@@1@s0$@0#fwide +293$@0@s3,g112@0@0@1@s3,tp0,g112$@0#fsetpos +289$@0@g112@0@0@1@tp1,g112$@0#fgetpos +423$@0@s3,g124@0@0@1@s3,tg124$@0#vwprintf +388$@0@s3@1@s3,tp1$@0#fputws +434$@1@@1@s0$@0#wcscmp#wcscoll +501@6@0@1@2@0@1@g123@0@0,g112@0@0@1@g112,tg123$@0#wscanf +499@6@0@1@1@0@1@g124@0@0,g112@0@0@1@g112,tg124$@0#wprintf +265$@0@s3,g112@0@0@1@s3,tp1,g112$@0#fputc#ungetc +276$@0@s3@1@s3,tp1$@0#putc +364$@1@@1@s0$@0#abs +203@6@0@5@0@0$$@0#raise +213$@0@s3,g112@0@0@1@s3,g112$@0#remove +280$@1@g124@0@0,s3@1@s3,tg124$@0#puts +309$@1@@1@s0$@0#atoi +349$@0@s3@1@s3$@0#system +483$@1@@1@s0$@0#wctob +173$@0@@1@p0$@0#setjmp +223$@0@g112@0@0,s3@1@tp0,g112,s3$@0#fclose#fgetc +301$@0@g112@0@0@1@g112$@0#feof#ferror +269$@0@s3@1@s3,tp0$@0#getc +225$@0@g112@0@0,s3@1@tp0,g112,s3$@0#fflush +344$@0@s1@1@s1$@0#atexit +405$@1@@1@s0$@0#mbsinit +278$@1@g124@0@0,s3@1@s3,tg124$@0#putchar +271$@1@g123@0@0,s3@1@s3,tg123$@0#getchar +321$@0@s1@1@s1$@0#rand +317$@0@g112@0@0@1@tp1,g112$@0#strtol +477$@0@@1@tp1$@0#wcstol +371$@1@@1@s0$@0#labs +311$@1@@1@s0$@0#atol +295$@0@g112@0@0@1@g112$@0#ftell +319$@0@g112@0@0@1@tp1,g112$@0#strtoul +479$@0@@1@tp1$@0#wcstoul +150$@0@g112@0@0@1@g112$@0#ldexp +158$@0@g112@0@0@1@g112$@0#pow +140$@1@@1@s0$@0#atan2#fmod +152$@0@@1@tp1$@0#frexp +168$@0@@1@tp1$@0#modf +315$@0@g112@0@0@1@tp1,g112$@0#strtod +472$@0@@1@tp1$@0#wcstod +634$@1@@1@s0$@0#difftime +136$@0@g112@0@0@1@g112$@0#acos#asin#cosh#exp#log#log10#sqrt +138$@1@@1@s0$@0#atan#ceil#cos#fabs#floor#sin#sinh#tan#tanh +307$@1@@1@s0$@0#atof +356@6@5@1@0@0@1@@1@s0@18@0@0#bsearch +599@6@5@1@0@0@1@@1@s0@3@0@0#memchr +332@6@5@1@0@0@0@@1@tp0@2@0@0#realloc +326@6@5@1@0@0@1@@1@s0@2@0@0#calloc +329@4@5@1@0@0@1@@1@s0@2@0@0#malloc +262@6@5@1@0@0@0@s3,g112@0@0@1@s3,tp0,tp2,g112$@0#fgets +122@6@5@1@0@0@0@s1,g112@0@0@1@s1,g112@19@3@0#setlocale +607@6@5@1@0@0@1@@1@s0@19@2@0#strpbrk +602@6@5@1@0@0@1@@1@s0@19@2@0#strchr#strrchr +618@6@5@1@0@0@0@s1,g112@0@0@1@tp0,s1,g112@19@2@0#strtok +615@6@5@1@0@0@1@@1@s0@19@2@0#strstr +625$@1@@1@s0@19@3@0#strerror +347@6@5@1@0@0@1@@1@s0@19@3@0#getenv +274@6@5@1@0@0@1@g123@0@0,s3,g112@0@0@1@s3,tp0,tg123,g112@3@0@0#gets +221$@0@s1@1@tp0,s1@19@3@0#tmpnam +642$@0@g112@0@0@1@g112@19@3@0#asctime +645$@1@@1@s0@19@3@0#ctime +286$@0@s3,g112@0@0@1@s3,tp3,g112$@0#fwrite +284$@0@s3,g112@0@0@1@s3,tp0,tp3,g112$@0#fread +465$@0@@1@tp1$@0#wcsrtombs +653$@0@@1@tp0$@0#strftime +403$@0@@1@tp0$@0#mbrtowc +407$@0@@1@tp0$@0#mbsrtowcs +445$@0@@1@tp0$@0#wcsftime +401$@1@@1@s0$@0#mbrlen +566$@0@@1@tp0$@0#wcstombs +596$@0@@1@tp0$@0#strxfrm +425$@0@@1@tp0$@0#wcrtomb +481$@0@@1@tp0$@0#wcsxfrm +564$@0@@1@tp0$@0#mbstowcs +604$@1@@1@s0$@0#strcspn#strspn +441$@1@@1@s0$@0#wcscspn#wcsspn +627$@1@@1@s0$@0#strlen +447$@1@@1@s0$@0#wcslen +386$@0@s3@1@s3,tp1$@0#fputwc +409$@0@s3@1@s3,tp1$@0#putwc +417$@0@s3@1@s3,tp1$@0#ungetwc +378$@1@@1@s0$@0#btowc +411$@0@s3,g124@0@0@1@s3,tg124$@0#putwchar +380$@0@s3@1@s3,tp0$@0#fgetwc +396$@0@s3@1@s3,tp0$@0#getwc +398$@0@s3,g123@0@0@1@s3,tg123$@0#getwchar +126$@1@@1@s0@3@0@0#localeconv +231@6@5@1@0@0@0@s3,g112@0@0@1@tp2,s3,g112@3@0@0#freopen +228@6@5@1@0@0@0@s3@1@s3@18@0@0#fopen +218@6@5@1@0@0@0@s3@1@s3@3@0@0#tmpfile +369$@1@@1@s0$@0#div +376$@1@@1@s0$@0#ldiv +486@6@5@1@0@0@1@@1@s0@3@0@0#wmemchr +384@6@5@1@0@0@0@s3@1@s3,tp0,tp2$@0#fgetws +497$@0@@1@tp0$@0#wmemset +491$@0@@1@tp0$@0#wmemcpy#wmemmove +475@6@5@1@0@0@0@@1@tp2@3@0@0#wcstok +470@6@5@1@0@0@1@@1@s0@3@0@0#wcsstr +462@6@5@1@0@0@1@@1@s0$@0#wcsrchr +432@6@5@1@0@0@1@@1@s0@19@2@0#wcschr +459@6@5@1@0@0@1@@1@s0$@0#wcspbrk +651@6@5@1@0@0@0@g112@0@0@1@g112@19@3@0#localtime +648@6@5@1@0@0@1@@1@s0@19@3@0#gmtime +556$@1@@1@s0$@0#wctype +554$@1@@1@s0$@0#wctrans +632$@0@s1@1@s1$@0#clock +636$@1@@1@s0$@0#mktime +639$@0@@1@tp0$@0#time +201@6@5@1@0@0@0@s1,g112@0@0@1@s1,g112$@0#signal +622$@0@@1@tp0$@0#memset +573$@0@@1@tp0$@0#memmove +570$@0@@1@tp0$@0#memcpy +586$@0@@1@tp0$@0#strncat +580$@0@@1@tp0$@0#strncpy +583$@0@@1@tp0$@0#strcat#strcpy +451$@0@@1@tp0$@0#wcsncat#wcsncpy +429$@0@@1@tp0$@0#wcscat#wcscpy +516$@1@@1@s0$@0#iswctype +507$@1@@1@s0$@0#iswalnum#iswalpha#iswcntrl#iswdigit#iswgraph#iswlower#iswprint#iswpunct#iswspace#iswupper#iswxdigit +76$@1@@1@s0$@0#isalnum#isalpha#iscntrl#isdigit#isgraph#islower#isprint#ispunct#isspace#isupper#isxdigit +114$@1@@1@s0$@0#tolower#toupper +249@6@0@1@1@0@0@@1@tp0$@0#sprintf +239@6@0@1@1@0@0@s3@1@s3,tp0$@0#fprintf +244@6@0@1@1@0@1@g124@0@0,s3@1@s3,tg124$@0#printf +658$$$@0#test1#test2 +546$@1@@1@s0$@0#towctrans +549$@1@@1@s0$@0#towlower#towupper +*7 (Struct tag) +365@366#@!2 +372@373#@!3 +630@442#@tm +118@119#@lconv +;; Modules access +ansi#8@ +;;End diff --git a/test/tests2.5/quals.c b/test/tests2.5/quals.c new file mode 100644 index 0000000..5c0ac50 --- /dev/null +++ b/test/tests2.5/quals.c @@ -0,0 +1,27 @@ +#include + +static void init_arr(/*@out@*/ float[],/*@out@*/ long int*); + +int main(void) +{ + int j; + long i; + float arr[2]; + + init_arr(arr,&j); + for( i=0; i < j; i++ ) { + printf("%ld %d: %.6e\n",i,j,arr[i]); + } + return(0); +} + +void init_arr(float arr[], + long int *j) +{ + long i; + + *j = 2L; + for( i=0; i < 2L; i++ ) { + arr[i] = (float)(i+1); + } +} diff --git a/test/tests2.5/socket.h b/test/tests2.5/socket.h new file mode 100644 index 0000000..5d0b4ff --- /dev/null +++ b/test/tests2.5/socket.h @@ -0,0 +1,309 @@ +/* System-specific socket constants and types. Linux version. + Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef __BITS_SOCKET_H +#define __BITS_SOCKET_H + +#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H +# error "Never include directly; use instead." +#endif + +#define __need_size_t +#define __need_NULL +#include + +#include +#include + +/* Type for length arguments in socket calls. */ +typedef unsigned int socklen_t; + +/* Types of sockets. */ +enum __socket_type +{ + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based + byte streams. */ +#define SOCK_STREAM SOCK_STREAM + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams + of fixed maximum length. */ +#define SOCK_DGRAM SOCK_DGRAM + SOCK_RAW = 3, /* Raw protocol interface. */ +#define SOCK_RAW SOCK_RAW + SOCK_RDM = 4, /* Reliably-delivered messages. */ +#define SOCK_RDM SOCK_RDM + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, + datagrams of fixed maximum length. */ +#define SOCK_SEQPACKET SOCK_SEQPACKET + SOCK_PACKET = 10 /* Linux specific way of getting packets + at the dev level. For writing rarp and + other similar things on the user level. */ +#define SOCK_PACKET SOCK_PACKET +}; + +/* Protocol families. */ +#define PF_UNSPEC 0 /* Unspecified. */ +#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ +#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ +#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */ +#define PF_INET 2 /* IP protocol family. */ +#define PF_AX25 3 /* Amateur Radio AX.25. */ +#define PF_IPX 4 /* Novell Internet Protocol. */ +#define PF_APPLETALK 5 /* Appletalk DDP. */ +#define PF_NETROM 6 /* Amateur radio NetROM. */ +#define PF_BRIDGE 7 /* Multiprotocol bridge. */ +#define PF_ATMPVC 8 /* ATM PVCs. */ +#define PF_X25 9 /* Reserved for X.25 project. */ +#define PF_INET6 10 /* IP version 6. */ +#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */ +#define PF_DECnet 12 /* Reserved for DECnet project. */ +#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */ +#define PF_SECURITY 14 /* Security callback pseudo AF. */ +#define PF_KEY 15 /* PF_KEY key management API. */ +#define PF_NETLINK 16 +#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */ +#define PF_PACKET 17 /* Packet family. */ +#define PF_ASH 18 /* Ash. */ +#define PF_ECONET 19 /* Acorn Econet. */ +#define PF_ATMSVC 20 /* ATM SVCs. */ +#define PF_SNA 22 /* Linux SNA Project */ +#define PF_IRDA 23 /* IRDA sockets. */ +#define PF_MAX 32 /* For now.. */ + +/* Address families. */ +#define AF_UNSPEC PF_UNSPEC +#define AF_LOCAL PF_LOCAL +#define AF_UNIX PF_UNIX +#define AF_FILE PF_FILE +#define AF_INET PF_INET +#define AF_AX25 PF_AX25 +#define AF_IPX PF_IPX +#define AF_APPLETALK PF_APPLETALK +#define AF_NETROM PF_NETROM +#define AF_BRIDGE PF_BRIDGE +#define AF_ATMPVC PF_ATMPVC +#define AF_X25 PF_X25 +#define AF_INET6 PF_INET6 +#define AF_ROSE PF_ROSE +#define AF_DECnet PF_DECnet +#define AF_NETBEUI PF_NETBEUI +#define AF_SECURITY PF_SECURITY +#define AF_KEY PF_KEY +#define AF_NETLINK PF_NETLINK +#define AF_ROUTE PF_ROUTE +#define AF_PACKET PF_PACKET +#define AF_ASH PF_ASH +#define AF_ECONET PF_ECONET +#define AF_ATMSVC PF_ATMSVC +#define AF_SNA PF_SNA +#define AF_IRDA PF_IRDA +#define AF_MAX PF_MAX + +/* Socket level values. Others are defined in the appropriate headers. + + XXX These definitions also should go into the appropriate headers as + far as they are available. */ +#define SOL_RAW 255 +#define SOL_DECNET 261 +#define SOL_X25 262 +#define SOL_PACKET 263 +#define SOL_ATM 264 /* ATM layer (cell level). */ +#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */ +#define SOL_IRDA 266 + +/* Maximum queue length specifiable by listen. */ +#define SOMAXCONN 128 + +/* Get the definition of the macro to define the common sockaddr members. */ + +#include + +/* Structure describing a generic socket address. */ +struct sockaddr + { + __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ + char sa_data[14]; /* Address data. */ + }; + + +/* Structure large enough to hold any socket address (with the historical + exception of AF_UNIX). We reserve 128 bytes. */ +#if ULONG_MAX > 0xffffffff +# define __ss_aligntype __uint64_t +#else +# define __ss_aligntype __uint32_t +#endif +#define _SS_SIZE 128 +#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype))) + +struct sockaddr_storage + { + __SOCKADDR_COMMON (__ss_); /* Address family, etc. */ + __ss_aligntype __ss_align; /* Force desired alignment. */ + char __ss_padding[_SS_PADSIZE]; + }; + + +/* Bits in the FLAGS argument to `send', `recv', et al. */ +enum + { + MSG_OOB = 0x01, /* Process out-of-band data. */ +#define MSG_OOB MSG_OOB + MSG_PEEK = 0x02, /* Peek at incoming messages. */ +#define MSG_PEEK MSG_PEEK + MSG_DONTROUTE = 0x04, /* Don't use local routing. */ +#define MSG_DONTROUTE MSG_DONTROUTE +#ifdef __USE_GNU + /* DECnet uses a different name. */ + MSG_TRYHARD = MSG_DONTROUTE, +# define MSG_TRYHARD MSG_DONTROUTE +#endif + MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ +#define MSG_CTRUNC MSG_CTRUNC + MSG_PROXY = 0x10, /* Supply or ask second address. */ +#define MSG_PROXY MSG_PROXY + MSG_TRUNC = 0x20, +#define MSG_TRUNC MSG_TRUNC + MSG_DONTWAIT = 0x40, /* Nonblocking IO. */ +#define MSG_DONTWAIT MSG_DONTWAIT + MSG_EOR = 0x80, /* End of record. */ +#define MSG_EOR MSG_EOR + MSG_WAITALL = 0x100, /* Wait for a full request. */ +#define MSG_WAITALL MSG_WAITALL + MSG_FIN = 0x200, +#define MSG_FIN MSG_FIN + MSG_SYN = 0x400, +#define MSG_SYN MSG_SYN + MSG_URG = 0x800, +#define MSG_URG MSG_URG + MSG_RST = 0x1000, +#define MSG_RST MSG_RST + MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */ +#define MSG_ERRQUEUE MSG_ERRQUEUE + MSG_NOSIGNAL = 0x4000 /* Do not generate SIGPIPE. */ +#define MSG_NOSIGNAL MSG_NOSIGNAL + }; + + +/* Structure describing messages sent by + `sendmsg' and received by `recvmsg'. */ +struct msghdr + { + __ptr_t msg_name; /* Address to send to/receive from. */ + socklen_t msg_namelen; /* Length of address data. */ + + struct iovec *msg_iov; /* Vector of data to send/receive into. */ + size_t msg_iovlen; /* Number of elements in the vector. */ + + __ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */ + size_t msg_controllen; /* Ancillary data buffer length. */ + + int msg_flags; /* Flags on received message. */ + }; + +/* Structure used for storage of ancillary data object information. */ +struct cmsghdr + { + size_t cmsg_len; /* Length of data in cmsg_data plus length + of cmsghdr structure. */ + int cmsg_level; /* Originating protocol. */ + int cmsg_type; /* Protocol specific type. */ +#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 + unsigned char __cmsg_data[0]; /* Ancillary data. */ + /* XXX Perhaps this should be removed. */ +#endif + }; + +/* Ancillary data object manipulation macros. */ +#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 +# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) +#else +# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1)) +#endif +#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) +#define CMSG_FIRSTHDR(mhdr) \ + ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ + ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) +#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ + & ~(sizeof (size_t) - 1)) +#define CMSG_SPACE(len) (CMSG_ALIGN (len) \ + + CMSG_ALIGN (sizeof (struct cmsghdr))) +#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) + +extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr, + struct cmsghdr *__cmsg)); +#ifdef __USE_EXTERN_INLINES +# ifndef _EXTERN_INLINE +# define _EXTERN_INLINE extern __inline +# endif +_EXTERN_INLINE struct cmsghdr * +__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW +{ + if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) + /* The kernel header does this so there may be a reason. */ + return 0; + + __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg + + CMSG_ALIGN (__cmsg->cmsg_len)); + if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control + + __mhdr->msg_controllen) + || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) + >= ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) + /* No more entries. */ + return 0; + return __cmsg; +} +#endif /* Use `extern inline'. */ + +/* Socket level message types. This must match the definitions in + . */ +enum + { + SCM_RIGHTS = 0x01, /* Transfer file descriptors. */ +#define SCM_RIGHTS SCM_RIGHTS +#ifdef __USE_BSD + SCM_CREDENTIALS = 0x02, /* Credentials passing. */ +# define SCM_CREDENTIALS SCM_CREDENTIALS +#endif + __SCM_CONNECT = 0x03 /* Data array is `struct scm_connect'. */ + }; + +/* User visible structure for SCM_CREDENTIALS message */ + +struct ucred +{ + pid_t pid; /* PID of sending process. */ + uid_t uid; /* UID of sending process. */ + gid_t gid; /* GID of sending process. */ +}; + +/* Get socket manipulation related informations from kernel headers. */ +#include + + +/* Structure used to manipulate the SO_LINGER option. */ +struct linger + { + int l_onoff; /* Nonzero to linger on close. */ + int l_linger; /* Time to linger. */ + }; + +#endif /* bits/socket.h */ + + + diff --git a/test/tests2.5/testalt.c b/test/tests2.5/testalt.c new file mode 100644 index 0000000..5b49c4a --- /dev/null +++ b/test/tests2.5/testalt.c @@ -0,0 +1,2 @@ +int /*@alt void@*/ test1 (...); +int /*@alt void@*/ test2 (...); diff --git a/test/tests2.5/uconstants b/test/tests2.5/uconstants new file mode 100644 index 0000000..e69de29 diff --git a/test/tests2.5/uconstants.c b/test/tests2.5/uconstants.c new file mode 100644 index 0000000..ba7f77a --- /dev/null +++ b/test/tests2.5/uconstants.c @@ -0,0 +1,5 @@ +void f (void) { + unsigned int x0 = 0x9423U; + unsigned long int x1 = 0x9423UL; + +} diff --git a/test/tests2.5/ull.c b/test/tests2.5/ull.c new file mode 100644 index 0000000..c81f1e3 --- /dev/null +++ b/test/tests2.5/ull.c @@ -0,0 +1,7 @@ +typedef unsigned long long pan_unit64_t; + +void f () +{ + /*@unused@*/ unsigned long long put = 0xFFFFFULL; + /*@unused@*/ pan_unit64_t pt = 0xFFFFFFFFFFFFFULL; +} diff --git a/test/tests2.5/ull.c~ b/test/tests2.5/ull.c~ new file mode 100644 index 0000000..7f4295f --- /dev/null +++ b/test/tests2.5/ull.c~ @@ -0,0 +1,8 @@ +typedef unsigned long long pan_unit64_t; + +void f () +{ + unsigned long long put = 0xFFFFFULL; + pan_unit64_t pt = 0xFFFFFFFFFFFFFULL; + pt++; +}