shithub: scc

Download patch

ref: e119c49880f616f781206c4bca93a6a684fc61ff
parent: 5744901a952c06af18e06e5ac6989202b56c50f4
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sat Nov 2 14:10:46 EDT 2019

[ld] Remove the double linked list for sections

It doesn't add anything and the work can be done in a simpler
way using a single linked list.

--- a/src/cmd/ld/section.c
+++ b/src/cmd/ld/section.c
@@ -20,11 +20,11 @@
 	Section sec;
 	FILE *tmpfp;
 	struct sectab *hash;
-	struct sectab *next, *prev;
+	struct sectab *next;
 };
 
 static struct sectab *sectab[NR_SECTION];
-static struct sectab secs = {.next = &secs, .prev = &secs};
+static struct sectab *secs;
 
 Section *
 lookupsec(char *name)
@@ -60,12 +60,9 @@
 	sp->tmpfp = NULL;
 	sp->hash = sectab[h];
 	sectab[h] = sp;
+	sp->next = secs;
+	secs = sp;
 
-	sp->next = &secs;
-	sp->prev = secs.prev;
-	secs.prev->next = sp;
-	secs.prev = sp;
-
 	return sec;
 }
 
@@ -76,7 +73,7 @@
 	Section *sec, **p;
 	int n = 0;
 
-	for (sp = secs.next; sp != &secs; sp = sp->next) {
+	for (sp = secs; sp; sp = sp->next) {
 		sec = &sp->sec;
 		if (sec->type != seg->type)
 			continue;