diff options
Diffstat (limited to 'src/libmach/symelf.c')
-rw-r--r-- | src/libmach/symelf.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libmach/symelf.c b/src/libmach/symelf.c index 7babbd49..0b9f410e 100644 --- a/src/libmach/symelf.c +++ b/src/libmach/symelf.c @@ -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); @@ -65,6 +66,23 @@ elfsyminit(Fhdr *fp) } 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) { int ret; |