+/*
+ * Managers for chunks of symbols allocated from calloc()
+ * We maintain a linked list of such chunks.
+ *
+ */
+struct allocbox *allochead; /*head of chunk list*/
+struct allocbox *alloctail; /*tail*/
+struct allocbox *newbox; /*for creating a new chunk*/
+struct symtab *nextsym; /*next symbol free*/
+int symsleft; /*slots left in current chunk*/
+
+struct symtab **symptrs;
+struct symtab **symdelim[NLOC + NLOC +1];
+struct symtab **symptrub;
+/*
+ * Managers for the dynamically extendable hash table
+ */
+struct hashdallop *htab;
+
+struct instab *itab[NINST]; /*maps opcodes to instructions*/
+/*
+ * Counts what went into the symbol table, so that the
+ * size of the symbol table can be computed.
+ */
+int nsyms; /* total number in the symbol table */
+int njxxx; /* number of jxxx entrys */
+int nforgotten; /* number of symbols erroneously entered */
+int nlabels; /* number of label entries */
+int hshused; /* number of hash slots used */
+
+/*
+ * Managers of the symbol literal storage.
+ * If we have flexible names, then we allocate BUFSIZ long
+ * string, and pack strings into that. Otherwise, we allocate
+ * symbol storage in fixed hunks NCPS long when we allocate space
+ * for other symbol attributes.
+ */
+#ifdef FLEXNAMES
+struct strpool *strplhead = 0;
+#endif FLEXNAMES