1/*-------------------------------------------------------------------------
4 * Memory debugging support.
6 * Currently, this file either wraps <valgrind/memcheck.h> or substitutes
7 * empty definitions for Valgrind client request macros we use.
10 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
11 * Portions Copyright (c) 1994, Regents of the University of California
13 * src/include/utils/memdebug.h
15 *-------------------------------------------------------------------------
21#include <valgrind/memcheck.h>
23 #define VALGRIND_CHECK_MEM_IS_DEFINED(addr, size) do {} while (0)
24 #define VALGRIND_CREATE_MEMPOOL(context, redzones, zeroed) do {} while (0)
25 #define VALGRIND_DESTROY_MEMPOOL(context) do {} while (0)
26 #define VALGRIND_MAKE_MEM_DEFINED(addr, size) do {} while (0)
27 #define VALGRIND_MAKE_MEM_NOACCESS(addr, size) do {} while (0)
28 #define VALGRIND_MAKE_MEM_UNDEFINED(addr, size) do {} while (0)
29 #define VALGRIND_MEMPOOL_ALLOC(context, addr, size) do {} while (0)
30 #define VALGRIND_MEMPOOL_FREE(context, addr) do {} while (0)
31 #define VALGRIND_MEMPOOL_CHANGE(context, optr, nptr, size) do {} while (0)
32 #define VALGRIND_MEMPOOL_TRIM(context, addr, size) do {} while (0)
36#ifdef CLOBBER_FREED_MEMORY
38/* Wipe freed memory for debugging purposes */
40wipe_mem(
void *ptr,
size_t size)
43 memset(ptr, 0x7F, size);
47#endif /* CLOBBER_FREED_MEMORY */
49#ifdef MEMORY_CONTEXT_CHECKING
52set_sentinel(
void *base,
Size offset)
54 char *ptr = (
char *) base + offset;
62sentinel_ok(
const void *base,
Size offset)
64 const char *ptr = (
const char *) base + offset;
74#endif /* MEMORY_CONTEXT_CHECKING */
76#ifdef RANDOMIZE_ALLOCATED_MEMORY
78void randomize_mem(
char *ptr,
size_t size);
80#endif /* RANDOMIZE_ALLOCATED_MEMORY */
83#endif /* MEMDEBUG_H */
#define VALGRIND_MAKE_MEM_DEFINED(addr, size)
#define VALGRIND_MAKE_MEM_NOACCESS(addr, size)
#define VALGRIND_MAKE_MEM_UNDEFINED(addr, size)