blob: 4dc4a171f8bb7b8c4f1ad1c8c52e6168d17b8b05 [file] [log] [blame]
/**
* This file contains wrapper functions for macro-defined valgrind routines.
*
* Copyright: Copyright: Copyright (C) D Language Foundation 2023
* License: Distributed under the
* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
* (See accompanying file LICENSE)
* Source: $(DRUNTIMESRC etc/valgrind/valgrind.c)
*/
/* NOTE: This file has been patched from the original DMD distribution to
* work with the GDC compiler.
*/
#include "config.h"
#ifdef ENABLE_VALGRIND_CHECKING
#ifdef HAVE_STDDEF_H
# include <stddef.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_VALGRIND_MEMCHECK_H
# include <valgrind/memcheck.h>
#elif defined HAVE_MEMCHECK_H
# include <memcheck.h>
#else
# include <valgrind.h>
#endif
#ifndef VALGRIND_MAKE_MEM_NOACCESS
# define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS
#endif
#ifndef VALGRIND_MAKE_MEM_UNDEFINED
# define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE
#endif
#ifndef VALGRIND_MAKE_MEM_DEFINED
# define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE
#endif
#ifndef VALGRIND_GET_VBITS
# define VALGRIND_GET_VBITS(a,b,l) 0
#endif
#ifndef VALGRIND_SET_VBITS
# define VALGRIND_SET_VBITS(a,b,l) 0
#endif
#ifndef VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE
# define VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(a,l)
#endif
#ifndef VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE
# define VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE(a,l)
#endif
#define MAYBE_UNUSED __attribute__((unused))
void _d_valgrind_make_mem_noaccess(const void* addr, size_t len)
{
VALGRIND_DISCARD(VALGRIND_MAKE_MEM_NOACCESS(addr, len));
}
void _d_valgrind_make_mem_undefined(const void* addr, size_t len)
{
VALGRIND_DISCARD(VALGRIND_MAKE_MEM_UNDEFINED(addr, len));
}
void _d_valgrind_make_mem_defined(const void* addr, size_t len)
{
VALGRIND_DISCARD(VALGRIND_MAKE_MEM_DEFINED(addr, len));
}
unsigned _d_valgrind_get_vbits(const void* addr MAYBE_UNUSED,
char* bits MAYBE_UNUSED,
size_t len MAYBE_UNUSED)
{
return VALGRIND_GET_VBITS(addr, bits, len);
}
unsigned _d_valgrind_set_vbits(const void* addr MAYBE_UNUSED,
char* bits MAYBE_UNUSED,
size_t len MAYBE_UNUSED)
{
return VALGRIND_SET_VBITS(addr, bits, len);
}
void _d_valgrind_disable_addr_reporting_in_range(const void* addr MAYBE_UNUSED,
size_t len MAYBE_UNUSED)
{
VALGRIND_DISCARD(VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(addr, len));
}
void _d_valgrind_enable_addr_reporting_in_range(const void* addr MAYBE_UNUSED,
size_t len MAYBE_UNUSED)
{
VALGRIND_DISCARD(VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE(addr, len));
}
#endif /* ENABLE_VALGRIND_CHECKING */