summaryrefslogtreecommitdiff
path: root/lib/tsan/rtl/tsan_flags.cc
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-01-15 15:13:43 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-01-15 15:13:43 +0000
commit096af34b7cf9920da660a3084b5485ba97059f35 (patch)
tree8f2a32c53687aba186ca91e2b782fa9bb57e4d44 /lib/tsan/rtl/tsan_flags.cc
parent05fe0575f84ea38fa2eca8a5bdea5c77f3217cda (diff)
[sanitizer] Flag parser rewrite.
The new parser is a lot stricter about syntax, reports unrecognized flags, and will make it easier to implemented some of the planned features. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@226169 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_flags.cc')
-rw-r--r--lib/tsan/rtl/tsan_flags.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/tsan/rtl/tsan_flags.cc b/lib/tsan/rtl/tsan_flags.cc
index 77677ebba..b99d92fc8 100644
--- a/lib/tsan/rtl/tsan_flags.cc
+++ b/lib/tsan/rtl/tsan_flags.cc
@@ -12,6 +12,7 @@
//===----------------------------------------------------------------------===//
#include "sanitizer_common/sanitizer_flags.h"
+#include "sanitizer_common/sanitizer_flag_parser.h"
#include "sanitizer_common/sanitizer_libc.h"
#include "tsan_flags.h"
#include "tsan_rtl.h"
@@ -41,16 +42,18 @@ void Flags::SetDefaults() {
second_deadlock_stack = false;
}
-void Flags::ParseFromString(const char *str) {
-#define TSAN_FLAG(Type, Name, DefaultValue, Description) \
- ParseFlag(str, &Name, #Name, Description);
+void RegisterTsanFlags(FlagParser *parser, Flags *f) {
+#define TSAN_FLAG(Type, Name, DefaultValue, Description) \
+ RegisterFlag(parser, #Name, Description, &f->Name);
#include "tsan_flags.inc"
#undef TSAN_FLAG
- // DDFlags
- ParseFlag(str, &second_deadlock_stack, "second_deadlock_stack", "");
}
void InitializeFlags(Flags *f, const char *env) {
+ FlagParser parser;
+ RegisterTsanFlags(&parser, f);
+ RegisterCommonFlags(&parser);
+
f->SetDefaults();
SetCommonFlagsDefaults();
@@ -66,11 +69,9 @@ void InitializeFlags(Flags *f, const char *env) {
}
// Let a frontend override.
- f->ParseFromString(__tsan_default_options());
- ParseCommonFlagsFromString(__tsan_default_options());
+ parser.ParseString(__tsan_default_options());
// Override from command line.
- f->ParseFromString(env);
- ParseCommonFlagsFromString(env);
+ parser.ParseString(env);
// Sanity check.
if (!f->report_bugs) {
@@ -80,7 +81,7 @@ void InitializeFlags(Flags *f, const char *env) {
}
if (common_flags()->help)
- PrintFlagDescriptions();
+ parser.PrintFlagDescriptions();
if (f->history_size < 0 || f->history_size > 7) {
Printf("ThreadSanitizer: incorrect value for history_size"