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:
Richard Henderson 2023-08-02 15:17:33 -07:00
parent 2d708164e0
commit da2b71fab6
23 changed files with 106 additions and 2 deletions

View file

@ -25,10 +25,19 @@
* TASK_UNMAPPED_BASE: For mmap without hint (addr != 0), the search
* for unused virtual memory begins at TASK_UNMAPPED_BASE.
*
* task_unmapped_base: When the guest address space is limited via -R,
* the value of TASK_UNMAPPED_BASE is adjusted to fit.
* ELF_ET_DYN_BASE: When the executable is ET_DYN (i.e. PIE), and requires
* an interpreter (i.e. not -static-pie), use ELF_ET_DYN_BASE instead of
* TASK_UNMAPPED_BASE for selecting the address of the executable.
* This provides some distance between the executable and the interpreter,
* which allows the initial brk to be placed immediately after the
* executable and also have room to grow.
*
* task_unmapped_base, elf_et_dyn_base: When the guest address space is
* limited via -R, the values of TASK_UNMAPPED_BASE and ELF_ET_DYN_BASE
* must be adjusted to fit.
*/
extern abi_ulong task_unmapped_base;
extern abi_ulong elf_et_dyn_base;
/*
* mmap_next_start: The base address for the next mmap without hint,