64-bit fixes. [jmk] --rw-rw-r-- M 107020 glenda sys 4248 Nov 19 20:50 sys/src/cmd/2c/enam.c /n/sourcesdump/2005/1119/plan9/sys/src/cmd/2c/enam.c:421,424 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/2c/enam.c:421,425 "UNPK", "WORD", "SIGNAME", + "LAST", }; [jmk] --rw-rw-r-- M 107020 glenda sys 6241 Nov 19 20:50 sys/src/cmd/2c/gc.h /n/sourcesdump/2005/1119/plan9/sys/src/cmd/2c/gc.h:335,340 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/2c/gc.h:335,341 void fpbranch(void); void patch(Prog*, long); void gpseudo(int, Sym*, int, long); + void gpseudotree(int, Sym*, Node*); void indx(Node*); void bcomplex(Node*); [jmk] --rw-rw-r-- M 107020 glenda sys 17160 Nov 19 20:50 sys/src/cmd/2c/swt.c /n/sourcesdump/2005/1119/plan9/sys/src/cmd/2c/swt.c:964,970 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/2c/swt.c:964,970 p->from.displace = 4; return; } - gpseudo(ADATA, s, D_TREE, (long)a); + gpseudotree(ADATA, s, a); p->from.offset += o; p->from.displace = w; } [jmk] --rw-rw-r-- M 107020 glenda sys 17847 Nov 19 20:50 sys/src/cmd/2c/txt.c /n/sourcesdump/2005/1119/plan9/sys/src/cmd/2c/txt.c:674,683 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/2c/txt.c:674,683 } else { p->from.type = gf; if(gf == D_CONST) { - p->from.offset = (long)f; + p->from.offset = (long)(uintptr)f; if(typefd[i]) { p->from.type = D_FCONST; - p->from.dval = (long)f; + p->from.dval = (long)(uintptr)f; } } } /n/sourcesdump/2005/1119/plan9/sys/src/cmd/2c/txt.c:687,693 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/2c/txt.c:687,693 } else { p->to.type = gt; if(gt == D_CONST) - p->to.offset = (long)t; + p->to.offset = (long)(uintptr)t; } if(o == OBIT) { p->from.field = f->type->nbits; /n/sourcesdump/2005/1119/plan9/sys/src/cmd/2c/txt.c:839,849 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/2c/txt.c:839,862 if(a == ADATA) pc--; p->as = a; - if(g != D_TREE) { - p->to.type = g; - p->to.offset = v; - } else - naddr((Node*)v, &p->to, D_NONE); + if(g == D_TREE) + abort(); /* obsolete */ + p->to.type = g; + p->to.offset = v; + p->from.sym = s; + p->from.type = D_EXTERN; + if(s->class == CSTATIC) + p->from.type = D_STATIC; + } + + void + gpseudotree(int a, Sym *s, Node *n) + { + nextpc(); + if(a == ADATA) + pc--; + p->as = a; + naddr(n, &p->to, D_NONE); p->from.sym = s; p->from.type = D_EXTERN; if(s->class == CSTATIC)