/usr.bin/xlint/lint1/externs1.h

https://bitbucket.org/freebsd/freebsd-head/ · C++ Header · 285 lines · 203 code · 21 blank · 61 comment · 0 complexity · 007323e5edc6a579d5924bdb075dbe34 MD5 · raw file

  1. /* $NetBSD: externs1.h,v 1.13 2002/01/18 21:01:39 thorpej Exp $ */
  2. /*
  3. * Copyright (c) 1994, 1995 Jochen Pohl
  4. * All Rights Reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. * 1. Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * 2. Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. * 3. All advertising materials mentioning features or use of this software
  15. * must display the following acknowledgement:
  16. * This product includes software developed by Jochen Pohl for
  17. * The NetBSD Project.
  18. * 4. The name of the author may not be used to endorse or promote products
  19. * derived from this software without specific prior written permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  22. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  23. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  24. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  25. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  26. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  27. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  28. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  29. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  30. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. */
  32. /*
  33. * main.c
  34. */
  35. extern int aflag;
  36. extern int bflag;
  37. extern int cflag;
  38. extern int dflag;
  39. extern int eflag;
  40. extern int Fflag;
  41. extern int gflag;
  42. extern int hflag;
  43. extern int rflag;
  44. extern int sflag;
  45. extern int tflag;
  46. extern int uflag;
  47. extern int vflag;
  48. extern int yflag;
  49. extern int wflag;
  50. extern int zflag;
  51. extern void norecover(void);
  52. /*
  53. * cgram.y
  54. */
  55. extern int blklev;
  56. extern int mblklev;
  57. extern int yydebug;
  58. extern int yyerror(char *);
  59. extern int yyparse(void);
  60. /*
  61. * scan.l
  62. */
  63. extern pos_t curr_pos;
  64. extern pos_t csrc_pos;
  65. extern symt_t symtyp;
  66. extern FILE *yyin;
  67. extern uint64_t qbmasks[], qlmasks[], qumasks[];
  68. extern void initscan(void);
  69. extern int sign(int64_t, tspec_t, int);
  70. extern int msb(int64_t, tspec_t, int);
  71. extern int64_t xsign(int64_t, tspec_t, int);
  72. extern void clrwflgs(void);
  73. extern sym_t *getsym(sbuf_t *);
  74. extern void cleanup(void);
  75. extern sym_t *pushdown(sym_t *);
  76. extern void rmsym(sym_t *);
  77. extern void rmsyms(sym_t *);
  78. extern void inssym(int, sym_t *);
  79. extern void freeyyv(void *, int);
  80. extern int yylex(void);
  81. /*
  82. * mem1.c
  83. */
  84. extern const char *fnalloc(const char *);
  85. extern const char *fnnalloc(const char *, size_t);
  86. extern int getfnid(const char *);
  87. extern void initmem(void);
  88. extern void *getblk(size_t);
  89. extern void *getlblk(int, size_t);
  90. extern void freeblk(void);
  91. extern void freelblk(int);
  92. extern void *tgetblk(size_t);
  93. extern tnode_t *getnode(void);
  94. extern void tfreeblk(void);
  95. extern struct mbl *tsave(void);
  96. extern void trestor(struct mbl *);
  97. /*
  98. * err.c
  99. */
  100. extern int nerr;
  101. extern int sytxerr;
  102. extern const char *msgs[];
  103. extern void msglist(void);
  104. extern void error(int, ...);
  105. extern void warning(int, ...);
  106. extern void message(int, ...);
  107. extern int gnuism(int, ...);
  108. extern void lerror(const char *, ...)
  109. __attribute__((__noreturn__,__format__(__printf__, 1, 2)));
  110. /*
  111. * decl.c
  112. */
  113. extern dinfo_t *dcs;
  114. extern const char *unnamed;
  115. extern int enumval;
  116. extern void initdecl(void);
  117. extern type_t *gettyp(tspec_t);
  118. extern type_t *duptyp(const type_t *);
  119. extern type_t *tduptyp(const type_t *);
  120. extern int incompl(type_t *);
  121. extern void setcompl(type_t *, int);
  122. extern void addscl(scl_t);
  123. extern void addtype(type_t *);
  124. extern void addqual(tqual_t);
  125. extern void pushdecl(scl_t);
  126. extern void popdecl(void);
  127. extern void setasm(void);
  128. extern void clrtyp(void);
  129. extern void deftyp(void);
  130. extern int length(type_t *, const char *);
  131. extern int getbound(type_t *);
  132. extern sym_t *lnklst(sym_t *, sym_t *);
  133. extern void chktyp(sym_t *);
  134. extern sym_t *decl1str(sym_t *);
  135. extern sym_t *bitfield(sym_t *, int);
  136. extern pqinf_t *mergepq(pqinf_t *, pqinf_t *);
  137. extern sym_t *addptr(sym_t *, pqinf_t *);
  138. extern sym_t *addarray(sym_t *, int, int);
  139. extern sym_t *addfunc(sym_t *, sym_t *);
  140. extern void chkfdef(sym_t *, int);
  141. extern sym_t *dname(sym_t *);
  142. extern sym_t *iname(sym_t *);
  143. extern type_t *mktag(sym_t *, tspec_t, int, int);
  144. extern const char *scltoa(scl_t);
  145. extern type_t *compltag(type_t *, sym_t *);
  146. extern sym_t *ename(sym_t *, int, int);
  147. extern void decl1ext(sym_t *, int);
  148. extern void cpuinfo(sym_t *, sym_t *);
  149. extern int isredec(sym_t *, int *);
  150. extern int eqtype(type_t *, type_t *, int, int, int *);
  151. extern void compltyp(sym_t *, sym_t *);
  152. extern sym_t *decl1arg(sym_t *, int);
  153. extern void cluparg(void);
  154. extern void decl1loc(sym_t *, int);
  155. extern sym_t *aname(void);
  156. extern void globclup(void);
  157. extern sym_t *decl1abs(sym_t *);
  158. extern void chksz(sym_t *);
  159. extern void setsflg(sym_t *);
  160. extern void setuflg(sym_t *, int, int);
  161. extern void chkusage(dinfo_t *);
  162. extern void chkusg1(int, sym_t *);
  163. extern void chkglsyms(void);
  164. extern void prevdecl(int, sym_t *);
  165. /*
  166. * tree.c
  167. */
  168. extern void initmtab(void);
  169. extern type_t *incref(type_t *, tspec_t);
  170. extern type_t *tincref(type_t *, tspec_t);
  171. extern tnode_t *getcnode(type_t *, val_t *);
  172. extern tnode_t *getnnode(sym_t *, int);
  173. extern tnode_t *getsnode(strg_t *);
  174. extern sym_t *strmemb(tnode_t *, op_t, sym_t *);
  175. extern tnode_t *build(op_t, tnode_t *, tnode_t *);
  176. extern tnode_t *cconv(tnode_t *);
  177. extern int typeok(op_t, int, tnode_t *, tnode_t *);
  178. extern tnode_t *promote(op_t, int, tnode_t *);
  179. extern tnode_t *convert(op_t, int, type_t *, tnode_t *);
  180. extern void cvtcon(op_t, int, type_t *, val_t *, val_t *);
  181. extern const char *tyname(type_t *);
  182. extern tnode_t *bldszof(type_t *);
  183. extern tnode_t *cast(tnode_t *, type_t *);
  184. extern tnode_t *funcarg(tnode_t *, tnode_t *);
  185. extern tnode_t *funccall(tnode_t *, tnode_t *);
  186. extern val_t *constant(tnode_t *);
  187. extern void expr(tnode_t *, int, int);
  188. extern void chkmisc(tnode_t *, int, int, int, int, int, int);
  189. extern int conaddr(tnode_t *, sym_t **, ptrdiff_t *);
  190. extern strg_t *catstrg(strg_t *, strg_t *);
  191. /*
  192. * func.c
  193. */
  194. extern sym_t *funcsym;
  195. extern int reached;
  196. extern int rchflg;
  197. extern int ftflg;
  198. extern int nargusg;
  199. extern pos_t aupos;
  200. extern int nvararg;
  201. extern pos_t vapos;
  202. extern int prflstrg;
  203. extern pos_t prflpos;
  204. extern int scflstrg;
  205. extern pos_t scflpos;
  206. extern int ccflg;
  207. extern int llibflg;
  208. extern int nowarn;
  209. extern int bitfieldtype_ok;
  210. extern int plibflg;
  211. extern int quadflg;
  212. extern void pushctrl(int);
  213. extern void popctrl(int);
  214. extern void chkreach(void);
  215. extern void funcdef(sym_t *);
  216. extern void funcend(void);
  217. extern void label(int, sym_t *, tnode_t *);
  218. extern void if1(tnode_t *);
  219. extern void if2(void);
  220. extern void if3(int);
  221. extern void switch1(tnode_t *);
  222. extern void switch2(void);
  223. extern void while1(tnode_t *);
  224. extern void while2(void);
  225. extern void do1(void);
  226. extern void do2(tnode_t *);
  227. extern void for1(tnode_t *, tnode_t *, tnode_t *);
  228. extern void for2(void);
  229. extern void dogoto(sym_t *);
  230. extern void docont(void);
  231. extern void dobreak(void);
  232. extern void doreturn(tnode_t *);
  233. extern void glclup(int);
  234. extern void argsused(int);
  235. extern void constcond(int);
  236. extern void fallthru(int);
  237. extern void notreach(int);
  238. extern void lintlib(int);
  239. extern void linted(int);
  240. extern void varargs(int);
  241. extern void printflike(int);
  242. extern void scanflike(int);
  243. extern void protolib(int);
  244. extern void longlong(int);
  245. extern void bitfieldtype(int);
  246. /*
  247. * init.c
  248. */
  249. extern int initerr;
  250. extern sym_t *initsym;
  251. extern int startinit;
  252. extern void prepinit(void);
  253. extern void initrbr(void);
  254. extern void initlbr(void);
  255. extern void mkinit(tnode_t *);
  256. /*
  257. * emit.c
  258. */
  259. extern void outtype(type_t *);
  260. extern const char *ttos(type_t *);
  261. extern void outsym(sym_t *, scl_t, def_t);
  262. extern void outfdef(sym_t *, pos_t *, int, int, sym_t *);
  263. extern void outcall(tnode_t *, int, int);
  264. extern void outusg(sym_t *);