summaryrefslogtreecommitdiff
path: root/src/cmd/6l/pass.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6l/pass.c')
-rw-r--r--src/cmd/6l/pass.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c
index fcce23971..913ff728b 100644
--- a/src/cmd/6l/pass.c
+++ b/src/cmd/6l/pass.c
@@ -73,7 +73,7 @@ dodata(void)
if(s->type != SBSS)
continue;
t = s->value;
- if(t == 0) {
+ if(t == 0 && s->name[0] != '.') {
diag("%s: no size", s->name);
t = 1;
}
@@ -83,6 +83,7 @@ dodata(void)
continue;
if(t >= 8)
datsize = rnd(datsize, 8);
+ s->size = t;
s->value = datsize;
datsize += t;
s->type = SDATA1;
@@ -101,6 +102,7 @@ dodata(void)
t = s->value;
if(t >= 8)
datsize = rnd(datsize, 8);
+ s->size = t;
s->value = datsize;
datsize += t;
}
@@ -124,6 +126,7 @@ dodata(void)
if(t > u)
continue;
u -= t;
+ s->size = t;
s->value = datsize;
s->type = SDATA;
datsize += t;
@@ -148,6 +151,7 @@ dobss(void)
if(s->type != SBSS)
continue;
t = s->value;
+ s->size = t;
if(t >= 8)
bsssize = rnd(bsssize, 8);
s->value = bsssize + datsize;