-extern char *wimlib_strdup(const char *str);
-# define MALLOC wimlib_malloc_func
-# define FREE wimlib_free_func
-# define REALLOC wimlib_realloc_func
-# define CALLOC wimlib_calloc
-# define STRDUP wimlib_strdup
-# define WSTRDUP wimlib_wcsdup
-#else /* ENABLE_CUSTOM_MEMORY_ALLOCATOR */
-# include <stdlib.h>
-# include <string.h>
-# define MALLOC malloc
-# define FREE free
-# define REALLOC realloc
-# define CALLOC calloc
-# define STRDUP strdup
-# define WSTRDUP wcsdup
-#endif /* !ENABLE_CUSTOM_MEMORY_ALLOCATOR */
-
-
-/* util.c */
+extern char *
+wimlib_strdup(const char *str) _malloc_attribute;
+
+extern void *
+wimlib_aligned_malloc(size_t size, size_t alignment) _malloc_attribute;
+
+extern void
+wimlib_aligned_free(void *ptr);
+
+#define MALLOC wimlib_malloc
+#define FREE wimlib_free_memory
+#define REALLOC wimlib_realloc
+#define CALLOC wimlib_calloc
+#define STRDUP wimlib_strdup
+#define WCSDUP wimlib_wcsdup
+#define ALIGNED_MALLOC wimlib_aligned_malloc
+#define ALIGNED_FREE wimlib_aligned_free
+
+extern void *
+memdup(const void *mem, size_t size) _malloc_attribute;
+
+#ifndef HAVE_MEMPCPY
+extern void *
+mempcpy(void *dst, const void *src, size_t n);
+#endif
+
+extern size_t
+utf16le_strlen(const utf16lechar *s);
+