summaryrefslogtreecommitdiffstats
path: root/sys/i386/linux/linux_sysvec.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2003-09-25 01:10:26 +0000
committerpeter <peter@FreeBSD.org>2003-09-25 01:10:26 +0000
commit8ecb3577d83113cde0885b76799ccebb323abf8b (patch)
treef89d7e04e53ed33050987a5b51945ab490d9ba4d /sys/i386/linux/linux_sysvec.c
parent100e3b7635a597fd1f017e000172234099e518e9 (diff)
downloadFreeBSD-src-8ecb3577d83113cde0885b76799ccebb323abf8b.zip
FreeBSD-src-8ecb3577d83113cde0885b76799ccebb323abf8b.tar.gz
Add sysentvec->sv_fixlimits() hook so that we can catch cases on 64 bit
systems where the data/stack/etc limits are too big for a 32 bit process. Move the 5 or so identical instances of ELF_RTLD_ADDR() into imgact_elf.c. Supply an ia32_fixlimits function. Export the clip/default values to sysctl under the compat.ia32 heirarchy. Have mmap(0, ...) respect the current p->p_limits[RLIMIT_DATA].rlim_max value rather than the sysctl tweakable variable. This allows mmap to place mappings at sensible locations when limits have been reduced. Have the imgact_elf.c ld-elf.so.1 placement algorithm use the same method as mmap(0, ...) now does. Note that we cannot remove all references to the sysctl tweakable maxdsiz etc variables because /etc/login.conf specifies a datasize of 'unlimited'. And that causes exec etc to fail since it can no longer find space to mmap things.
Diffstat (limited to 'sys/i386/linux/linux_sysvec.c')
-rw-r--r--sys/i386/linux/linux_sysvec.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c
index 0e92296..fc57c1f 100644
--- a/sys/i386/linux/linux_sysvec.c
+++ b/sys/i386/linux/linux_sysvec.c
@@ -860,7 +860,8 @@ struct sysentvec linux_sysvec = {
PS_STRINGS,
VM_PROT_ALL,
exec_copyout_strings,
- exec_linux_setregs
+ exec_linux_setregs,
+ NULL
};
struct sysentvec elf_linux_sysvec = {
@@ -888,7 +889,8 @@ struct sysentvec elf_linux_sysvec = {
PS_STRINGS,
VM_PROT_ALL,
exec_copyout_strings,
- exec_linux_setregs
+ exec_linux_setregs,
+ NULL
};
static Elf32_Brandinfo linux_brand = {
OpenPOWER on IntegriCloud