Add --malloc-prefix to apply a prefix to malloc, free etc
authorMåns Rullgård <mans@mansr.com>
Thu, 28 Jan 2010 13:06:31 +0000 (13:06 +0000)
committerMåns Rullgård <mans@mansr.com>
Thu, 28 Jan 2010 13:06:31 +0000 (13:06 +0000)
This makes it easy to use a replacement allocator instead of the
system default one.

Originally committed as revision 21509 to svn://svn.ffmpeg.org/ffmpeg/trunk

configure
libavutil/mem.c

index 28509b4..d6739b7 100755 (executable)
--- a/configure
+++ b/configure
@@ -231,6 +231,7 @@ Advanced options (experts only):
   --disable-vis            disable VIS optimizations
   --disable-yasm           disable use of yasm assembler
   --enable-pic             build position-independent code
+  --malloc-prefix=PFX      prefix malloc and related names with PFX
 
 Developer options (useful when working on FFmpeg itself):
   --disable-debug          disable debugging symbols
@@ -1108,6 +1109,7 @@ CMDLINE_SET="
     host_os
     ld
     logfile
+    malloc_prefix
     nm
     source_path
     sysinclude
@@ -2438,9 +2440,9 @@ check_func  gethrtime
 check_func  getrusage
 check_func  inet_aton $network_extralibs
 check_func  isatty
-check_func  memalign
+check_func  ${malloc_prefix}memalign            && enable memalign
 check_func  mkstemp
-check_func  posix_memalign
+check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
 check_func_headers io.h setmode
 check_func_headers lzo/lzo1x.h lzo1x_999_compress
 check_func_headers windows.h GetProcessTimes
@@ -2978,6 +2980,9 @@ cat > $TMPH <<EOF
 #define EXTERN_ASM ${extern_prefix}
 EOF
 
+test -n "$malloc_prefix" &&
+    echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
+
 if enabled small || disabled optimizations; then
     echo "#define av_always_inline"  >> $TMPH
 fi
index 741450b..4d776d4 100644 (file)
@@ -33,6 +33,7 @@
 #include <malloc.h>
 #endif
 
+#include "avutil.h"
 #include "mem.h"
 
 /* here we can use OS-dependent allocation functions */
 #undef malloc
 #undef realloc
 
+#ifdef MALLOC_PREFIX
+
+#define malloc         AV_JOIN(MALLOC_PREFIX, malloc)
+#define memalign       AV_JOIN(MALLOC_PREFIX, memalign)
+#define posix_memalign AV_JOIN(MALLOC_PREFIX, posix_memalign)
+#define realloc        AV_JOIN(MALLOC_PREFIX, realloc)
+#define free           AV_JOIN(MALLOC_PREFIX, free)
+
+void *malloc(size_t size);
+void *memalign(size_t align, size_t size);
+int   posix_memalign(void **ptr, size_t align, size_t size);
+void *realloc(void *ptr, size_t size);
+void  free(void *ptr);
+
+#endif /* MALLOC_PREFIX */
+
 /* You can redefine av_malloc and av_free in your project to use your
    memory allocator. You do not need to suppress this file because the
    linker will do it automatically. */