mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-30 21:42:06 -06:00
BSD user: implement GUEST_BASE
Based on 379f6698d7
.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
17cf428f2e
commit
2fa5d9ba56
3 changed files with 70 additions and 0 deletions
|
@ -1337,6 +1337,29 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs,
|
|||
info->mmap = 0;
|
||||
elf_entry = (abi_ulong) elf_ex.e_entry;
|
||||
|
||||
#if defined(CONFIG_USE_GUEST_BASE)
|
||||
/*
|
||||
* In case where user has not explicitly set the guest_base, we
|
||||
* probe here that should we set it automatically.
|
||||
*/
|
||||
if (!have_guest_base) {
|
||||
/*
|
||||
* Go through ELF program header table and find out whether
|
||||
* any of the segments drop below our current mmap_min_addr and
|
||||
* in that case set guest_base to corresponding address.
|
||||
*/
|
||||
for (i = 0, elf_ppnt = elf_phdata; i < elf_ex.e_phnum;
|
||||
i++, elf_ppnt++) {
|
||||
if (elf_ppnt->p_type != PT_LOAD)
|
||||
continue;
|
||||
if (HOST_PAGE_ALIGN(elf_ppnt->p_vaddr) < mmap_min_addr) {
|
||||
guest_base = HOST_PAGE_ALIGN(mmap_min_addr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_USE_GUEST_BASE */
|
||||
|
||||
/* Do this so that we can load the interpreter, if need be. We will
|
||||
change some of these later */
|
||||
info->rss = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue