diff --git a/files/patches/mono-linux-disable-mmap-MAP_32BIT.diff b/files/patches/mono-linux-disable-mmap-MAP_32BIT.diff new file mode 100644 index 0000000..aab4d40 --- /dev/null +++ b/files/patches/mono-linux-disable-mmap-MAP_32BIT.diff @@ -0,0 +1,47 @@ +From e019d4ac4735e774d0a3c15bb36d5eb3ebfa3053 Mon Sep 17 00:00:00 2001 +From: Raphael Robatsch +Date: Tue, 9 May 2023 11:55:02 +0200 +Subject: [PATCH] Disable mmap(MAP_32BIT) support + +mmap(2) with flag MAP_32BIT can erroneously return ENOMEM on recent +kernels. Disable MAP_32BIT support for now. + +Reference: https://lore.kernel.org/linux-mm/cb8dc31a-fef2-1d09-f133-e9f7b9f9e77a@sony.com/ +Reference: https://lore.kernel.org/all/20230414185919.4175572-1-Liam.Howlett@oracle.com/T/#m00a0ac8a72bf2f26711b7f8cc56612a8ef62c3d0 +--- + mono/mini/mini-amd64.h | 2 -- + mono/utils/mono-codeman.c | 4 ---- + 2 files changed, 6 deletions(-) + +diff --git a/mono/mini/mini-amd64.h b/mono/mini/mini-amd64.h +index b321743b67d..0a81bb4bd6b 100644 +--- a/mono/mini/mini-amd64.h ++++ b/mono/mini/mini-amd64.h +@@ -390,9 +390,7 @@ typedef struct { + + #endif /* !HOST_WIN32 */ + +-#if !defined(__linux__) + #define MONO_ARCH_NOMAP32BIT 1 +-#endif + + #ifdef TARGET_WIN32 + #define MONO_AMD64_ARG_REG1 AMD64_RCX +diff --git a/mono/utils/mono-codeman.c b/mono/utils/mono-codeman.c +index 234aac4b0ca..5eccda92bd0 100644 +--- a/mono/utils/mono-codeman.c ++++ b/mono/utils/mono-codeman.c +@@ -68,11 +68,7 @@ static const MonoCodeManagerCallbacks *code_manager_callbacks; + #define MAX_WASTAGE 32 + #define MIN_BSIZE 32 + +-#ifdef __x86_64__ +-#define ARCH_MAP_FLAGS MONO_MMAP_32BIT +-#else + #define ARCH_MAP_FLAGS 0 +-#endif + + #define MONO_PROT_RWX (MONO_MMAP_READ|MONO_MMAP_WRITE|MONO_MMAP_EXEC|MONO_MMAP_JIT) + +-- +2.40.1 diff --git a/patch_mono.py b/patch_mono.py index eaae806..affe7c3 100755 --- a/patch_mono.py +++ b/patch_mono.py @@ -35,6 +35,7 @@ def main(raw_args): 'btls-cmake-args-linux-mingw.diff', 'btls-cmake-arm64.diff', 'xcode_13_14_fix.diff', + 'mono-linux-disable-mmap-MAP_32BIT.diff', ] if os.path.isfile(os.path.join(mono_source_root, 'mono/tools/offsets-tool/offsets-tool.py')):