diff options
| author | Russ Cox <rsc@golang.org> | 2009-08-13 15:45:58 -0700 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2009-08-13 15:45:58 -0700 |
| commit | 45ce825544e2aec385cafbc2a8c29dfb9dce487c (patch) | |
| tree | 55a621d8d76ba524d3653c5511862df568153a87 /src/cmd/8l/span.c | |
| parent | 8149a8c666a79e2dc8898fcc8debbc2bc3626638 (diff) | |
| download | go-45ce825544e2aec385cafbc2a8c29dfb9dce487c.tar.xz | |
debugging symbols for 8g.
backtraces don't work,
but they didn't work when i started either.
R=ken
OCL=33230
CL=33230
Diffstat (limited to 'src/cmd/8l/span.c')
| -rw-r--r-- | src/cmd/8l/span.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/cmd/8l/span.c b/src/cmd/8l/span.c index a14335b702..c1621fd74a 100644 --- a/src/cmd/8l/span.c +++ b/src/cmd/8l/span.c @@ -146,9 +146,10 @@ xdefine(char *p, int t, int32 v) } void -putsymb(char *s, int t, int32 v, int ver, vlong go) +putsymb(char *s, int t, int32 v, int ver, Sym *go) { int i, f; + vlong gv; if(t == 'f') s++; @@ -172,9 +173,12 @@ putsymb(char *s, int t, int32 v, int ver, vlong go) cput(s[i]); cput(0); } - lput(go); + gv = 0; + if(go) + gv = go->value+INITDAT; + lput(gv); - symsize += 4 + 1 + i + 1 + 4; + symsize += 4 + 1 + i+1 + 4; if(debug['n']) { if(t == 'z' || t == 'Z') { @@ -187,9 +191,9 @@ putsymb(char *s, int t, int32 v, int ver, vlong go) return; } if(ver) - Bprint(&bso, "%c %.8lux %s<%d>\n", t, v, s, ver); + Bprint(&bso, "%c %.8lux %s<%d> %s (%.8llux)\n", t, v, s, ver, go ? go->name : "", gv); else - Bprint(&bso, "%c %.8lux %s\n", t, v, s); + Bprint(&bso, "%c %.8lux %s\n", t, v, s, go ? go->name : "", gv); } } @@ -209,15 +213,15 @@ asmsym(void) for(s=hash[h]; s!=S; s=s->link) switch(s->type) { case SCONST: - putsymb(s->name, 'D', s->value, s->version, gotypefor(s->name)); + putsymb(s->name, 'D', s->value, s->version, s->gotype); continue; case SDATA: - putsymb(s->name, 'D', s->value+INITDAT, s->version, gotypefor(s->name)); + putsymb(s->name, 'D', s->value+INITDAT, s->version, s->gotype); continue; case SBSS: - putsymb(s->name, 'B', s->value+INITDAT, s->version, gotypefor(s->name)); + putsymb(s->name, 'B', s->value+INITDAT, s->version, s->gotype); continue; case SFILE: @@ -238,17 +242,17 @@ asmsym(void) if(a->type == D_FILE1) putsymb(a->asym->name, 'Z', a->aoffset, 0, 0); - putsymb(s->name, 'T', s->value, s->version, gotypefor(s->name)); + putsymb(s->name, 'T', s->value, s->version, s->gotype); /* frame, auto and param after */ putsymb(".frame", 'm', p->to.offset+4, 0, 0); for(a=p->to.autom; a; a=a->link) if(a->type == D_AUTO) - putsymb(a->asym->name, 'a', -a->aoffset, 0, 0); + putsymb(a->asym->name, 'a', -a->aoffset, 0, a->gotype); else if(a->type == D_PARAM) - putsymb(a->asym->name, 'p', a->aoffset, 0, 0); + putsymb(a->asym->name, 'p', a->aoffset, 0, a->gotype); } if(debug['v'] || debug['n']) Bprint(&bso, "symsize = %lud\n", symsize); |
