From 2303ddadf6e5cbf9705ccf25abe6114af1126b79 Mon Sep 17 00:00:00 2001 From: forsyth Date: Tue, 27 Apr 2010 19:13:34 +0100 Subject: 20100427-1913 --- utils/6l/span.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'utils/6l/span.c') 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; -- cgit v1.2.3