diff --git a/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c b/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
index bab900b6b2b06a64fc7eabcf61257fcdc1d65afb..9e4b146d305d6c6108370ea7b1a5cba920392356 100644
--- a/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
+++ b/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
@@ -820,6 +820,7 @@ extern "C" {
 #define mspace_realloc_in_place       mspace_prefix(mspace_realloc_in_place)
 #define mspace_memalign               mspace_prefix(mspace_memalign)
 #define mspace_aligned_alloc          mspace_prefix(mspace_aligned_alloc)
+#define mspace_posix_memalign         mspace_prefix(mspace_posix_memalign)
 #define mspace_independent_calloc     mspace_prefix(mspace_independent_calloc)
 #define mspace_independent_comalloc   mspace_prefix(mspace_independent_comalloc)
 #define mspace_bulk_free              mspace_prefix(mspace_bulk_free)
@@ -1399,6 +1400,12 @@ DLMALLOC_EXPORT void* mspace_memalign(mspace msp, size_t alignment, size_t bytes
 */
 DLMALLOC_EXPORT void* mspace_aligned_alloc(mspace msp, size_t alignment, size_t bytes);
 
+/*
+  mspace_posix_memalign behaves as posix_memalign, but operates within
+  the given space.
+*/
+DLMALLOC_EXPORT int mspace_posix_memalign(mspace msp, void **pp, size_t alignment, size_t bytes);
+
 /*
   mspace_independent_calloc behaves as independent_calloc, but
   operates within the given space.
@@ -5877,6 +5884,19 @@ void* mspace_aligned_alloc(mspace msp, size_t alignment, size_t bytes) {
   return mspace_aligned_alloc(msp, alignment, bytes);
 }
 
+int mspace_posix_memalign(mspace msp, void **memptr, size_t alignment, size_t bytes) {
+  if (bytes == 0) {
+    *memptr = NULL;
+    return 0;
+  }
+  void *res = mspace_aligned_alloc(msp, alignment, bytes);
+  if (res) {
+    *memptr = res;
+    return 0;
+  }
+  return 1;
+}
+
 void** mspace_independent_calloc(mspace msp, size_t n_elements,
                                  size_t elem_size, void* chunks[]) {
   size_t sz = elem_size; /* serves as 1-element array */