aboutsummaryrefslogtreecommitdiff
path: root/src/libmach/symelf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmach/symelf.c')
-rw-r--r--src/libmach/symelf.c18
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;