3#include <uni20/config.hpp>
8#if defined(__has_feature)
9#if __has_feature(memory_sanitizer)
10#define UNI20_HAS_MEMORY_SANITIZER 1
13#ifndef UNI20_HAS_MEMORY_SANITIZER
14#define UNI20_HAS_MEMORY_SANITIZER 0
17#if UNI20_HAS_MEMORY_SANITIZER
18#include <sanitizer/msan_interface.h>
20#if UNI20_ENABLE_VALGRIND
21#include <valgrind/memcheck.h>
24namespace uni20::detail::memory_diagnostics
30inline void mark_uninitialized(
void* data, std::size_t
bytes)
noexcept
32 if (
bytes == 0)
return;
33#if UNI20_HAS_MEMORY_SANITIZER
34 __msan_allocated_memory(data,
bytes);
36#if UNI20_ENABLE_VALGRIND
37 (void)VALGRIND_MAKE_MEM_UNDEFINED(data,
bytes);
44inline void check_initialized(
void const* data, std::size_t
bytes)
noexcept
46 if (
bytes == 0)
return;
47#if UNI20_HAS_MEMORY_SANITIZER
48 __msan_check_mem_is_initialized(data,
bytes);
50#if UNI20_ENABLE_VALGRIND
51 (void)VALGRIND_CHECK_MEM_IS_DEFINED(data,
bytes);
59inline void mark_initialized(
void* data, std::size_t
bytes)
noexcept
61 if (
bytes == 0)
return;
62#if UNI20_HAS_MEMORY_SANITIZER
63 __msan_unpoison(data,
bytes);
65#if UNI20_ENABLE_VALGRIND
66 (void)VALGRIND_MAKE_MEM_DEFINED(data,
bytes);
std::size_t bytes
Definition presentation.cpp:18