ref: f9cdd3f0f5b55988d1895e58458d90622257d2c0
parent: 60bf4e5d8366b38f40e310180c42550d1825d450
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Mon Nov 27 17:32:32 EST 2017
[as] Fix writestrings and writesymbols Don't emit strings for internal symbols.
--- a/as/myro.c
+++ b/as/myro.c
@@ -20,24 +20,26 @@
size_t len;
Symbol *sym;
Section *sp;
- String str;
+ String *str;
fwrite(FORMAT, sizeof(FORMAT), 1, fp);
off = sizeof(FORMAT);
for (sym = symlist; sym; sym = sym->next) {
- str = sym->name;
- len = strlen(str.buf) + 1;
- fwrite(str.buf, len, 1, fp);
- str.offset = off;
+ if ((sym->flags & TMASK) == TREG)
+ continue;
+ str = &sym->name;
+ len = strlen(str->buf) + 1;
+ fwrite(str->buf, len, 1, fp);
+ str->offset = off;
off += len;
}
for (sp = seclist; sp; sp = sp->next) {
- str = sp->name;
- len = strlen(str.buf) + 1;
- fwrite(str.buf, len, 1, fp);
- str.offset = off;
+ str = &sp->name;
+ len = strlen(str->buf) + 1;
+ fwrite(str->buf, len, 1, fp);
+ str->offset = off;
off += len;
}
@@ -72,6 +74,8 @@
struct myrosym symbol;
for (sym = symlist; sym; sym = sym->next) {
+ if ((sym->flags & TMASK) == TREG)
+ continue;
symbol.name = sym->name.offset;
symbol.type = -1;
symbol.section = -1;