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(UnreachableCall, "unreachable-call" , "unreachable" ) |
57 | UBSAN_CHECK(MissingReturn, "missing-return" , "return" ) |
58 | UBSAN_CHECK(NonPositiveVLAIndex, "non-positive-vla-index" , "vla-bound" ) |
59 | UBSAN_CHECK(FloatCastOverflow, "float-cast-overflow" , "float-cast-overflow" ) |
60 | UBSAN_CHECK(InvalidBoolLoad, "invalid-bool-load" , "bool" ) |
61 | UBSAN_CHECK(InvalidEnumLoad, "invalid-enum-load" , "enum" ) |
62 | UBSAN_CHECK(FunctionTypeMismatch, "function-type-mismatch" , "function" ) |
63 | UBSAN_CHECK(InvalidNullReturn, "invalid-null-return" , |
64 | "returns-nonnull-attribute" ) |
65 | UBSAN_CHECK(InvalidNullReturnWithNullability, "invalid-null-return" , |
66 | "nullability-return" ) |
67 | UBSAN_CHECK(InvalidNullArgument, "invalid-null-argument" , "nonnull-attribute" ) |
68 | UBSAN_CHECK(InvalidNullArgumentWithNullability, "invalid-null-argument" , |
69 | "nullability-arg" ) |
70 | UBSAN_CHECK(DynamicTypeMismatch, "dynamic-type-mismatch" , "vptr" ) |
71 | UBSAN_CHECK(CFIBadType, "cfi-bad-type" , "cfi" ) |
72 | |