* miscellaneous
*/
-#include "comm0.h"
-#include "comm1.h"
-#include "y.tab.h"
-#include <stdarg.h>
-#include <object.h>
-
-valu_t
-load(const item_t *ip)
+#include "comm0.h"
+#include "comm1.h"
+#include "y.tab.h"
+#include <stdarg.h>
+#include <object.h>
+
+valu_t load(const item_t* ip)
{
#ifdef ASLD
int typ;
typ = ip->i_type & S_TYP;
- if ((typ -= S_MIN) < 0) /* S_UND or S_ABS */
- return(ip->i_valu);
- return(ip->i_valu + sect[typ].s_base);
+ if ((typ -= S_MIN) < 0) /* S_UND or S_ABS */
+ return (ip->i_valu);
+ return (ip->i_valu + sect[typ].s_base);
#else
- if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) {
- if (pass == PASS_3) {
+ if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM))
+ {
+ if (pass == PASS_3)
+ {
if (relonami != 0)
serror("relocation error (relonami=%d, type=%08x)", relonami, ip->i_type);
- relonami = ip->i_valu+1;
+ relonami = ip->i_valu + 1;
}
- return(0);
+ return (0);
}
- return(ip->i_valu);
+ return (ip->i_valu);
#endif
}
-int
-store(item_t *ip, valu_t val)
+int store(item_t* ip, valu_t val)
{
#ifdef ASLD
int typ;
val -= sect[typ].s_base;
#else
if ((ip->i_type & S_TYP) == S_UND)
- return(0);
+ return (0);
#endif
assert(pass != PASS_3 || (ip->i_type & S_VAR) || ip->i_valu == val);
ip->i_valu = val;
- return(1);
+ return (1);
}
-char *
-remember(char *s)
+char* remember(char* s)
{
- char *p;
+ char* p;
int n;
static int nleft = 0;
- static char *next;
+ static char* next;
p = s;
n = 0;
do
n++;
while (*p++);
- if ((nleft -= n) < 0) {
+ if ((nleft -= n) < 0)
+ {
next = malloc(MEMINCR);
if (next == 0)
fatal("out of memory");
;
s = next;
next = p;
- return(s);
+ return (s);
}
-int
-combine(int typ1, int typ2, int op)
+int combine(int typ1, int typ2, int op)
{
- switch (op) {
- case '+':
- if (typ1 == S_ABS)
- return(typ2);
- if (typ2 == S_ABS)
- return(typ1);
- break;
- case '-':
- if (typ2 == S_ABS)
- return(typ1);
- if ((typ1 & ~S_DOT) == (typ2 & ~S_DOT) && typ1 != S_UND)
- return(S_ABS|S_VAR);
- break;
- case '>':
- if (typ1 == S_ABS && typ2 == S_ABS)
- return(S_ABS);
- if (
- ((typ1 & ~S_DOT) == (typ2 & ~S_DOT) && typ1 != S_UND)
- || (typ1 == S_ABS)
- || (typ2 == S_ABS)
- )
- return(S_ABS|S_VAR);
- break;
- default:
- if (typ1 == S_ABS && typ2 == S_ABS)
- return(S_ABS);
- break;
+ switch (op)
+ {
+ case '+':
+ if (typ1 == S_ABS)
+ return (typ2);
+ if (typ2 == S_ABS)
+ return (typ1);
+ break;
+ case '-':
+ if (typ2 == S_ABS)
+ return (typ1);
+ if ((typ1 & ~S_DOT) == (typ2 & ~S_DOT) && typ1 != S_UND)
+ return (S_ABS | S_VAR);
+ break;
+ case '>':
+ if (typ1 == S_ABS && typ2 == S_ABS)
+ return (S_ABS);
+ if (((typ1 & ~S_DOT) == (typ2 & ~S_DOT) && typ1 != S_UND) || (typ1 == S_ABS)
+ || (typ2 == S_ABS))
+ return (S_ABS | S_VAR);
+ break;
+ default:
+ if (typ1 == S_ABS && typ2 == S_ABS)
+ return (S_ABS);
+ break;
}
if (pass != PASS_1)
serror("illegal operator");
- return(S_UND);
+ return (S_UND);
}
#ifdef LISTING
-int
-printx(int ndig, valu_t val)
+int printx(int ndig, valu_t val)
{
static char buf[8];
- char *p;
+ char* p;
int c, n;
- p = buf; n = ndig;
- do {
- *p++ = (int) val & 017;
+ p = buf;
+ n = ndig;
+ do
+ {
+ *p++ = (int)val & 017;
val >>= 4;
} while (--n);
- do {
+ do
+ {
c = "0123456789ABCDEF"[*--p];
putchar(c);
} while (p > buf);
- return(ndig);
+ return (ndig);
}
-void
-listline(int textline)
+void listline(int textline)
{
int c;
- if ((listflag & 4) && (c = getc(listfile)) != '\n' && textline) {
+ if ((listflag & 4) && (c = getc(listfile)) != '\n' && textline)
+ {
if (listcolm >= 24)
printf(" \\\n\t\t\t");
else
- do {
+ do
+ {
putchar('\t');
listcolm += 8;
} while (listcolm < 24);
- do {
+ do
+ {
assert(c != EOF);
putchar(c);
} while ((c = getc(listfile)) != '\n');
}
- if (listflag & 7) {
+ if (listflag & 7)
+ {
putchar('\n');
fflush(stdout);
}
/* ---------- code optimization ---------- */
#ifdef THREE_PASS
-#define PBITTABSZ 128
-static char *pbittab[PBITTABSZ];
+#define PBITTABSZ 128
+static char* pbittab[PBITTABSZ];
-int
-small(int fitsmall, int gain)
+int small(int fitsmall, int gain)
{
int bit;
- char *p;
+ char* p;
if (DOTSCT == NULL)
nosect();
if (bflag)
- return(0);
- if (nbits == BITCHUNK) {
+ return (0);
+ if (nbits == BITCHUNK)
+ {
bitindex++;
nbits = 0;
- if (bitindex == PBITTABSZ) {
+ if (bitindex == PBITTABSZ)
+ {
static int w_given;
- if (pass == PASS_1 && ! w_given) {
+ if (pass == PASS_1 && !w_given)
+ {
w_given = 1;
warning("bit table overflow");
}
- return(0);
+ return (0);
}
- if (pbittab[bitindex] == 0 && pass == PASS_1) {
- if ((pbittab[bitindex] = calloc(MEMINCR, 1)) == 0) {
+ if (pbittab[bitindex] == 0 && pass == PASS_1)
+ {
+ if ((pbittab[bitindex] = calloc(MEMINCR, 1)) == 0)
+ {
static int w2_given;
- if (!w2_given) {
+ if (!w2_given)
+ {
w2_given = 1;
warning("out of space for bit table");
}
if (pbittab[bitindex] == 0)
return (0);
}
- bit = 1 << (nbits&7);
- p = pbittab[bitindex]+(nbits>>3);
+ bit = 1 << (nbits & 7);
+ p = pbittab[bitindex] + (nbits >> 3);
nbits++;
- switch (pass) {
- case PASS_1:
- return(0);
- case PASS_2:
- if (fitsmall) {
- DOTGAIN += gain;
- *p |= bit;
- }
- return(fitsmall);
- case PASS_3:
- assert(fitsmall || (*p & bit) == 0);
- return(*p & bit);
+ switch (pass)
+ {
+ case PASS_1:
+ return (0);
+ case PASS_2:
+ if (fitsmall)
+ {
+ DOTGAIN += gain;
+ *p |= bit;
+ }
+ return (fitsmall);
+ case PASS_3:
+ assert(fitsmall || (*p & bit) == 0);
+ return (*p & bit);
}
/*NOTREACHED*/
}
/* ---------- output ---------- */
-void
-emit1(int arg)
+void emit1(int arg)
{
static int olddottyp = -1;
#ifdef LISTING
- if (listeoln) {
- if (listflag & 1) {
+ if (listeoln)
+ {
+ if (listflag & 1)
+ {
listcolm += printx(VALWIDTH, (valu_t)DOTVAL);
listcolm++;
putchar(' ');
listeoln = 0;
}
if (listflag & 2)
- listcolm += printx(2, (valu_t) arg);
+ listcolm += printx(2, (valu_t)arg);
#endif
- switch (pass) {
- case PASS_1:
- if (DOTSCT == NULL)
- nosect();
- /* no break */
- case PASS_2:
- DOTSCT->s_zero = 0;
- break;
- case PASS_3:
- if (DOTTYP != olddottyp) {
- wr_outsect(DOTTYP-S_MIN);
- olddottyp = DOTTYP;
- }
- while (DOTSCT->s_zero) {
- wr_putc(0);
- DOTSCT->s_zero--;
- }
- wr_putc(arg);
- break;
+ switch (pass)
+ {
+ case PASS_1:
+ if (DOTSCT == NULL)
+ nosect();
+ /* no break */
+ case PASS_2:
+ DOTSCT->s_zero = 0;
+ break;
+ case PASS_3:
+ if (DOTTYP != olddottyp)
+ {
+ wr_outsect(DOTTYP - S_MIN);
+ olddottyp = DOTTYP;
+ }
+ while (DOTSCT->s_zero)
+ {
+ wr_putc(0);
+ DOTSCT->s_zero--;
+ }
+ wr_putc(arg);
+ break;
}
DOTVAL++;
}
-void
-emit2(int arg)
+void emit2(int arg)
{
#ifdef BYTES_REVERSED
- emit1((arg>>8)); emit1(arg);
+ emit1((arg >> 8));
+ emit1(arg);
#else
- emit1(arg); emit1((arg>>8));
+ emit1(arg);
+ emit1((arg >> 8));
#endif
}
-void
-emit4(long arg)
+void emit4(long arg)
{
#ifdef WORDS_REVERSED
- emit2((int)(arg>>16)); emit2((int)(arg));
+ emit2((int)(arg >> 16));
+ emit2((int)(arg));
#else
- emit2((int)(arg)); emit2((int)(arg>>16));
+ emit2((int)(arg));
+ emit2((int)(arg >> 16));
#endif
}
-void
-emitx(valu_t val, int n)
+void emitx(valu_t val, int n)
{
- switch (n) {
- case RELO1:
- emit1((int)val); break;
- case RELO2:
+ switch (n)
+ {
+ case RELO1:
+ emit1((int)val);
+ break;
+ case RELO2:
#ifdef BYTES_REVERSED
- emit1(((int)val>>8)); emit1((int)val);
+ emit1(((int)val >> 8));
+ emit1((int)val);
#else
- emit1((int)val); emit1(((int)val>>8));
+ emit1((int)val);
+ emit1(((int)val >> 8));
#endif
- break;
- case RELO4:
+ break;
+ case RELO4:
#ifdef WORDS_REVERSED
- emit2((int)(val>>16)); emit2((int)(val));
+ emit2((int)(val >> 16));
+ emit2((int)(val));
#else
- emit2((int)(val)); emit2((int)(val>>16));
+ emit2((int)(val));
+ emit2((int)(val >> 16));
#endif
- break;
- default:
- assert(0);
+ break;
+ default:
+ assert(0);
}
}
-void
-emitstr(int zero)
+void emitstr(int zero)
{
int i;
- char *p;
+ char* p;
p = stringbuf;
i = stringlen;
/* ---------- Error checked file I/O ---------- */
-void
-ffreopen(char *s, FILE *f)
+void ffreopen(char* s, FILE* f)
{
if (freopen(s, "r", f) == NULL)
fatal("can't reopen %s", s);
}
-FILE *
-ffcreat(char *s)
+FILE* ffcreat(char* s)
{
- FILE *f;
+ FILE* f;
if ((f = fopen(s, "w")) == NULL)
fatal("can't create %s", s);
- return(f);
+ return (f);
}
#ifndef TMPDIR
#define TMPDIR "/tmp"
#endif
-char *tmp_dir = TMPDIR;
+char* tmp_dir = TMPDIR;
-FILE *
-fftemp(char *path, char *tail)
+FILE* fftemp(char* path, char* tail)
{
- char *dir;
+ char* dir;
if ((dir = getenv("TMPDIR")) == NULL)
dir = tmp_dir;
sprintf(path, "%s/%s", dir, tail);
close(mkstemp(path));
- return(ffcreat(path));
+ return (ffcreat(path));
}
/* ---------- Error handling ---------- */
/* ARGSUSED */
-void
-yyerror(const char *message)
-{} /* we will do our own error printing */
+void yyerror(const char* message)
+{
+} /* we will do our own error printing */
-void
-nosect(void)
+void nosect(void)
{
fatal("no sections");
}
-void
-wr_fatal(void)
+void wr_fatal(void)
{
fatal("write error");
}
va_end(ap);
}
-void
-nofit(void)
+void nofit(void)
{
if (pass == PASS_3)
warning("too big");