1//===-- ubsan_handlers_cxx.h ------------------------------------*- C++ -*-===//
2//
3// This file is distributed under the University of Illinois Open Source
4// License. See LICENSE.TXT for details.
5//
6//===----------------------------------------------------------------------===//
7//
8// Entry points to the runtime library for Clang's undefined behavior sanitizer,
9// for C++-specific checks. This code is not linked into C binaries.
10//
11//===----------------------------------------------------------------------===//
12#ifndef UBSAN_HANDLERS_CXX_H
13#define UBSAN_HANDLERS_CXX_H
14
15#include "ubsan_value.h"
16
17namespace __ubsan {
18
19struct DynamicTypeCacheMissData {
20  SourceLocation Loc;
21  const TypeDescriptor &Type;
22  void *TypeInfo;
23  unsigned char TypeCheckKind;
24};
25
26/// \brief Handle a runtime type check failure, caused by an incorrect vptr.
27/// When this handler is called, all we know is that the type was not in the
28/// cache; this does not necessarily imply the existence of a bug.
29extern "C" SANITIZER_INTERFACE_ATTRIBUTE
30void __ubsan_handle_dynamic_type_cache_miss(
31  DynamicTypeCacheMissData *Data, ValueHandle Pointer, ValueHandle Hash);
32extern "C" SANITIZER_INTERFACE_ATTRIBUTE
33void __ubsan_handle_dynamic_type_cache_miss_abort(
34  DynamicTypeCacheMissData *Data, ValueHandle Pointer, ValueHandle Hash);
35}
36
37#endif // UBSAN_HANDLERS_H
38