1*7c3d14c8STreehugger Robot//===-- ubsan_checks.inc ----------------------------------------*- C++ -*-===// 2*7c3d14c8STreehugger Robot// 3*7c3d14c8STreehugger Robot// The LLVM Compiler Infrastructure 4*7c3d14c8STreehugger Robot// 5*7c3d14c8STreehugger Robot// This file is distributed under the University of Illinois Open Source 6*7c3d14c8STreehugger Robot// License. See LICENSE.TXT for details. 7*7c3d14c8STreehugger Robot// 8*7c3d14c8STreehugger Robot//===----------------------------------------------------------------------===// 9*7c3d14c8STreehugger Robot// 10*7c3d14c8STreehugger Robot// List of checks handled by UBSan runtime. 11*7c3d14c8STreehugger Robot// 12*7c3d14c8STreehugger Robot//===----------------------------------------------------------------------===// 13*7c3d14c8STreehugger Robot#ifndef UBSAN_CHECK 14*7c3d14c8STreehugger Robot# error "Define UBSAN_CHECK prior to including this file!" 15*7c3d14c8STreehugger Robot#endif 16*7c3d14c8STreehugger Robot 17*7c3d14c8STreehugger Robot// UBSAN_CHECK(Name, SummaryKind, FSanitizeFlagName) 18*7c3d14c8STreehugger Robot// SummaryKind and FSanitizeFlagName should be string literals. 19*7c3d14c8STreehugger Robot 20*7c3d14c8STreehugger RobotUBSAN_CHECK(GenericUB, "undefined-behavior", "undefined") 21*7c3d14c8STreehugger RobotUBSAN_CHECK(NullPointerUse, "null-pointer-use", "null") 22*7c3d14c8STreehugger RobotUBSAN_CHECK(MisalignedPointerUse, "misaligned-pointer-use", "alignment") 23*7c3d14c8STreehugger RobotUBSAN_CHECK(InsufficientObjectSize, "insufficient-object-size", "object-size") 24*7c3d14c8STreehugger RobotUBSAN_CHECK(SignedIntegerOverflow, "signed-integer-overflow", 25*7c3d14c8STreehugger Robot "signed-integer-overflow") 26*7c3d14c8STreehugger RobotUBSAN_CHECK(UnsignedIntegerOverflow, "unsigned-integer-overflow", 27*7c3d14c8STreehugger Robot "unsigned-integer-overflow") 28*7c3d14c8STreehugger RobotUBSAN_CHECK(IntegerDivideByZero, "integer-divide-by-zero", 29*7c3d14c8STreehugger Robot "integer-divide-by-zero") 30*7c3d14c8STreehugger RobotUBSAN_CHECK(FloatDivideByZero, "float-divide-by-zero", "float-divide-by-zero") 31*7c3d14c8STreehugger RobotUBSAN_CHECK(InvalidShiftBase, "invalid-shift-base", "shift-base") 32*7c3d14c8STreehugger RobotUBSAN_CHECK(InvalidShiftExponent, "invalid-shift-exponent", "shift-exponent") 33*7c3d14c8STreehugger RobotUBSAN_CHECK(OutOfBoundsIndex, "out-of-bounds-index", "bounds") 34*7c3d14c8STreehugger RobotUBSAN_CHECK(UnreachableCall, "unreachable-call", "unreachable") 35*7c3d14c8STreehugger RobotUBSAN_CHECK(MissingReturn, "missing-return", "return") 36*7c3d14c8STreehugger RobotUBSAN_CHECK(NonPositiveVLAIndex, "non-positive-vla-index", "vla-bound") 37*7c3d14c8STreehugger RobotUBSAN_CHECK(FloatCastOverflow, "float-cast-overflow", "float-cast-overflow") 38*7c3d14c8STreehugger RobotUBSAN_CHECK(InvalidBoolLoad, "invalid-bool-load", "bool") 39*7c3d14c8STreehugger RobotUBSAN_CHECK(InvalidEnumLoad, "invalid-enum-load", "enum") 40*7c3d14c8STreehugger RobotUBSAN_CHECK(FunctionTypeMismatch, "function-type-mismatch", "function") 41*7c3d14c8STreehugger RobotUBSAN_CHECK(InvalidNullReturn, "invalid-null-return", 42*7c3d14c8STreehugger Robot "returns-nonnull-attribute") 43*7c3d14c8STreehugger RobotUBSAN_CHECK(InvalidNullArgument, "invalid-null-argument", "nonnull-attribute") 44*7c3d14c8STreehugger RobotUBSAN_CHECK(DynamicTypeMismatch, "dynamic-type-mismatch", "vptr") 45*7c3d14c8STreehugger RobotUBSAN_CHECK(CFIBadType, "cfi-bad-type", "cfi") 46