]> Cypherpunks repositories - gostls13.git/commitdiff
fixing width bug in DATA output. some logging to make fixing
authorKai Backman <kaib@golang.org>
Fri, 18 Sep 2009 06:08:15 +0000 (23:08 -0700)
committerKai Backman <kaib@golang.org>
Fri, 18 Sep 2009 06:08:15 +0000 (23:08 -0700)
similar issues easier in the future.

R=rsc
APPROVED=rsc
DELTA=6  (1 added, 0 deleted, 5 changed)
OCL=34771
CL=34773

src/cmd/5g/gobj.c
src/cmd/5l/pass.c

index 6119f14f81c34c11e4b3cc86a4ed356601e75fb6..d2c86ad5b026edcd93fbcd743b6912bda014aebd 100644 (file)
@@ -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;
index 8387dead1060d64b70c403abd2d374265852edf4..be0b50afcbe2422a8ac1e6bdb0bb7b3f95053ad2 100644 (file)
@@ -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))