commit fc7ec1b82a89eb33fa5b11077c6491fa22876dd0
parent e33fbe2d881dd3035d91e75c59065a5d4fe02034
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Tue, 12 Dec 2017 10:48:58 +0000
[as] Preserve order of the symbols in the output file
It is a bit annoying to have the symbols in inverse
state, and for this reason the link insertion strategy
is changed.
Diffstat:
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/as/symbol.c b/as/symbol.c
@@ -41,7 +41,7 @@ int pass;
static Symbol *hashtbl[HASHSIZ];
static Alloc *tmpalloc;
-Symbol *linesym, *symlist;
+Symbol *linesym, *symlist, *symlast;
#ifndef NDEBUG
void
@@ -95,9 +95,16 @@ lookup(char *name, int type)
sym->value = 0;
sym->section = cursec;
sym->hash = *list;
- sym->next = symlist;
+ sym->next = NULL;
- return symlist = *list = sym;
+ *list = sym;
+ if (symlast)
+ symlast->next = sym;
+ symlast = sym;
+ if (!symlist)
+ symlist = sym;
+
+ return sym;
}
Symbol *