| 1 | //===-- ubsan_checks.inc ----------------------------------------*- 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 | // List of checks handled by UBSan runtime. |
| 10 | // |
| 11 | //===----------------------------------------------------------------------===// |
| 12 | #ifndef UBSAN_CHECK |
| 13 | # error "Define UBSAN_CHECK prior to including this file!" |
| 14 | #endif |
| 15 | |
| 16 | // UBSAN_CHECK(Name, SummaryKind, FSanitizeFlagName) |
| 17 | // SummaryKind and FSanitizeFlagName should be string literals. |
| 18 | |
| 19 | UBSAN_CHECK(GenericUB, "undefined-behavior" , "undefined" ) |
| 20 | UBSAN_CHECK(NullPointerUse, "null-pointer-use" , "null" ) |
| 21 | UBSAN_CHECK(NullPointerUseWithNullability, "null-pointer-use" , |
| 22 | "nullability-assign" ) |
| 23 | UBSAN_CHECK(NullptrWithOffset, "nullptr-with-offset" , "pointer-overflow" ) |
| 24 | UBSAN_CHECK(NullptrWithNonZeroOffset, "nullptr-with-nonzero-offset" , |
| 25 | "pointer-overflow" ) |
| 26 | UBSAN_CHECK(NullptrAfterNonZeroOffset, "nullptr-after-nonzero-offset" , |
| 27 | "pointer-overflow" ) |
| 28 | UBSAN_CHECK(PointerOverflow, "pointer-overflow" , "pointer-overflow" ) |
| 29 | UBSAN_CHECK(MisalignedPointerUse, "misaligned-pointer-use" , "alignment" ) |
| 30 | UBSAN_CHECK(AlignmentAssumption, "alignment-assumption" , "alignment" ) |
| 31 | UBSAN_CHECK(InsufficientObjectSize, "insufficient-object-size" , "object-size" ) |
| 32 | UBSAN_CHECK(SignedIntegerOverflow, "signed-integer-overflow" , |
| 33 | "signed-integer-overflow" ) |
| 34 | UBSAN_CHECK(UnsignedIntegerOverflow, "unsigned-integer-overflow" , |
| 35 | "unsigned-integer-overflow" ) |
| 36 | UBSAN_CHECK(IntegerDivideByZero, "integer-divide-by-zero" , |
| 37 | "integer-divide-by-zero" ) |
| 38 | UBSAN_CHECK(FloatDivideByZero, "float-divide-by-zero" , "float-divide-by-zero" ) |
| 39 | UBSAN_CHECK(InvalidBuiltin, "invalid-builtin-use" , "invalid-builtin-use" ) |
| 40 | UBSAN_CHECK(InvalidObjCCast, "invalid-objc-cast" , "invalid-objc-cast" ) |
| 41 | UBSAN_CHECK(ImplicitUnsignedIntegerTruncation, |
| 42 | "implicit-unsigned-integer-truncation" , |
| 43 | "implicit-unsigned-integer-truncation" ) |
| 44 | UBSAN_CHECK(ImplicitSignedIntegerTruncation, |
| 45 | "implicit-signed-integer-truncation" , |
| 46 | "implicit-signed-integer-truncation" ) |
| 47 | UBSAN_CHECK(ImplicitIntegerSignChange, |
| 48 | "implicit-integer-sign-change" , |
| 49 | "implicit-integer-sign-change" ) |
| 50 | UBSAN_CHECK(ImplicitSignedIntegerTruncationOrSignChange, |
| 51 | "implicit-signed-integer-truncation-or-sign-change" , |
| 52 | "implicit-signed-integer-truncation,implicit-integer-sign-change" ) |
| 53 | UBSAN_CHECK(InvalidShiftBase, "invalid-shift-base" , "shift-base" ) |
| 54 | UBSAN_CHECK(InvalidShiftExponent, "invalid-shift-exponent" , "shift-exponent" ) |
| 55 | UBSAN_CHECK(OutOfBoundsIndex, "out-of-bounds-index" , "bounds" ) |
| 56 | UBSAN_CHECK(LocalOutOfBounds, "local-out-of-bounds" , "local-bounds" ) |
| 57 | UBSAN_CHECK(UnreachableCall, "unreachable-call" , "unreachable" ) |
| 58 | UBSAN_CHECK(MissingReturn, "missing-return" , "return" ) |
| 59 | UBSAN_CHECK(NonPositiveVLAIndex, "non-positive-vla-index" , "vla-bound" ) |
| 60 | UBSAN_CHECK(FloatCastOverflow, "float-cast-overflow" , "float-cast-overflow" ) |
| 61 | UBSAN_CHECK(InvalidBoolLoad, "invalid-bool-load" , "bool" ) |
| 62 | UBSAN_CHECK(InvalidEnumLoad, "invalid-enum-load" , "enum" ) |
| 63 | UBSAN_CHECK(FunctionTypeMismatch, "function-type-mismatch" , "function" ) |
| 64 | UBSAN_CHECK(InvalidNullReturn, "invalid-null-return" , |
| 65 | "returns-nonnull-attribute" ) |
| 66 | UBSAN_CHECK(InvalidNullReturnWithNullability, "invalid-null-return" , |
| 67 | "nullability-return" ) |
| 68 | UBSAN_CHECK(InvalidNullArgument, "invalid-null-argument" , "nonnull-attribute" ) |
| 69 | UBSAN_CHECK(InvalidNullArgumentWithNullability, "invalid-null-argument" , |
| 70 | "nullability-arg" ) |
| 71 | UBSAN_CHECK(DynamicTypeMismatch, "dynamic-type-mismatch" , "vptr" ) |
| 72 | UBSAN_CHECK(CFIBadType, "cfi-bad-type" , "cfi" ) |
| 73 | |