diff --git a/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c b/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
index d551d8973141f4e69276d9f01887911bf07e417c..bab900b6b2b06a64fc7eabcf61257fcdc1d65afb 100644
--- a/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
+++ b/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
@@ -819,6 +819,7 @@ extern "C" {
 #define mspace_realloc                mspace_prefix(mspace_realloc)
 #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_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)
@@ -848,6 +849,7 @@ extern "C" {
 #define dlmalloc               malloc
 #define dlmemalign             memalign
 #define dlposix_memalign       posix_memalign
+#define dlaligned_alloc        aligned_alloc
 #define dlrealloc              realloc
 #define dlrealloc_in_place     realloc_in_place
 #define dlvalloc               valloc
@@ -962,6 +964,13 @@ DLMALLOC_EXPORT void* dlmemalign(size_t, size_t);
 */
 DLMALLOC_EXPORT int dlposix_memalign(void**, size_t, size_t);
 
+/*
+  aligned_alloc(size_t alignment, size_t size);
+  The function aligned_alloc() is the same as memalign(), except for the added
+  restriction that size should be a multiple of alignment.
+*/
+DLMALLOC_EXPORT void *dlaligned_alloc(size_t alignment, size_t size);
+
 /*
   valloc(size_t n);
   Equivalent to memalign(pagesize, n), where pagesize is the page
@@ -1384,6 +1393,12 @@ DLMALLOC_EXPORT void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_s
 */
 DLMALLOC_EXPORT void* mspace_memalign(mspace msp, size_t alignment, size_t bytes);
 
+/*
+  mspace_aligned_alloc behaves as aligned_alloc, but operates within
+  the given space.
+*/
+DLMALLOC_EXPORT void* mspace_aligned_alloc(mspace msp, size_t alignment, size_t bytes);
+
 /*
   mspace_independent_calloc behaves as independent_calloc, but
   operates within the given space.
@@ -5295,6 +5310,12 @@ void* dlmemalign(size_t alignment, size_t bytes) {
   return internal_memalign(gm, alignment, bytes);
 }
 
+void* dlaligned_alloc(size_t alignment, size_t size) {
+  if (size % alignment)
+    return NULL;
+  return dlmemalign(alignment, size);
+}
+
 int dlposix_memalign(void** pp, size_t alignment, size_t bytes) {
   void* mem = 0;
   if (alignment == MALLOC_ALIGNMENT)
@@ -5850,6 +5871,12 @@ void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) {
   return internal_memalign(ms, alignment, bytes);
 }
 
+void* mspace_aligned_alloc(mspace msp, size_t alignment, size_t bytes) {
+  if (bytes % alignment)
+    return NULL;
+  return mspace_aligned_alloc(msp, alignment, bytes);
+}
+
 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 */