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