diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-01-15 15:13:43 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-01-15 15:13:43 +0000 |
commit | 096af34b7cf9920da660a3084b5485ba97059f35 (patch) | |
tree | 8f2a32c53687aba186ca91e2b782fa9bb57e4d44 /lib/tsan/rtl/tsan_flags.cc | |
parent | 05fe0575f84ea38fa2eca8a5bdea5c77f3217cda (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.cc | 21 |
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" |