summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2015-08-27 20:40:24 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2015-08-27 20:40:24 +0000
commitd5cf8871a5c7a97d4142e710951aa6da86fcdbf3 (patch)
tree0c88d6bcd1915e9cdb321ad57d17821d6566e16f /lib
parent0d4ac1534aa164773dc4dd5cf42e6e35c387a039 (diff)
[Sanitizers] Make abort_on_error common flag.
Summary: Teach all sanitizers to call abort() instead of _exit() after printing an error report, if requested. This behavior is the default on Mac OS. Reviewers: kcc, kubabrecka Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D12332 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@246205 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/asan/asan_flags.inc4
-rw-r--r--lib/asan/asan_rtl.cc2
-rw-r--r--lib/sanitizer_common/sanitizer_common.cc2
-rw-r--r--lib/sanitizer_common/sanitizer_common_nolibc.cc5
-rw-r--r--lib/sanitizer_common/sanitizer_flags.inc4
5 files changed, 10 insertions, 7 deletions
diff --git a/lib/asan/asan_flags.inc b/lib/asan/asan_flags.inc
index 56fd3d1df..ec6400e86 100644
--- a/lib/asan/asan_flags.inc
+++ b/lib/asan/asan_flags.inc
@@ -75,10 +75,6 @@ ASAN_FLAG(bool, check_malloc_usable_size, true,
"295.*.")
ASAN_FLAG(bool, unmap_shadow_on_exit, false,
"If set, explicitly unmaps the (huge) shadow at exit.")
-ASAN_FLAG(
- bool, abort_on_error, SANITIZER_MAC,
- "If set, the tool calls abort() instead of _exit() after printing the "
- "error report.")
ASAN_FLAG(bool, print_stats, false,
"Print various statistics after printing an error message or if "
"atexit=1.")
diff --git a/lib/asan/asan_rtl.cc b/lib/asan/asan_rtl.cc
index 16d5061fb..fbb6de101 100644
--- a/lib/asan/asan_rtl.cc
+++ b/lib/asan/asan_rtl.cc
@@ -56,8 +56,6 @@ static void AsanDie() {
UnmapOrDie((void*)kLowShadowBeg, kHighShadowEnd - kLowShadowBeg);
}
}
- if (flags()->abort_on_error)
- Abort();
}
static void AsanCheckFailed(const char *file, int line, const char *cond,
diff --git a/lib/sanitizer_common/sanitizer_common.cc b/lib/sanitizer_common/sanitizer_common.cc
index 013952c0a..dde3be283 100644
--- a/lib/sanitizer_common/sanitizer_common.cc
+++ b/lib/sanitizer_common/sanitizer_common.cc
@@ -143,6 +143,8 @@ void NORETURN Die() {
if (InternalDieCallbacks[i])
InternalDieCallbacks[i]();
}
+ if (common_flags()->abort_on_error)
+ Abort();
internal__exit(common_flags()->exitcode);
}
diff --git a/lib/sanitizer_common/sanitizer_common_nolibc.cc b/lib/sanitizer_common/sanitizer_common_nolibc.cc
index 7d87b591c..65d1e37f6 100644
--- a/lib/sanitizer_common/sanitizer_common_nolibc.cc
+++ b/lib/sanitizer_common/sanitizer_common_nolibc.cc
@@ -13,6 +13,7 @@
#include "sanitizer_platform.h"
#include "sanitizer_common.h"
+#include "sanitizer_libc.h"
namespace __sanitizer {
@@ -20,4 +21,6 @@ namespace __sanitizer {
void WriteToSyslog(const char *buffer) {}
#endif
-}
+void Abort() { internal__exit(1); }
+
+} // namespace __sanitizer
diff --git a/lib/sanitizer_common/sanitizer_flags.inc b/lib/sanitizer_common/sanitizer_flags.inc
index 2e610892d..06f897165 100644
--- a/lib/sanitizer_common/sanitizer_flags.inc
+++ b/lib/sanitizer_common/sanitizer_flags.inc
@@ -187,3 +187,7 @@ COMMON_FLAG(bool, decorate_proc_maps, false, "If set, decorate sanitizer "
"user-readable names")
COMMON_FLAG(int, exitcode, 1, "Override the program exit status if the tool "
"found an error")
+COMMON_FLAG(
+ bool, abort_on_error, SANITIZER_MAC,
+ "If set, the tool calls abort() instead of _exit() after printing the "
+ "error report.")