+/*
+ * Create a symbol for a text symbol with no source information.
+ * We treat it as an assembly language function.
+ */
+
+private Symbol deffunc (n)
+Name n;
+{
+ Symbol f;
+
+ f = insert(n);
+ f->language = findlanguage(".s");
+ f->class = FUNC;
+ f->type = t_int;
+ f->block = curblock;
+ f->level = program->level;
+ f->symvalue.funcv.src = false;
+ f->symvalue.funcv.inline = false;
+ return f;
+}
+
+/*
+ * Create a symbol for a data or bss symbol with no source information.
+ * We treat it as an assembly language variable.
+ */
+
+private Symbol defvar (n)
+Name n;
+{
+ Symbol v;
+
+ v = insert(n);
+ v->language = findlanguage(".s");
+ v->class = VAR;
+ v->type = t_int;
+ v->level = program->level;
+ v->block = curblock;
+ return v;
+}
+
+/*
+ * Update a symbol entry with a text address.
+ */
+
+private updateTextSym (s, name, addr)
+Symbol s;
+char *name;
+Address addr;
+{
+ if (s->class == VAR) {
+ s->symvalue.offset = addr;
+ } else {
+ s->symvalue.funcv.beginaddr = addr;
+ if (name[0] == '_') {
+ newfunc(s, codeloc(s));
+ findbeginning(s);
+ }
+ }
+}
+