#ifndef MSAN_INTERFACE_H
#define MSAN_INTERFACE_H
#include <sanitizer/common_interface_defs.h>
#ifdef __cplusplus
extern "C" {
#endif
void SANITIZER_CDECL __msan_set_origin(const volatile void *a, size_t size,
uint32_t origin);
uint32_t SANITIZER_CDECL __msan_get_origin(const volatile void *a);
* "descendant" here means they are part of the same chain, created with
* __msan_chain_origin. */
int SANITIZER_CDECL __msan_origin_is_descendant_or_same(uint32_t this_id,
uint32_t prev_id);
int SANITIZER_CDECL __msan_get_track_origins(void);
uint32_t SANITIZER_CDECL __msan_get_umr_origin(void);
void SANITIZER_CDECL __msan_unpoison(const volatile void *a, size_t size);
contents). */
void SANITIZER_CDECL __msan_unpoison_string(const volatile char *a);
void SANITIZER_CDECL __msan_unpoison_param(size_t n);
This is a legacy interface that does not update origin information. Use
__msan_allocated_memory() instead. */
void SANITIZER_CDECL __msan_poison(const volatile void *a, size_t size);
*/
void SANITIZER_CDECL __msan_partial_poison(const volatile void *data,
void *shadow, size_t size);
memory range, or -1 if the whole range is good. */
intptr_t SANITIZER_CDECL __msan_test_shadow(const volatile void *x,
size_t size);
* is not. */
void SANITIZER_CDECL __msan_check_mem_is_initialized(const volatile void *x,
size_t size);
__msan_set_expect_umr(1);
... some buggy code ...
__msan_set_expect_umr(0);
The last line will verify that a UMR happened. */
void SANITIZER_CDECL __msan_set_expect_umr(int expect_umr);
program execution when an error is detected. This will not affect error in
modules that were compiled without the corresponding compiler flag. */
void SANITIZER_CDECL __msan_set_keep_going(int keep_going);
format. */
void SANITIZER_CDECL __msan_print_shadow(const volatile void *x, size_t size);
human-readable format. */
void SANITIZER_CDECL __msan_dump_shadow(const volatile void *x, size_t size);
int SANITIZER_CDECL __msan_has_dynamic_component(void);
Memory will be marked uninitialized, with origin at the call site. */
void SANITIZER_CDECL __msan_allocated_memory(const volatile void *data,
size_t size);
void SANITIZER_CDECL __sanitizer_dtor_callback(const volatile void *data,
size_t size);
void SANITIZER_CDECL __sanitizer_dtor_callback_fields(const volatile void *data,
size_t size);
void SANITIZER_CDECL __sanitizer_dtor_callback_vptr(const volatile void *data);
a string containing Msan runtime options. See msan_flags.h for details. */
const char *SANITIZER_CDECL __msan_default_options(void);
void SANITIZER_CDECL
__msan_set_death_callback(void(SANITIZER_CDECL *callback)(void));
Src and dst are application addresses. This function does not copy the
actual application memory, it only updates shadow and origin for such
copy. Source and destination regions can overlap. */
void SANITIZER_CDECL __msan_copy_shadow(const volatile void *dst,
const volatile void *src, size_t size);
void SANITIZER_CDECL __msan_scoped_disable_interceptor_checks(void);
call to __msan_scoped_disable_interceptor_checks. */
void SANITIZER_CDECL __msan_scoped_enable_interceptor_checks(void);
void SANITIZER_CDECL __msan_start_switch_fiber(const void *bottom, size_t size);
void SANITIZER_CDECL __msan_finish_switch_fiber(const void **bottom_old,
size_t *size_old);
#ifdef __cplusplus
}
#endif
#endif