From b26f8576120c3825fc15b0e95a98de0e1cb81cfc Mon Sep 17 00:00:00 2001 From: Kuba Mracek Date: Fri, 31 Mar 2017 03:00:09 +0000 Subject: [PATCH] [asan] Turn -fsanitize-address-use-after-scope on by default [clang part] AddressSanitizer has an optional compile-time flag, -fsanitize-address-use-after-scope, which enables detection of use-after-scope bugs. We'd like to have this feature on by default, because it is already very well tested, it's used in several projects already (LLVM automatically enables it when using -DLLVM_USE_SANITIZER=Address), it's low overhead and there are no known issues or incompatibilities. This patch enables use-after-scope by default via the Clang driver, where we set true as the default value for AsanUseAfterScope. This also causes the lifetime markers to be generated whenever fsanitize=address is used. This has some nice consequences, e.g. we now have line numbers for all local variables. Differential Revision: https://reviews.llvm.org/D31479 llvm-svn: 299174 --- clang/include/clang/Driver/SanitizerArgs.h | 2 +- clang/test/Driver/fsanitize.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/Driver/SanitizerArgs.h b/clang/include/clang/Driver/SanitizerArgs.h index 6206680..2df8077 100644 --- a/clang/include/clang/Driver/SanitizerArgs.h +++ b/clang/include/clang/Driver/SanitizerArgs.h @@ -34,7 +34,7 @@ class SanitizerArgs { bool CfiCrossDso = false; int AsanFieldPadding = 0; bool AsanSharedRuntime = false; - bool AsanUseAfterScope = false; + bool AsanUseAfterScope = true; bool LinkCXXRuntimes = false; bool NeedPIE = false; bool Stats = false; diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index c5a8e11..e8651d5 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -121,7 +121,7 @@ // CHECK-USE-AFTER-SCOPE-BOTH-OFF-NOT: -cc1{{.*}}address-use-after-scope // RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-WITHOUT-USE-AFTER-SCOPE -// CHECK-ASAN-WITHOUT-USE-AFTER-SCOPE-NOT: -cc1{{.*}}address-use-after-scope +// CHECK-ASAN-WITHOUT-USE-AFTER-SCOPE: -cc1{{.*}}address-use-after-scope // RUN: %clang -target x86_64-linux-gnu -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ONLY-TRACK-ORIGINS // CHECK-ONLY-TRACK-ORIGINS: warning: argument unused during compilation: '-fsanitize-memory-track-origins' -- 2.7.4