mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
linux-user: Define ELF_ET_DYN_BASE in $guest/target_mman.h
Copy each guest kernel's default value, then bound it against reserved_va or the host address space. Tested-by: Helge Deller <deller@gmx.de> Reviewed-by: Helge Deller <deller@gmx.de> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
2d708164e0
commit
da2b71fab6
23 changed files with 106 additions and 2 deletions
|
@ -847,6 +847,21 @@ int main(int argc, char **argv, char **envp)
|
|||
}
|
||||
mmap_next_start = task_unmapped_base;
|
||||
|
||||
/* Similarly for elf_et_dyn_base. */
|
||||
if (reserved_va) {
|
||||
if (ELF_ET_DYN_BASE < reserved_va) {
|
||||
elf_et_dyn_base = ELF_ET_DYN_BASE;
|
||||
} else {
|
||||
/* The most common default formula is TASK_SIZE / 3 * 2. */
|
||||
elf_et_dyn_base = TARGET_PAGE_ALIGN(reserved_va / 3) * 2;
|
||||
}
|
||||
} else if (ELF_ET_DYN_BASE < UINTPTR_MAX) {
|
||||
elf_et_dyn_base = ELF_ET_DYN_BASE;
|
||||
} else {
|
||||
/* 32-bit host: pick something medium size. */
|
||||
elf_et_dyn_base = 0x18000000;
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue