forked from OSchip/llvm-project
tsan: support allocator_may_return_null flag
Fixes https://code.google.com/p/thread-sanitizer/issues/detail?id=29 llvm-svn: 191482
This commit is contained in:
parent
4467f33e3c
commit
439a904515
|
@ -1,5 +1,3 @@
|
|||
// XFAIL: *
|
||||
// FIXME: https://code.google.com/p/thread-sanitizer/issues/detail?id=29
|
||||
// RUN: %clangxx_tsan -O1 %s -o %t
|
||||
// RUN: TSAN_OPTIONS=allocator_may_return_null=1 %t 2>&1 | FileCheck %s
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -64,6 +64,7 @@ void InitializeFlags(Flags *f, const char *env) {
|
|||
f->external_symbolizer_path = "";
|
||||
f->history_size = kGoMode ? 1 : 2; // There are a lot of goroutines in Go.
|
||||
f->io_sync = 1;
|
||||
f->allocator_may_return_null = false;
|
||||
|
||||
// Let a frontend override.
|
||||
OverrideFlags(f);
|
||||
|
@ -95,6 +96,7 @@ void InitializeFlags(Flags *f, const char *env) {
|
|||
ParseFlag(env, &f->external_symbolizer_path, "external_symbolizer_path");
|
||||
ParseFlag(env, &f->history_size, "history_size");
|
||||
ParseFlag(env, &f->io_sync, "io_sync");
|
||||
ParseFlag(env, &f->allocator_may_return_null, "allocator_may_return_null");
|
||||
|
||||
if (!f->report_bugs) {
|
||||
f->report_thread_leaks = false;
|
||||
|
@ -113,6 +115,8 @@ void InitializeFlags(Flags *f, const char *env) {
|
|||
" (must be [0..2])\n");
|
||||
Die();
|
||||
}
|
||||
|
||||
common_flags()->allocator_may_return_null = f->allocator_may_return_null;
|
||||
}
|
||||
|
||||
} // namespace __tsan
|
||||
|
|
|
@ -92,6 +92,8 @@ struct Flags {
|
|||
// 1 - reasonable level of synchronization (write->read)
|
||||
// 2 - global synchronization of all IO operations
|
||||
int io_sync;
|
||||
// If false, the allocator will crash instead of returning 0 on out-of-memory.
|
||||
bool allocator_may_return_null;
|
||||
};
|
||||
|
||||
Flags *flags();
|
||||
|
|
Loading…
Reference in New Issue