summaryrefslogtreecommitdiff
path: root/sys/src/cmd/5l/obj.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/cmd/5l/obj.c')
-rw-r--r--sys/src/cmd/5l/obj.c44
1 files changed, 6 insertions, 38 deletions
diff --git a/sys/src/cmd/5l/obj.c b/sys/src/cmd/5l/obj.c
index 9aabb6d7e..4d520b7a2 100644
--- a/sys/src/cmd/5l/obj.c
+++ b/sys/src/cmd/5l/obj.c
@@ -484,23 +484,13 @@ zaddr(uchar *p, Adr *a, Sym *h[])
break;
case D_SCONST:
- while(nhunk < NSNAME)
- gethunk();
- a->sval = (char*)hunk;
- nhunk -= NSNAME;
- hunk += NSNAME;
-
+ a->sval = malloc(NSNAME);
memmove(a->sval, p+4, NSNAME);
c += NSNAME;
break;
case D_FCONST:
- while(nhunk < sizeof(Ieee))
- gethunk();
- a->ieee = (Ieee*)hunk;
- nhunk -= NSNAME;
- hunk += NSNAME;
-
+ a->ieee = malloc(sizeof(Ieee));
a->ieee->l = p[4] | (p[5]<<8) |
(p[6]<<16) | (p[7]<<24);
a->ieee->h = p[8] | (p[9]<<8) |
@@ -524,12 +514,7 @@ zaddr(uchar *p, Adr *a, Sym *h[])
return c;
}
- while(nhunk < sizeof(Auto))
- gethunk();
- u = (Auto*)hunk;
- nhunk -= sizeof(Auto);
- hunk += sizeof(Auto);
-
+ u = malloc(sizeof(Auto));
u->link = curauto;
curauto = u;
u->asym = s;
@@ -814,12 +799,7 @@ loop:
goto loop;
}
- if(nhunk < sizeof(Prog))
- gethunk();
- p = (Prog*)hunk;
- nhunk -= sizeof(Prog);
- hunk += sizeof(Prog);
-
+ p = malloc(sizeof(Prog));
p->as = o;
p->scond = bloc[1];
p->reg = bloc[2];
@@ -1101,12 +1081,7 @@ lookup(char *symb, int v)
if(memcmp(s->name, symb, l) == 0)
return s;
- while(nhunk < sizeof(Sym))
- gethunk();
- s = (Sym*)hunk;
- nhunk -= sizeof(Sym);
- hunk += sizeof(Sym);
-
+ s = malloc(sizeof(Sym));
s->name = malloc(l);
memmove(s->name, symb, l);
@@ -1123,14 +1098,7 @@ lookup(char *symb, int v)
Prog*
prg(void)
{
- Prog *p;
-
- while(nhunk < sizeof(Prog))
- gethunk();
- p = (Prog*)hunk;
- nhunk -= sizeof(Prog);
- hunk += sizeof(Prog);
-
+ Prog *p = malloc(sizeof(Prog));
*p = zprg;
return p;
}