added extra valgrind checks for the Speex stack
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Thu, 12 Feb 2004 08:30:16 +0000 (08:30 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Thu, 12 Feb 2004 08:30:16 +0000 (08:30 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@5819 0101bb08-14d6-0310-b084-bc0e0c8e3800

configure.in
libspeex/nb_celp.c
libspeex/stack_alloc.h

index 8792d0d..8b9463a 100644 (file)
@@ -32,7 +32,7 @@ AC_C_INLINE
 AC_CHECK_HEADERS(sys/soundcard.h sys/audioio.h)
 
 AC_ARG_ENABLE(ogg,
-      [  --enable-ogg=[yes/no]    Turn on or off the use of ogg
+      [  --enable-ogg=[yes/no]     Turn on or off the use of ogg
 libraries [default=yes]],
       [case "${enableval}" in
         yes) useogg=true ;;
@@ -56,12 +56,13 @@ AC_CHECK_LIB(gnugetopt, getopt_long)
 
 AC_DEFINE_UNQUOTED(VERSION, "${VERSION}")
 
-AC_ARG_ENABLE(sse, [  --enable-sse             enable SSE support], [if test "$enableval" = yes; then AC_DEFINE(_USE_SSE) fi])
-AC_ARG_ENABLE(fixed-point, [  --enable-fixed-point             compile as fixed-point], [if test "$enableval" = yes; then AC_DEFINE(FIXED_POINT) fi])
-AC_ARG_ENABLE(arm-asm, [  --enable-arm-asm             make use of ARM assembly instructions], [if test "$enableval" = yes; then AC_DEFINE(ARM_ASM) fi])
-AC_ARG_ENABLE(fixed-point-debug, [  --enable-fixed-point-debug             Debug fixed-point implementation], [if test "$enableval" = yes; then AC_DEFINE(FIXED_DEBUG) fi])
+AC_ARG_ENABLE(valgrind, [  --enable-valgrind       enable valgrind extra checks], [if test "$enableval" = yes; then AC_DEFINE(ENABLE_VALGRIND) fi])
+AC_ARG_ENABLE(sse, [  --enable-sse            enable SSE support], [if test "$enableval" = yes; then AC_DEFINE(_USE_SSE) fi])
+AC_ARG_ENABLE(fixed-point, [  --enable-fixed-point    compile as fixed-point], [if test "$enableval" = yes; then AC_DEFINE(FIXED_POINT) fi])
+AC_ARG_ENABLE(arm-asm, [  --enable-arm-asm        make use of ARM assembly instructions], [if test "$enableval" = yes; then AC_DEFINE(ARM_ASM) fi])
+AC_ARG_ENABLE(fixed-point-debug, [  --enable-fixed-point-debug  Debug fixed-point implementation], [if test "$enableval" = yes; then AC_DEFINE(FIXED_DEBUG) fi])
 
-AC_ARG_ENABLE(epic-48k, [  --enable-epic-48k             enable support for epic 4.8 kbps mode], [if test "$enableval" = yes; then AC_DEFINE(EPIC_48K) fi])
+AC_ARG_ENABLE(epic-48k, [  --enable-epic-48k       enable support for Epic 4.8 kbps mode], [if test "$enableval" = yes; then AC_DEFINE(EPIC_48K) fi])
 
 dnl Output the makefiles and version.h.
 
index 1a7f870..775bf6d 100644 (file)
@@ -198,6 +198,9 @@ void *nb_encoder_init(const SpeexMode *m)
    st->sampling_rate=8000;
    st->dtx_count=0;
 
+#ifdef ENABLE_VALGRIND
+   VALGRIND_MAKE_READABLE(st, (st->stack-(char*)st));
+#endif
    return st;
 }
 
@@ -1005,6 +1008,9 @@ void *nb_decoder_init(const SpeexMode *m)
    st->voc_m1=st->voc_m2=st->voc_mean=0;
    st->voc_offset=0;
    st->dtx_enabled=0;
+#ifdef ENABLE_VALGRIND
+   VALGRIND_MAKE_READABLE(st, (st->stack-(char*)st));
+#endif
    return st;
 }
 
index 6e36fe6..4f711a9 100644 (file)
 #ifndef STACK_ALLOC_H
 #define STACK_ALLOC_H
 
+#ifdef ENABLE_VALGRIND
+
+#include <valgrind/memcheck.h>
+/*Aligns the stack to a 'size' boundary */
+#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
+
+/* Allocates 'size' elements of type 'type' on the stack */
+#define PUSH(stack, size, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(type)),VALGRIND_MAKE_WRITABLE(stack, ((size)*sizeof(type))),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
+
+/* Allocates a struct stack */
+#define PUSHS(stack, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(long)),VALGRIND_MAKE_WRITABLE(stack, (sizeof(type))),(stack)+=(sizeof(type)),(type*)((stack)-(sizeof(type))))
+
+#else
+
+
 /*Aligns the stack to a 'size' boundary */
 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
 
@@ -43,5 +58,8 @@
 /* Allocates a struct stack */
 #define PUSHS(stack, type) (ALIGN((stack),sizeof(long)),(stack)+=(sizeof(type)),(type*)((stack)-(sizeof(type))))
 
+#endif
+
+
 
 #endif