commit dbae0624dd4eebde36d6253a06e61a0d48b44a45
parent 8351c2b171d0d9f0a1746c42254d86160ab15ff1
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Sat, 24 Aug 2019 15:19:14 +0100
[libmach] Rework of Objsym structure
The main purpose of this rework is to get rid of Obj prefixed
types and simplify the interface of the library.
Diffstat:
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/include/scc/scc/mach.h b/include/scc/scc/mach.h
@@ -30,10 +30,13 @@ struct objsec {
struct objsym {
char *name;
- int type;
- int sec;
unsigned long long size;
unsigned long long value;
+ void *aux;
+ int index;
+ char class;
+ char type;
+
Objsym *next, *hash;
};
diff --git a/src/cmd/ld/pass3.c b/src/cmd/ld/pass3.c
@@ -22,11 +22,11 @@ rebase(Obj *obj)
* we have an error in our code.
*/
aux = lookup(sym->name);
- aux->value += obj->secs[sym->sec].base;
+ aux->value += obj->secs[sym->index].base;
case 't':
case 'd':
case 'b':
- sym->value += obj->secs[sym->sec].base;
+ sym->value += obj->secs[sym->index].base;
case 'U':
case 'N':
case '?':
diff --git a/src/libmach/coff32/coff32read.c b/src/libmach/coff32/coff32read.c
@@ -513,7 +513,7 @@ convsyms(Obj *obj)
sym->type = t;
sym->value = ent->n_value;
sym->size = (sym->type == 'C') ? ent->n_value : 0;
- sym->sec = ent->n_scnum-1;
+ sym->index = ent->n_scnum-1;
}
return i;