diff options
author | Quentin Carbonneaux <quentin@c9x.me> | 2022-11-22 21:44:44 +0100 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2022-11-22 21:56:21 +0100 |
commit | cbee74bdb4f85d6d8d4f192f0018ea023418e216 (patch) | |
tree | 4ea3eb41265e44336d81fecf719193c67540f3d3 /load.c | |
parent | 04e26409011389f7b5759114905195a4fb0b0286 (diff) | |
download | roux-cbee74bdb4f85d6d8d4f192f0018ea023418e216.tar.gz |
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.
Diffstat (limited to 'load.c')
-rw-r--r-- | load.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/load.c b/load.c index 0d7944c..b16edd2 100644 --- a/load.c +++ b/load.c @@ -152,7 +152,9 @@ load(Slice sl, bits msk, Loc *l) break; case ACon: case ASym: - c = curf->con[a->u.sym.con]; + memset(&c, 0, sizeof c); + c.type = CAddr; + c.sym = a->u.sym; c.bits.i = a->offset; r = newcon(&c, curf); break; |