From cbee74bdb4f85d6d8d4f192f0018ea023418e216 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Tue, 22 Nov 2022 21:44:44 +0100 Subject: use a new struct for symbols Symbols are a useful abstraction that occurs in both Con and Alias. In this patch they get their own struct. This new struct packages a symbol name and a type; the type tells us where the symbol name must be interpreted (currently, in gobal memory or in thread-local storage). The refactor fixed a bug in addcon(), proving the value of packaging symbol names with their type. --- parse.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index 98ede39..04ef8be 100644 --- a/parse.c +++ b/parse.c @@ -420,12 +420,12 @@ parseref() c.flt = 2; break; case Tthread: - c.reloc = RelThr; + c.sym.type = SThr; expect(Tglo); /* fall through */ case Tglo: c.type = CAddr; - c.label = intern(tokval.str); + c.sym.id = intern(tokval.str); break; } return newcon(&c, curf); @@ -1174,7 +1174,7 @@ printcon(Con *c, FILE *f) case CUndef: break; case CAddr: - fprintf(f, "$%s", str(c->label)); + fprintf(f, "$%s", str(c->sym.id)); if (c->bits.i) fprintf(f, "%+"PRIi64, c->bits.i); break; -- cgit 1.4.1