commit eaf56db5bc78cfec908db84dc792c53ac8ffb90e from: rsc date: Wed Apr 21 05:34:10 2004 UTC Fix the bugs I introduced fixing the bug earlier tonight. commit - ae12b879721b02b79a2a2457b36627d24147e74f commit + eaf56db5bc78cfec908db84dc792c53ac8ffb90e blob - d5cc9b7113a4b8002fd5c520cd875ff2536ec297 blob + 3cefeea2f8d1258016466fcf953d50957bcacffa --- src/libmach/dwarf386.c +++ src/libmach/dwarf386.c @@ -15,10 +15,8 @@ dwarf386regs[] = "BP", "SI", "DI", - "LR", - "CFA", }; -int dwarf386nregs = 10; +int dwarf386nregs = nelem(dwarf386regs); blob - 2db418ddb852364c99e64ed1029145c7ad9e62dc blob + 503d51492ae6dc694bdd624d9b35c8797978a267 --- src/libmach/dwarfabbrev.c +++ 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) blob - 8c41d127c605b0f15d0d9c401715ff3cc748dc7a blob + eeafa8dccb8bc755aac55f482ffa3ab7242e896b --- src/libmach/symdwarf.c +++ src/libmach/symdwarf.c @@ -112,6 +112,9 @@ dwarflenum(Fhdr *fhdr, Symbol *p, char *name, uint j, 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;