This reverts commit 102c15ad28d3c312ea8926c85dbf907ca0d07b84.
This commit is contained in:
parent
395643e60b
commit
22b21f34b2
@ -54,6 +54,47 @@ FEATURE(memtag_globals,
|
|||||||
FEATURE(xray_instrument, LangOpts.XRayInstrument)
|
FEATURE(xray_instrument, LangOpts.XRayInstrument)
|
||||||
FEATURE(undefined_behavior_sanitizer,
|
FEATURE(undefined_behavior_sanitizer,
|
||||||
LangOpts.Sanitize.hasOneOf(SanitizerKind::Undefined))
|
LangOpts.Sanitize.hasOneOf(SanitizerKind::Undefined))
|
||||||
|
FEATURE(undefined_behavior_sanitizer_finegrained_feature_checks, true)
|
||||||
|
// These are all part of undefined_behavior_sanitizer:
|
||||||
|
FEATURE(alignment_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Alignment))
|
||||||
|
FEATURE(bool_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Bool))
|
||||||
|
FEATURE(builtin_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Builtin))
|
||||||
|
FEATURE(array_bounds_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::ArrayBounds))
|
||||||
|
FEATURE(enum_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Enum))
|
||||||
|
FEATURE(float_cast_overflow_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::FloatCastOverflow))
|
||||||
|
FEATURE(integer_divide_by_zero_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::IntegerDivideByZero))
|
||||||
|
FEATURE(nonnull_attribute_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::NonnullAttribute))
|
||||||
|
FEATURE(null_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Null))
|
||||||
|
FEATURE(object_size_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::ObjectSize))
|
||||||
|
FEATURE(pointer_overflow_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::PointerOverflow))
|
||||||
|
FEATURE(return_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Return))
|
||||||
|
FEATURE(returns_nonnull_attribute_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::ReturnsNonnullAttribute))
|
||||||
|
FEATURE(shift_base_sanitizer, LangOpts.Sanitize.has(SanitizerKind::ShiftBase))
|
||||||
|
FEATURE(shift_exponent_sanitizer, LangOpts.Sanitize.has(SanitizerKind::ShiftExponent))
|
||||||
|
FEATURE(shift_sanitizer,
|
||||||
|
LangOpts.Sanitize.hasOneOf(SanitizerKind::Shift))
|
||||||
|
FEATURE(signed_integer_overflow_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::SignedIntegerOverflow))
|
||||||
|
FEATURE(unreachable_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Unreachable))
|
||||||
|
FEATURE(vla_bound_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::VLABound))
|
||||||
|
FEATURE(function_sanitizer,
|
||||||
|
LangOpts.Sanitize.has(SanitizerKind::Function))
|
||||||
|
|
||||||
FEATURE(realtime_sanitizer,
|
FEATURE(realtime_sanitizer,
|
||||||
LangOpts.Sanitize.has(SanitizerKind::Realtime))
|
LangOpts.Sanitize.has(SanitizerKind::Realtime))
|
||||||
FEATURE(coverage_sanitizer, LangOpts.SanitizeCoverage)
|
FEATURE(coverage_sanitizer, LangOpts.SanitizeCoverage)
|
||||||
|
@ -1,13 +1,179 @@
|
|||||||
// RUN: %clang -E -fsanitize=undefined %s -o - | FileCheck --check-prefix=CHECK-UBSAN %s
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=undefined %s -o - | FileCheck --check-prefix=CHECK-UBSAN %s
|
||||||
// RUN: %clang -E -fsanitize=alignment %s -o - | FileCheck --check-prefix=CHECK-ALIGNMENT %s
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=alignment %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-ALIGNMENT %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=bool %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-BOOL %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=builtin %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-BUILTIN %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=array-bounds %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-ARRAY-BOUNDS %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=enum %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-ENUM %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=float-cast-overflow %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-FLOAT-CAST-OVERFLOW %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=integer-divide-by-zero %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-INTEGER-DIVIDE-BY-ZERO %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=nonnull-attribute %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-NONNULL-ATTRIBUTE %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=null %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-NULL %s
|
||||||
|
// object-size is a no-op at O0.
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -O2 -fsanitize=object-size %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-OBJECT-SIZE %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=pointer-overflow %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-POINTER-OVERFLOW %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=return %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-RETURN %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=returns-nonnull-attribute %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-RETURNS-NONNULL-ATTRIBUTE %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=shift-base %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-SHIFT-BASE,CHECK-SHIFT %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=shift-exponent %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-SHIFT-EXPONENT,CHECK-SHIFT %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=shift %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-SHIFT %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=signed-integer-overflow %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-SIGNED-INTEGER-OVERFLOW %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=unreachable %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-UNREACHABLE %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=vla-bound %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-VLA-BOUND %s
|
||||||
|
// RUN: %clang -E -target x86_64-unknown-linux-gnu -fsanitize=function %s -o - | FileCheck --check-prefixes=CHECK-UBSAN,CHECK-FUNCTION %s
|
||||||
|
|
||||||
// RUN: %clang -E %s -o - | FileCheck --check-prefix=CHECK-NO-UBSAN %s
|
// RUN: %clang -E %s -o - | FileCheck --check-prefix=CHECK-NO-UBSAN %s
|
||||||
|
|
||||||
|
// REQUIRES: x86-registered-target
|
||||||
|
|
||||||
|
#if !__has_feature(undefined_behavior_sanitizer_finegrained_feature_checks)
|
||||||
|
#error "Missing undefined_behavior_sanitizer_finegrained_feature_checks"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __has_feature(undefined_behavior_sanitizer)
|
#if __has_feature(undefined_behavior_sanitizer)
|
||||||
int UBSanEnabled();
|
int UBSanEnabled();
|
||||||
#else
|
#else
|
||||||
int UBSanDisabled();
|
int UBSanDisabled();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(alignment_sanitizer)
|
||||||
|
int AlignmentSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int AlignmentSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(bool_sanitizer)
|
||||||
|
int BoolSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int BoolSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(builtin_sanitizer)
|
||||||
|
int BuiltinSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int BuiltinSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(array_bounds_sanitizer)
|
||||||
|
int ArrayBoundsSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ArrayBoundsSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(enum_sanitizer)
|
||||||
|
int EnumSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int EnumSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(float_cast_overflow_sanitizer)
|
||||||
|
int FloatCastOverflowSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int FloatCastOverflowSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(integer_divide_by_zero_sanitizer)
|
||||||
|
int IntegerDivideByZeroSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int IntegerDivideByZeroSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(nonnull_attribute_sanitizer)
|
||||||
|
int NonnullAttributeSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int NonnullAttributeSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(null_sanitizer)
|
||||||
|
int NullSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int NullSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(object_size_sanitizer)
|
||||||
|
int ObjectSizeSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ObjectSizeSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(pointer_overflow_sanitizer)
|
||||||
|
int PointerOverflowSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int PointerOverflowSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(return_sanitizer)
|
||||||
|
int ReturnSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ReturnSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(returns_nonnull_attribute_sanitizer)
|
||||||
|
int ReturnsNonnullAttributeSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ReturnsNonnullAttributeSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(shift_base_sanitizer)
|
||||||
|
int ShiftBaseSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ShiftBaseSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(shift_exponent_sanitizer)
|
||||||
|
int ShiftExponentSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ShiftExponentSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(shift_sanitizer)
|
||||||
|
int ShiftSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int ShiftSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(signed_integer_overflow_sanitizer)
|
||||||
|
int SignedIntegerOverflowSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int SignedIntegerOverflowSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(unreachable_sanitizer)
|
||||||
|
int UnreachableSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int UnreachableSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(vla_bound_sanitizer)
|
||||||
|
int VLABoundSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int VLABoundSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(function_sanitizer)
|
||||||
|
int FunctionSanitizerEnabled();
|
||||||
|
#else
|
||||||
|
int FunctionSanitizerDisabled();
|
||||||
|
#endif
|
||||||
|
|
||||||
// CHECK-UBSAN: UBSanEnabled
|
// CHECK-UBSAN: UBSanEnabled
|
||||||
// CHECK-ALIGNMENT: UBSanEnabled
|
// CHECK-ALIGNMENT: AlignmentSanitizerEnabled
|
||||||
|
// CHECK-BOOL: BoolSanitizerEnabled
|
||||||
|
// CHECK-BUILTIN: BuiltinSanitizerEnabled
|
||||||
|
// CHECK-ARRAY-BOUNDS: ArrayBoundsSanitizerEnabled
|
||||||
|
// CHECK-ENUM: EnumSanitizerEnabled
|
||||||
|
// CHECK-FLOAT-CAST-OVERFLOW: FloatCastOverflowSanitizerEnabled
|
||||||
|
// CHECK-INTEGER-DIVIDE-BY-ZERO: IntegerDivideByZeroSanitizerEnabled
|
||||||
|
// CHECK-NONNULL-ATTRIBUTE: NonnullAttributeSanitizerEnabled
|
||||||
|
// CHECK-NULL: NullSanitizerEnabled
|
||||||
|
// CHECK-OBJECT-SIZE: ObjectSizeSanitizerEnabled
|
||||||
|
// CHECK-POINTER-OVERFLOW: PointerOverflowSanitizerEnabled
|
||||||
|
// CHECK-RETURN: ReturnSanitizerEnabled
|
||||||
|
// CHECK-RETURNS-NONNULL-ATTRIBUTE: ReturnsNonnullAttributeSanitizerEnabled
|
||||||
|
// CHECK-SHIFT-BASE: ShiftBaseSanitizerEnabled
|
||||||
|
// CHECK-SHIFT-EXPONENT: ShiftExponentSanitizerEnabled
|
||||||
|
// CHECK-SHIFT: ShiftSanitizerEnabled
|
||||||
|
// CHECK-SIGNED-INTEGER-OVERFLOW: SignedIntegerOverflowSanitizerEnabled
|
||||||
|
// CHECK-UNREACHABLE: UnreachableSanitizerEnabled
|
||||||
|
// CHECK-VLA-BOUND: VLABoundSanitizerEnabled
|
||||||
|
// CHECK-FUNCTION: FunctionSanitizerEnabled
|
||||||
// CHECK-NO-UBSAN: UBSanDisabled
|
// CHECK-NO-UBSAN: UBSanDisabled
|
||||||
|
Loading…
x
Reference in New Issue
Block a user