2012-05-10 21:48:04 +08:00
|
|
|
//===-- tsan_flags.h --------------------------------------------*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
|
|
|
// This file is a part of ThreadSanitizer (TSan), a race detector.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#ifndef TSAN_FLAGS_H
|
|
|
|
#define TSAN_FLAGS_H
|
|
|
|
|
|
|
|
namespace __tsan {
|
|
|
|
|
|
|
|
struct Flags {
|
|
|
|
// Enable dynamic annotations, otherwise they are no-ops.
|
|
|
|
bool enable_annotations;
|
|
|
|
// Supress a race report if we've already output another race report
|
|
|
|
// with the same stack.
|
|
|
|
bool suppress_equal_stacks;
|
|
|
|
// Supress a race report if we've already output another race report
|
|
|
|
// on the same address.
|
|
|
|
bool suppress_equal_addresses;
|
|
|
|
// Report thread leaks at exit?
|
|
|
|
bool report_thread_leaks;
|
|
|
|
// Report violations of async signal-safety
|
|
|
|
// (e.g. malloc() call from a signal handler).
|
|
|
|
bool report_signal_unsafe;
|
|
|
|
// If set, all atomics are effectively sequentially consistent (seq_cst),
|
|
|
|
// regardless of what user actually specified.
|
|
|
|
bool force_seq_cst_atomics;
|
|
|
|
// Strip that prefix from file paths in reports.
|
|
|
|
const char *strip_path_prefix;
|
|
|
|
// Suppressions filename.
|
|
|
|
const char *suppressions;
|
|
|
|
// Override exit status if something was reported.
|
|
|
|
int exitcode;
|
|
|
|
// Log fileno (1 - stdout, 2 - stderr).
|
|
|
|
int log_fileno;
|
|
|
|
// Sleep in main thread before exiting for that many ms
|
|
|
|
// (useful to catch "at exit" races).
|
|
|
|
int atexit_sleep_ms;
|
|
|
|
// Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output).
|
|
|
|
int verbosity;
|
2012-05-22 19:33:03 +08:00
|
|
|
// If set, periodically write memory profile to that file.
|
|
|
|
const char *profile_memory;
|
2012-05-23 02:07:45 +08:00
|
|
|
// Flush shadow memory every X ms.
|
|
|
|
int flush_memory_ms;
|
|
|
|
// Stops on start until __tsan_resume() is called (for debugging).
|
|
|
|
bool stop_on_start;
|
2012-05-24 17:24:45 +08:00
|
|
|
// Controls whether RunningOnValgrind() returns true or false.
|
|
|
|
bool running_on_valgrind;
|
2012-05-10 21:48:04 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
Flags *flags();
|
|
|
|
void InitializeFlags(Flags *flags, const char *env);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // TSAN_FLAGS_H
|