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