From 67e3c151117e88244d186d15f0bbe12162b14844 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Tue, 29 Oct 2024 03:17:03 +0000 Subject: [PATCH] Fix mmap flags for AOT loader on non-Linux SGX platforms --- core/iwasm/aot/aot_loader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/iwasm/aot/aot_loader.c b/core/iwasm/aot/aot_loader.c index 01e246aa32..c53503be20 100644 --- a/core/iwasm/aot/aot_loader.c +++ b/core/iwasm/aot/aot_loader.c @@ -304,12 +304,13 @@ loader_mmap(uint32 size, bool prot_exec, char *error_buf, uint32 error_buf_size) #if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_AMD_64) \ || defined(BUILD_TARGET_RISCV64_LP64D) \ || defined(BUILD_TARGET_RISCV64_LP64) -#ifndef __APPLE__ +#if !defined(__APPLE__) && !defined(BH_PLATFORM_LINUX_SGX) /* The mmapped AOT data and code in 64-bit targets had better be in range 0 to 2G, or aot loader may fail to apply some relocations, e.g., R_X86_64_32/R_X86_64_32S/R_X86_64_PC32/R_RISCV_32. We try to mmap with MMAP_MAP_32BIT flag first, and if fails, mmap again without the flag. */ + /* sgx_tprotect_rsrv_mem() and sgx_alloc_rsrv_mem() will ignore flags */ map_flags = MMAP_MAP_32BIT; if ((mem = os_mmap(NULL, size, map_prot, map_flags, os_get_invalid_handle()))) {