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 *