commit 2e38c86af6c91bfb23dfb06b517a00c11fd4c1b3
parent 00a30954aca97004cb6f586bdeeabb488f1e3c3f
Author: Quentin Carbonneaux <quentin@c9x.me>
Date: Fri, 9 Sep 2022 17:54:06 +0200
do not drop relocation kind in alias analysis
Diffstat:
3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/alias.c b/alias.c
@@ -19,6 +19,7 @@ getalias(Alias *a, Ref r, Fn *fn)
if (c->type == CAddr) {
a->type = ASym;
a->label = c->label;
+ a->rel = c->rel;
} else
a->type = ACon;
a->offset = c->bits.i;
diff --git a/all.h b/all.h
@@ -282,6 +282,7 @@ struct Alias {
Ref base;
uint32_t label;
int64_t offset;
+ int rel;
Alias *slot;
};
diff --git a/load.c b/load.c
@@ -155,7 +155,7 @@ load(Slice sl, bits msk, Loc *l)
c.type = CAddr;
c.label = a->label;
c.bits.i = a->offset;
- c.rel = RelDef;
+ c.rel = a->rel;
r = newcon(&c, curf);
break;
}