ref: b9ed55ac1a4d3a39fd19953edda18451e9b300f0
parent: 970841705f1d80dcbd2717d42545b10220fad35e
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sat Feb 3 15:18:16 EST 2018
[as] Remove FRELLOC from flags It is totally equivalent to FABS.
--- a/as/as.h
+++ b/as/as.h
@@ -11,9 +11,8 @@
FCOMMON = 1 << 2,
FEXTERN = 1 << 3,
- FUNDEF = 1 << 4,
+ FDEF = 1 << 4,
FGLOBAL = 1 << 5,
- FRELOC = 1 << 6,
FABS = 1 << 7,
};
--- a/as/ins.c
+++ b/as/ins.c
@@ -75,7 +75,7 @@
while (np = *args++) {
Symbol *sym = np->sym;
- if (sym->flags & FRELOC)
+ if ((sym->flags & FABS) == 0)
reloc(sym, 0, siz, siz * 8, 0);
emit(tobytes(sym->value, siz, endian), siz);
}
@@ -131,10 +131,10 @@
switch (which) {
case EQU:
- if (pass == 1 && (sym->flags & FUNDEF) == 0)
+ if (pass == 1 && (sym->flags & FDEF))
error("redefinition of symbol '%s'", sym->name.buf);
sym->value = exp->value;
- sym->flags &= ~FUNDEF;
+ sym->flags |= FDEF;
break;
case COMMON:
sym->flags |= FCOMMON;
--- a/as/myro.c
+++ b/as/myro.c
@@ -92,7 +92,7 @@
flags |= MYROSYM_COMMON;
if (sym->flags & FEXTERN)
flags |= MYROSYM_EXTERN;
- if (sym->flags & FUNDEF)
+ if (!(sym->flags & FDEF))
flags |= MYROSYM_UNDEF;
return flags;
}
--- a/as/symbol.c
+++ b/as/symbol.c
@@ -64,7 +64,7 @@
sym = xmalloc(sizeof(*sym));
sym->name = newstring(name);
- sym->flags = FRELOC | FUNDEF | FNTYPE;
+ sym->flags = FNTYPE;
sym->size = sym->value = 0;
sym->section = cursec;
sym->hash = *list;
@@ -106,13 +106,11 @@
}
sym = lookup(name);
- if (pass == 1 && (sym->flags & FUNDEF) == 0)
+ if (pass == 1 && (sym->flags & FDEF))
error("redefinition of label '%s'", name);
- if (cursec->flags & SABS) {
- sym->flags &= ~FRELOC;
+ if (cursec->flags & SABS)
sym->flags |= FABS;
- }
- sym->flags &= ~FUNDEF;
+ sym->flags |= FDEF;
sym->value = cursec->curpc;
sym->section = cursec;