From eaf56db5bc78cfec908db84dc792c53ac8ffb90e Mon Sep 17 00:00:00 2001 From: rsc Date: Wed, 21 Apr 2004 05:34:10 +0000 Subject: Fix the bugs I introduced fixing the bug earlier tonight. --- src/libmach/dwarf386.c | 4 +--- src/libmach/dwarfabbrev.c | 5 ++++- src/libmach/dwarfinfo.c | 3 ++- src/libmach/symdwarf.c | 5 ++++- 4 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src/libmach') diff --git a/src/libmach/dwarf386.c b/src/libmach/dwarf386.c index d5cc9b71..3cefeea2 100644 --- a/src/libmach/dwarf386.c +++ b/src/libmach/dwarf386.c @@ -15,10 +15,8 @@ dwarf386regs[] = "BP", "SI", "DI", - "LR", - "CFA", }; -int dwarf386nregs = 10; +int dwarf386nregs = nelem(dwarf386regs); diff --git a/src/libmach/dwarfabbrev.c b/src/libmach/dwarfabbrev.c index 2db418dd..503d5149 100644 --- a/src/libmach/dwarfabbrev.c +++ b/src/libmach/dwarfabbrev.c @@ -113,6 +113,7 @@ findabbrev(DwarfAbbrev *a, int na, ulong num) for(i=0; iaoff, num); if(a == nil){ - fprint(2, "getabbrev %ud: %r\n", num); + fprint(2, "getabbrev %ud %ud for %ud,%ud: %r\n", s->aoff, num, s->unit, s->uoff); + abort(); return -1; } if(parseattrs(&s->b, s->unit, a, &s->attrs) < 0) diff --git a/src/libmach/symdwarf.c b/src/libmach/symdwarf.c index 8c41d127..eeafa8dc 100644 --- a/src/libmach/symdwarf.c +++ b/src/libmach/symdwarf.c @@ -112,6 +112,9 @@ dwarflenum(Fhdr *fhdr, Symbol *p, char *name, uint j, Loc l, Symbol *s) if(p == nil) return -1; + if(p->u.dwarf.unit == 0 && p->u.dwarf.uoff == 0) + return -1; + if(dwarfseeksym(fhdr->dwarf, p->u.dwarf.unit, p->u.dwarf.uoff, &ds) < 0) return -1; @@ -200,7 +203,7 @@ dwarfsyminit(Fhdr *fp) if(dwarfenum(d, &s) < 0) return; - dwarfnextsymat(d, &s, 0); + while(dwarfnextsymat(d, &s, 0) == 1) while(dwarfnextsymat(d, &s, 1) == 1){ if(s.attrs.name == nil) continue; -- cgit v1.2.3