forked from OSchip/llvm-project
[Sanitizers] UBSan unreachable incompatible with Kernel ASan
Summary: This is a follow up for https://reviews.llvm.org/D57278. The previous revision should have also included Kernel ASan. rdar://problem/40723397 Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D57711 llvm-svn: 353120
This commit is contained in:
parent
ae28be3a8a
commit
98b9f5b4b3
|
@ -4403,7 +4403,8 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
|
|||
|
||||
// Avoid incompatibility with ASan which relies on the `noreturn`
|
||||
// attribute to insert handler calls.
|
||||
if (SanOpts.has(SanitizerKind::Address)) {
|
||||
if (SanOpts.hasOneOf(SanitizerKind::Address |
|
||||
SanitizerKind::KernelAddress)) {
|
||||
SanitizerScope SanScope(this);
|
||||
llvm::IRBuilder<>::InsertPointGuard IPGuard(Builder);
|
||||
Builder.SetInsertPoint(CI);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// Ensure compatiblity of UBSan unreachable with ASan in the presence of
|
||||
// noreturn functions.
|
||||
// RUN: %clang_cc1 -fsanitize=unreachable,address -triple x86_64-linux -emit-llvm -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -fsanitize=unreachable,address -triple x86_64-linux -emit-llvm -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -fsanitize=unreachable,kernel-address -triple x86_64-linux -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
void my_longjmp(void) __attribute__((noreturn));
|
||||
|
||||
|
|
|
@ -35,6 +35,15 @@ define i32 @Call3() sanitize_address {
|
|||
; CHECK-NOT: call void @__asan_handle_no_return
|
||||
; CHECK: call void @NoReturnFunc
|
||||
|
||||
; Do *not* instrument functions without ASan
|
||||
define i32 @Call4() {
|
||||
call void @NoReturnFunc() noreturn
|
||||
unreachable
|
||||
}
|
||||
; CHECK-LABEL: @Call4
|
||||
; CHECK-NOT: call void @__asan_handle_no_return
|
||||
; CHECK: call void @NoReturnFunc
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
||||
|
||||
define i64 @Invoke1() nounwind uwtable ssp sanitize_address personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
|
|
Loading…
Reference in New Issue