i386: move hard-coded load address for PIE below default linker base

both for i386 native and compat32 amd64.  We know the ld-elf.so.1 size
in advance, it fits there.  Trying to push it up after the end of a
binary cannot work reliably and eventually fail for large binaries.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D37085
This commit is contained in:
Konstantin Belousov 2022-10-22 23:03:17 +03:00
parent ca18304ea4
commit 5f00525dfc

View file

@ -89,7 +89,7 @@ __ElfType(Auxinfo);
#define ELF_TARG_MACH EM_386
#define ELF_TARG_VER 1
#define ET_DYN_LOAD_ADDR 0x01001000
#define ET_DYN_LOAD_ADDR 0x00002000
#elif defined(__amd64__)
@ -150,7 +150,7 @@ __ElfType(Auxinfo);
#define ELF_TARG_VER 1
#if __ELF_WORD_SIZE == 32
#define ET_DYN_LOAD_ADDR 0x01001000
#define ET_DYN_LOAD_ADDR 0x00002000
#else
#define ET_DYN_LOAD_ADDR 0x01021000
#endif