diff options
| author | forsyth <forsyth@vitanuova.com> | 2010-04-27 19:13:34 +0100 |
|---|---|---|
| committer | forsyth <forsyth@vitanuova.com> | 2010-04-27 19:13:34 +0100 |
| commit | 2303ddadf6e5cbf9705ccf25abe6114af1126b79 (patch) | |
| tree | 69ba2b94d272fd62869f0ce34703b972e3cf084f /utils/6l/span.c | |
| parent | ac618e3d372eaed038e4ca17b28993202bcfab1d (diff) | |
20100427-1913
Diffstat (limited to 'utils/6l/span.c')
| -rw-r--r-- | utils/6l/span.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/utils/6l/span.c b/utils/6l/span.c index ed60673b..1ce533d0 100644 --- a/utils/6l/span.c +++ b/utils/6l/span.c @@ -120,12 +120,17 @@ xdefine(char *p, int t, vlong v) } void -putsymb(char *s, int t, long v, int ver) +putsymb(char *s, int t, vlong v, int ver) { - int i, f; + int i, f, l; if(t == 'f') s++; + l = 4; + if(!debug['8']){ + lput(v>>32); + l = 8; + } lput(v); if(ver) t += 'a' - 'A'; @@ -146,11 +151,11 @@ putsymb(char *s, int t, long v, int ver) cput(s[i]); cput(0); } - symsize += 4 + 1 + i + 1; + symsize += l + 1 + i + 1; if(debug['n']) { if(t == 'z' || t == 'Z') { - Bprint(&bso, "%c %.8lux ", t, v); + Bprint(&bso, "%c %.8llux ", t, v); for(i=1; s[i] != 0 || s[i+1] != 0; i+=2) { f = ((s[i]&0xff) << 8) | (s[i+1]&0xff); Bprint(&bso, "/%x", f); @@ -159,9 +164,9 @@ putsymb(char *s, int t, long v, int ver) return; } if(ver) - Bprint(&bso, "%c %.8lux %s<%d>\n", t, v, s, ver); + Bprint(&bso, "%c %.8llux %s<%d>\n", t, v, s, ver); else - Bprint(&bso, "%c %.8lux %s\n", t, v, s); + Bprint(&bso, "%c %.8llux %s\n", t, v, s); } } @@ -213,7 +218,7 @@ asmsym(void) putsymb(s->name, 'T', s->value, s->version); /* frame, auto and param after */ - putsymb(".frame", 'm', p->to.offset+4, 0); + putsymb(".frame", 'm', p->to.offset+8, 0); for(a=p->to.autom; a; a=a->link) if(a->type == D_AUTO) @@ -230,9 +235,9 @@ asmsym(void) void asmlc(void) { - long oldpc, oldlc; + vlong oldpc; Prog *p; - long v, s; + long oldlc, v, s; oldpc = INITTEXT; oldlc = 0; |
