17 onlyundef = fp->nsym > 0;
18 for(i=0; elfsym(elf, i, &esym) >= 0; i++){
21 if(onlyundef && esym.shndx != ElfSymShnNone)
23 if(esym.type != ElfSymTypeObject && esym.type != ElfSymTypeFunc)
25 if(strchr(esym.name, '@'))
27 memset(&sym, 0, sizeof sym);
30 sym.loc.addr = esym.value;
32 sym.hiloc.type = LADDR;
33 sym.hiloc.addr = esym.value+esym.size;
36 if(esym.type==ElfSymTypeObject){
39 if(&elf->sect[esym.shndx] == elf->bss)
41 }else if(esym.type==ElfSymTypeFunc){
45 if(esym.shndx == ElfSymShnNone)
47 if(esym.bind==ElfSymBindLocal)
48 sym.type += 'a' - 'A';
52 for(i=0; i<elf->nprog; i++){
54 if(p->type != ElfProgDynamic)
56 memset(&sym, 0, sizeof sym);
57 sym.name = "_DYNAMIC";
58 sym.loc = locaddr(p->vaddr);
59 sym.hiloc = locaddr(p->vaddr+p->filesz);
77 fprint(2, "dwarf symbols...\n");
78 if(symdwarf(fhdr) < 0)
79 fprint(2, "initializing dwarf: %r");
85 if(fhdr->stabs.stabbase){
87 fprint(2, "stabs symbols...\n");
88 if(symstabs(fhdr) < 0)
89 fprint(2, "initializing stabs: %r");
95 fprint(2, "elf symbols...\n");
97 if(elfsyminit(fhdr) < 0)
98 fprint(2, "initializing elf: %r");