/** * 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 #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_VALGRIND_MEMCHECK_H # include #elif defined HAVE_MEMCHECK_H # include #else # include #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 */