svn commit: r356948 - head/sys/compat/linux
Edward Tomasz Napierala
trasz at FreeBSD.org
Tue Jan 21 19:19:03 UTC 2020
Author: trasz
Date: Tue Jan 21 19:19:02 2020
New Revision: 356948
URL: https://svnweb.freebsd.org/changeset/base/356948
Log:
Make linux(4) handle MAP_32BIT.
This unbreaks Mono (mono-devel-4.6.2.7+dfsg-1ubuntu1 from Ubuntu Bionic);
previously would crash on "amd64_is_imm32" assert.
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/compat/linux/linux_mmap.c
head/sys/compat/linux/linux_mmap.h
Modified: head/sys/compat/linux/linux_mmap.c
==============================================================================
--- head/sys/compat/linux/linux_mmap.c Tue Jan 21 17:45:49 2020 (r356947)
+++ head/sys/compat/linux/linux_mmap.c Tue Jan 21 19:19:02 2020 (r356948)
@@ -114,6 +114,13 @@ linux_mmap_common(struct thread *td, uintptr_t addr, s
bsd_flags |= MAP_STACK;
/*
+ * According to the Linux mmap(2) man page, "MAP_32BIT flag
+ * is ignored when MAP_FIXED is set."
+ */
+ if ((flags & LINUX_MAP_32BIT) && (flags & LINUX_MAP_FIXED) == 0)
+ bsd_flags |= MAP_32BIT;
+
+ /*
* PROT_READ, PROT_WRITE, or PROT_EXEC implies PROT_READ and PROT_EXEC
* on Linux/i386 if the binary requires executable stack.
* We do this only for IA32 emulation as on native i386 this is does not
Modified: head/sys/compat/linux/linux_mmap.h
==============================================================================
--- head/sys/compat/linux/linux_mmap.h Tue Jan 21 17:45:49 2020 (r356947)
+++ head/sys/compat/linux/linux_mmap.h Tue Jan 21 19:19:02 2020 (r356948)
@@ -39,6 +39,7 @@
#define LINUX_MAP_PRIVATE 0x0002
#define LINUX_MAP_FIXED 0x0010
#define LINUX_MAP_ANON 0x0020
+#define LINUX_MAP_32BIT 0x0040
#define LINUX_MAP_GROWSDOWN 0x0100
#define LINUX_PROT_GROWSDOWN 0x01000000
More information about the svn-src-head
mailing list