diff options
| author | fvdl <fvdl@NetBSD.org> | 1996-11-23 11:46:34 +0000 |
|---|---|---|
| committer | fvdl <fvdl@NetBSD.org> | 1996-11-23 11:46:34 +0000 |
| commit | ee489171eee18b4b4c679d2d2904472ba3f0e2b4 (patch) | |
| tree | 27b936f62df52ee19135888cd60aa57296fb0388 /sys/kern/exec_elf32.c | |
| parent | ba62612dc180dc37959cda82a56ebd916c697664 (diff) | |
Make previous change in interpreter entry point calculation dependant on
a 'mips' define. XXX
Just a temporary patch to get things going again for Linux ELF binaries,
needs to be solved properly.
Diffstat (limited to 'sys/kern/exec_elf32.c')
| -rw-r--r-- | sys/kern/exec_elf32.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/kern/exec_elf32.c b/sys/kern/exec_elf32.c index 4b2bd8cbc1c..d850b388097 100644 --- a/sys/kern/exec_elf32.c +++ b/sys/kern/exec_elf32.c @@ -1,4 +1,4 @@ -/* $NetBSD: exec_elf32.c,v 1.20 1996/11/11 20:33:10 jonathan Exp $ */ +/* $NetBSD: exec_elf32.c,v 1.21 1996/11/23 11:46:34 fvdl Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou @@ -413,7 +413,11 @@ ELFNAME(load_file)(p, epp, path, vcset, entry, ap, last) /* If entry is within this section it must be text */ if (eh.e_entry >= ph[i].p_vaddr && eh.e_entry < (ph[i].p_vaddr + size)) { - *entry = addr + eh.e_entry - ph[i].p_vaddr; + /* XXX */ + *entry = addr + eh.e_entry; +#ifdef mips + *entry -= ph[i].p_vaddr; +#endif ap->arg_interp = addr; } addr += size; @@ -619,8 +623,7 @@ ELFNAME2(exec,makecmds)(p, epp) * function, pick the same address that a non-fixed mmap(0, ..) * would (i.e. something safely out of the way). */ - if (pos == ELFDEFNNAME(NO_ADDR) && - epp->ep_emul == &ELFNAMEEND(emul_netbsd)) + if (pos == ELFDEFNNAME(NO_ADDR)) pos = round_page(epp->ep_daddr + MAXDSIZ); #endif /* !ELF_INTERP_NON_RELOCATABLE */ |
