From a32e26b8e9987177ef7573594b2aab2104ca9d3f Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Fri, 5 Jul 2019 21:59:44 -0400 Subject: [PATCH] avoid trying to use mremap outside of Linux --- h_malloc.c | 2 ++ memory.c | 2 ++ memory.h | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/h_malloc.c b/h_malloc.c index 29187bf..e8ffb4f 100644 --- a/h_malloc.c +++ b/h_malloc.c @@ -1416,6 +1416,7 @@ EXPORT void *h_realloc(void *old, size_t size) { return old; } +#ifdef HAVE_COMPATIBLE_MREMAP static const bool vma_merging_reliable = false; if (vma_merging_reliable) { // in-place growth @@ -1465,6 +1466,7 @@ EXPORT void *h_realloc(void *old, size_t size) { thread_seal_metadata(); return new; } +#endif } } diff --git a/memory.c b/memory.c index f0020a3..7c5abb3 100644 --- a/memory.c +++ b/memory.c @@ -68,6 +68,7 @@ int memory_protect_rw_metadata(void *ptr, size_t size) { return memory_protect_prot(ptr, size, PROT_READ|PROT_WRITE, get_metadata_key()); } +#ifdef HAVE_COMPATIBLE_MREMAP int memory_remap(void *old, size_t old_size, size_t new_size) { void *ptr = mremap(old, old_size, new_size, 0); if (unlikely(ptr == MAP_FAILED)) { @@ -89,6 +90,7 @@ int memory_remap_fixed(void *old, size_t old_size, void *new, size_t new_size) { } return 0; } +#endif void memory_set_name(UNUSED void *ptr, UNUSED size_t size, UNUSED const char *name) { #ifdef LABEL_MEMORY diff --git a/memory.h b/memory.h index 3a6decd..fe51546 100644 --- a/memory.h +++ b/memory.h @@ -3,6 +3,10 @@ #include +#ifdef __linux__ +#define HAVE_COMPATIBLE_MREMAP +#endif + int get_metadata_key(void); void *memory_map(size_t size); @@ -11,8 +15,10 @@ int memory_unmap(void *ptr, size_t size); int memory_protect_ro(void *ptr, size_t size); int memory_protect_rw(void *ptr, size_t size); int memory_protect_rw_metadata(void *ptr, size_t size); +#ifdef HAVE_COMPATIBLE_MREMAP int memory_remap(void *old, size_t old_size, size_t new_size); int memory_remap_fixed(void *old, size_t old_size, void *new, size_t new_size); +#endif void memory_set_name(void *ptr, size_t size, const char *name); #endif