diff options
author | Kai Backman <kaib@golang.org> | 2009-09-17 23:08:15 -0700 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2009-09-17 23:08:15 -0700 |
commit | 94cb5a646b38b4ac3c4b9e04409e6e5a5e6d5056 (patch) | |
tree | aad159a156d148d7218ca166bd0cb69f07bf4827 /src | |
parent | 7c1215ed290658292e4c996d02c1f398dddbf422 (diff) | |
download | golang-94cb5a646b38b4ac3c4b9e04409e6e5a5e6d5056.tar.gz |
fixing width bug in DATA output. some logging to make fixing
similar issues easier in the future.
R=rsc
APPROVED=rsc
DELTA=6 (1 added, 0 deleted, 5 changed)
OCL=34771
CL=34773
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/5g/gobj.c | 7 | ||||
-rw-r--r-- | src/cmd/5l/pass.c | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/cmd/5g/gobj.c b/src/cmd/5g/gobj.c index 6119f14f8..d2c86ad5b 100644 --- a/src/cmd/5g/gobj.c +++ b/src/cmd/5g/gobj.c @@ -427,9 +427,10 @@ datagostring(Strlit *sval, Addr *a) // $string len+ptr datastring(sval->s, sval->len, &ap); - + ap.name = ap.type; ap.type = D_CONST; ap.etype = TINT32; + wi = types[TUINT32]->width; wp = types[tptr]->width; @@ -470,7 +471,7 @@ datagostring(Strlit *sval, Addr *a) p->to.offset = sval->len; p = pc; - ggloblsym(ao.sym, types[TSTRING]->width, ao.type == D_EXTERN); + ggloblsym(ao.sym, types[TSTRING]->width, ao.name == D_EXTERN); if(ao.name == D_STATIC) p->from.name = D_STATIC; text(); @@ -549,7 +550,7 @@ dgostrlitptr(Sym *s, int off, Strlit *lit) p->from.name = D_EXTERN; p->from.sym = s; p->from.offset = off; - p->from.reg = widthptr; + p->reg = widthptr; datagostring(lit, &p->to); p->to.type = D_CONST; p->to.etype = TINT32; diff --git a/src/cmd/5l/pass.c b/src/cmd/5l/pass.c index 8387dead1..be0b50afc 100644 --- a/src/cmd/5l/pass.c +++ b/src/cmd/5l/pass.c @@ -52,8 +52,8 @@ dodata(void) s->type, s->name, p); v = p->from.offset + p->reg; if(v > s->value) - diag("initialize bounds (%ld): %s\n%P", - s->value, s->name, p); + diag("initialize bounds (%ld/%ld): %s\n%P", + v, s->value, s->name, p); if((s->type == SBSS || s->type == SDATA) && (p->to.type == D_CONST || p->to.type == D_OCONST) && (p->to.name == D_EXTERN || p->to.name == D_STATIC)){ s = p->to.sym; if(s != S && (s->type == STEXT || s->type == SLEAF || s->type == SCONST || s->type == SXREF)) |