better unwinding for 386.

command-line extraction from core files on linux and freebsd.

move linux ureg into ureg386.h (used in many places).
This commit is contained in:
rsc 2004-12-25 22:03:28 +00:00
parent cdf1805191
commit 1cc215aaf9
13 changed files with 495 additions and 109 deletions

View file

@ -53,6 +53,7 @@ elfsyminit(Fhdr *fp)
p = &elf->prog[i];
if(p->type != ElfProgDynamic)
continue;
elf->dynamic = p->vaddr;
memset(&sym, 0, sizeof sym);
sym.name = "_DYNAMIC";
sym.loc = locaddr(p->vaddr);
@ -64,6 +65,23 @@ elfsyminit(Fhdr *fp)
return 0;
}
int
elfsymlookup(Elf *elf, char *name, ulong *addr)
{
int i;
ElfSym esym;
for(i=0; elfsym(elf, i, &esym) >= 0; i++){
if(esym.name == nil)
continue;
if(strcmp(esym.name, name) == 0){
*addr = esym.value;
return 0;
}
}
return -1;
}
int
symelf(Fhdr *fhdr)
{