From b2ae7be654f0658215483577d03f6cc2f42328cc Mon Sep 17 00:00:00 2001 From: flysand7 Date: Tue, 1 Aug 2023 02:29:44 +1100 Subject: [PATCH] Fix forgot to pass MAP_PRIVATE flag to mmap --- src/linux/syscall.c | 4 ++++ src/linux/tinyrt.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/linux/syscall.c b/src/linux/syscall.c index 6ada8b8..9d1058e 100644 --- a/src/linux/syscall.c +++ b/src/linux/syscall.c @@ -35,11 +35,15 @@ #define _SYS_PROT_NONE 0x0 #define _SYS_PROT_GROWSDOWN 0x01000000 #define _SYS_PROT_GROWSUP 0x02000000 +#define _SYS_MAP_SHARED 0x01 +#define _SYS_MAP_PRIVATE 0x02 +#define _SYS_MAP_SHARED_VALIDATE 0x03 #define _SYS_MAP_FILE 0 #define _SYS_MAP_ANONYMOUS 0x20 #define _SYS_MAP_32BIT 0x40 #define _SYS_MAP_FAILED (void *)() + #define _SYSCALL_read 0 #define _SYSCALL_write 1 #define _SYSCALL_open 2 diff --git a/src/linux/tinyrt.c b/src/linux/tinyrt.c index 98c46c2..e0235e1 100644 --- a/src/linux/tinyrt.c +++ b/src/linux/tinyrt.c @@ -70,7 +70,7 @@ _Noreturn static void _rt_program_exit(int code) { } static _RT_Status _rt_mem_alloc(void *optional_desired_addr, u64 size, void **out_addr) { - void *addr = _syscall_mmap((u64)optional_desired_addr, size, _SYS_PROT_READ|_SYS_PROT_WRITE, _SYS_MAP_ANONYMOUS, -1, 0); + void *addr = _syscall_mmap((u64)optional_desired_addr, size, _SYS_PROT_READ|_SYS_PROT_WRITE, _SYS_MAP_PRIVATE|_SYS_MAP_ANONYMOUS, -1, 0); if(addr == NULL) { return _RT_ERROR_GENERIC; }