improve ASAN instrumentation: InnoDB/XtraDB
This commit is contained in:
parent
d9c460b84e
commit
03eb15933d
@ -162,7 +162,7 @@ command. Not tested on Windows. */
|
|||||||
#define UNIV_COMPILE_TEST_FUNCS
|
#define UNIV_COMPILE_TEST_FUNCS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H)
|
#if defined(HAVE_VALGRIND) && defined(HAVE_valgrind)
|
||||||
# define UNIV_DEBUG_VALGRIND
|
# define UNIV_DEBUG_VALGRIND
|
||||||
#endif /* HAVE_VALGRIND */
|
#endif /* HAVE_VALGRIND */
|
||||||
#if 0
|
#if 0
|
||||||
@ -497,12 +497,17 @@ typedef void* os_thread_ret_t;
|
|||||||
#include "ut0dbg.h"
|
#include "ut0dbg.h"
|
||||||
#include "ut0ut.h"
|
#include "ut0ut.h"
|
||||||
#include "db0err.h"
|
#include "db0err.h"
|
||||||
|
|
||||||
|
#include <my_valgrind.h>
|
||||||
|
/* define UNIV macros in terms of my_valgrind.h */
|
||||||
|
# define UNIV_MEM_INVALID(addr, size) MEM_UNDEFINED(addr, size)
|
||||||
|
# define UNIV_MEM_FREE(addr, size) MEM_NOACCESS(addr, size)
|
||||||
|
# define UNIV_MEM_ALLOC(addr, size) UNIV_MEM_INVALID(addr, size)
|
||||||
|
|
||||||
|
/* macros below cannot be defined in terms of my_valgrind.h */
|
||||||
#ifdef UNIV_DEBUG_VALGRIND
|
#ifdef UNIV_DEBUG_VALGRIND
|
||||||
# include <valgrind/memcheck.h>
|
# include <valgrind/memcheck.h>
|
||||||
# define UNIV_MEM_VALID(addr, size) VALGRIND_MAKE_MEM_DEFINED(addr, size)
|
# define UNIV_MEM_VALID(addr, size) VALGRIND_MAKE_MEM_DEFINED(addr, size)
|
||||||
# define UNIV_MEM_INVALID(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size)
|
|
||||||
# define UNIV_MEM_FREE(addr, size) VALGRIND_MAKE_MEM_NOACCESS(addr, size)
|
|
||||||
# define UNIV_MEM_ALLOC(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size)
|
|
||||||
# define UNIV_MEM_DESC(addr, size, b) VALGRIND_CREATE_BLOCK(addr, size, b)
|
# define UNIV_MEM_DESC(addr, size, b) VALGRIND_CREATE_BLOCK(addr, size, b)
|
||||||
# define UNIV_MEM_UNDESC(b) VALGRIND_DISCARD(b)
|
# define UNIV_MEM_UNDESC(b) VALGRIND_DISCARD(b)
|
||||||
# define UNIV_MEM_ASSERT_RW(addr, size) do { \
|
# define UNIV_MEM_ASSERT_RW(addr, size) do { \
|
||||||
@ -525,14 +530,12 @@ typedef void* os_thread_ret_t;
|
|||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
# define UNIV_MEM_VALID(addr, size) do {} while(0)
|
# define UNIV_MEM_VALID(addr, size) do {} while(0)
|
||||||
# define UNIV_MEM_INVALID(addr, size) do {} while(0)
|
|
||||||
# define UNIV_MEM_FREE(addr, size) do {} while(0)
|
|
||||||
# define UNIV_MEM_ALLOC(addr, size) do {} while(0)
|
|
||||||
# define UNIV_MEM_DESC(addr, size, b) do {} while(0)
|
# define UNIV_MEM_DESC(addr, size, b) do {} while(0)
|
||||||
# define UNIV_MEM_UNDESC(b) do {} while(0)
|
# define UNIV_MEM_UNDESC(b) do {} while(0)
|
||||||
# define UNIV_MEM_ASSERT_RW(addr, size) do {} while(0)
|
# define UNIV_MEM_ASSERT_RW(addr, size) do {} while(0)
|
||||||
# define UNIV_MEM_ASSERT_W(addr, size) do {} while(0)
|
# define UNIV_MEM_ASSERT_W(addr, size) do {} while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define UNIV_MEM_ASSERT_AND_FREE(addr, size) do { \
|
#define UNIV_MEM_ASSERT_AND_FREE(addr, size) do { \
|
||||||
UNIV_MEM_ASSERT_W(addr, size); \
|
UNIV_MEM_ASSERT_W(addr, size); \
|
||||||
UNIV_MEM_FREE(addr, size); \
|
UNIV_MEM_FREE(addr, size); \
|
||||||
|
@ -170,7 +170,7 @@ command. Not tested on Windows. */
|
|||||||
#define UNIV_COMPILE_TEST_FUNCS
|
#define UNIV_COMPILE_TEST_FUNCS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H)
|
#if defined(HAVE_VALGRIND) && defined(HAVE_valgrind)
|
||||||
# define UNIV_DEBUG_VALGRIND
|
# define UNIV_DEBUG_VALGRIND
|
||||||
#endif
|
#endif
|
||||||
#if 0
|
#if 0
|
||||||
@ -511,12 +511,17 @@ typedef void* os_thread_ret_t;
|
|||||||
#include "ut0dbg.h"
|
#include "ut0dbg.h"
|
||||||
#include "ut0ut.h"
|
#include "ut0ut.h"
|
||||||
#include "db0err.h"
|
#include "db0err.h"
|
||||||
|
|
||||||
|
#include <my_valgrind.h>
|
||||||
|
/* define UNIV macros in terms of my_valgrind.h */
|
||||||
|
# define UNIV_MEM_INVALID(addr, size) MEM_UNDEFINED(addr, size)
|
||||||
|
# define UNIV_MEM_FREE(addr, size) MEM_NOACCESS(addr, size)
|
||||||
|
# define UNIV_MEM_ALLOC(addr, size) UNIV_MEM_INVALID(addr, size)
|
||||||
|
|
||||||
|
/* macros below cannot be defined in terms of my_valgrind.h */
|
||||||
#ifdef UNIV_DEBUG_VALGRIND
|
#ifdef UNIV_DEBUG_VALGRIND
|
||||||
# include <valgrind/memcheck.h>
|
# include <valgrind/memcheck.h>
|
||||||
# define UNIV_MEM_VALID(addr, size) VALGRIND_MAKE_MEM_DEFINED(addr, size)
|
# define UNIV_MEM_VALID(addr, size) VALGRIND_MAKE_MEM_DEFINED(addr, size)
|
||||||
# define UNIV_MEM_INVALID(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size)
|
|
||||||
# define UNIV_MEM_FREE(addr, size) VALGRIND_MAKE_MEM_NOACCESS(addr, size)
|
|
||||||
# define UNIV_MEM_ALLOC(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size)
|
|
||||||
# define UNIV_MEM_DESC(addr, size, b) VALGRIND_CREATE_BLOCK(addr, size, b)
|
# define UNIV_MEM_DESC(addr, size, b) VALGRIND_CREATE_BLOCK(addr, size, b)
|
||||||
# define UNIV_MEM_UNDESC(b) VALGRIND_DISCARD(b)
|
# define UNIV_MEM_UNDESC(b) VALGRIND_DISCARD(b)
|
||||||
# define UNIV_MEM_ASSERT_RW(addr, size) do { \
|
# define UNIV_MEM_ASSERT_RW(addr, size) do { \
|
||||||
@ -539,9 +544,6 @@ typedef void* os_thread_ret_t;
|
|||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
# define UNIV_MEM_VALID(addr, size) do {} while(0)
|
# define UNIV_MEM_VALID(addr, size) do {} while(0)
|
||||||
# define UNIV_MEM_INVALID(addr, size) do {} while(0)
|
|
||||||
# define UNIV_MEM_FREE(addr, size) do {} while(0)
|
|
||||||
# define UNIV_MEM_ALLOC(addr, size) do {} while(0)
|
|
||||||
# define UNIV_MEM_DESC(addr, size, b) do {} while(0)
|
# define UNIV_MEM_DESC(addr, size, b) do {} while(0)
|
||||||
# define UNIV_MEM_UNDESC(b) do {} while(0)
|
# define UNIV_MEM_UNDESC(b) do {} while(0)
|
||||||
# define UNIV_MEM_ASSERT_RW(addr, size) do {} while(0)
|
# define UNIV_MEM_ASSERT_RW(addr, size) do {} while(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user