From: amosjeffries <> Date: Mon, 25 Feb 2008 10:41:38 +0000 (+0000) Subject: Author: hno X-Git-Tag: SQUID_3_0_STABLE2~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=170d056f973ccf1acce8413772fb22370db029c8;p=thirdparty%2Fsquid.git Author: hno Bug #2175: Update valgrind support for valgrind-3.3.0 Valgrind memcheck rearranged the names of it's support macros in version 3.2.0 to better represent the actual function, and now the old names has been removed starting with version 3.3.0 causing build a failure if --with-valgrind-debug is used. this patch updates Squid to use the new valgrind macro names, and adds a little glue to be compatible with older valgrind versions --- diff --git a/include/config.h b/include/config.h index c468320310..a72ec50b5e 100644 --- a/include/config.h +++ b/include/config.h @@ -1,5 +1,5 @@ /* - * $Id: config.h,v 1.25 2007/09/20 11:07:53 amosjeffries Exp $ + * $Id: config.h,v 1.25.2.1 2008/02/25 03:41:38 amosjeffries Exp $ * * AUTHOR: Duane Wessels * @@ -440,12 +440,22 @@ typedef union { */ #if WITH_VALGRIND #include +#undef VALGRIND_MAKE_NOACCESS +#undef VALGRIND_MAKE_WRITABLE +#undef VALGRIND_MAKE_READABLE +/* A little glue for older valgrind version prior to 3.2.0 */ +#ifndef VALGRIND_MAKE_MEM_NOACCESS +#define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS +#define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE +#define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE +#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE VALGRIND_CHECK_WRITABLE +#endif #else -#define VALGRIND_MAKE_NOACCESS(a,b) (0) -#define VALGRIND_MAKE_WRITABLE(a,b) (0) -#define VALGRIND_MAKE_READABLE(a,b) (0) -#define VALGRIND_CHECK_WRITABLE(a,b) (0) -#define VALGRIND_CHECK_READABLE(a,b) (0) +#define VALGRIND_MAKE_MEM_NOACCESS(a,b) (0) +#define VALGRIND_MAKE_MEM_UNDEFINED(a,b) (0) +#define VALGRIND_MAKE_MEM_DEFINED(a,b) (0) +#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,b) (0) +#define VALGRIND_CHECK_MEM_IS_DEFINED(a,b) (0) #define VALGRIND_MALLOCLIKE_BLOCK(a,b,c,d) #define VALGRIND_FREELIKE_BLOCK(a,b) #define RUNNING_ON_VALGRIND 0 diff --git a/lib/MemPool.cc b/lib/MemPool.cc index 2c660f71da..7f550d2e66 100644 --- a/lib/MemPool.cc +++ b/lib/MemPool.cc @@ -1,6 +1,6 @@ /* - * $Id: MemPool.cc,v 1.10 2007/11/13 23:25:33 rousskov Exp $ + * $Id: MemPool.cc,v 1.10.2.1 2008/02/25 03:41:39 amosjeffries Exp $ * * DEBUG: section 63 Low Level Memory Pool Management * AUTHOR: Alex Rousskov, Andres Kroonmaa, Robert Collins @@ -211,7 +211,7 @@ MemChunk::MemChunk(MemPool *aPool) for (int i = 1; i < pool->chunk_capacity; i++) { *Free = (void *) ((char *) Free + pool->obj_size); void **nextFree = (void **)*Free; - (void) VALGRIND_MAKE_NOACCESS(Free, pool->obj_size); + (void) VALGRIND_MAKE_MEM_NOACCESS(Free, pool->obj_size); Free = nextFree; } nextFreeChunk = pool->nextFreeChunk; @@ -277,7 +277,7 @@ MemPool::push(void *obj) Free = (void **)obj; *Free = freeCache; freeCache = obj; - (void) VALGRIND_MAKE_NOACCESS(obj, obj_size); + (void) VALGRIND_MAKE_MEM_NOACCESS(obj, obj_size); } /* @@ -294,7 +294,7 @@ MemPool::get() /* first, try cache */ if (freeCache) { Free = (void **)freeCache; - (void) VALGRIND_MAKE_READABLE(Free, obj_size); + (void) VALGRIND_MAKE_MEM_DEFINED(Free, obj_size); freeCache = *Free; *Free = NULL; return Free; @@ -317,7 +317,7 @@ MemPool::get() /* last free in this chunk, so remove us from perchunk freelist chain */ nextFreeChunk = chunk->nextFreeChunk; } - (void) VALGRIND_MAKE_READABLE(Free, obj_size); + (void) VALGRIND_MAKE_MEM_DEFINED(Free, obj_size); return Free; } @@ -557,7 +557,7 @@ void MemImplementingAllocator::free(void *obj) { assert(obj != NULL); - (void) VALGRIND_CHECK_WRITABLE(obj, obj_size); + (void) VALGRIND_CHECK_MEM_IS_ADDRESSABLE(obj, obj_size); deallocate(obj); ++free_calls; } @@ -602,10 +602,10 @@ MemPool::convertFreeCacheToChunkFreeCache() assert(splayLastResult == 0); assert(chunk->inuse_count > 0); chunk->inuse_count--; - (void) VALGRIND_MAKE_READABLE(Free, sizeof(void *)); + (void) VALGRIND_MAKE_MEM_DEFINED(Free, sizeof(void *)); freeCache = *(void **)Free; /* remove from global cache */ *(void **)Free = chunk->freeList; /* stuff into chunks freelist */ - (void) VALGRIND_MAKE_NOACCESS(Free, sizeof(void *)); + (void) VALGRIND_MAKE_MEM_NOACCESS(Free, sizeof(void *)); chunk->freeList = Free; chunk->lastref = squid_curtime; }