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/dfsan | |
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/dfsan')
-rw-r--r-- | lib/dfsan/CMakeLists.txt | 2 | ||||
-rw-r--r-- | lib/dfsan/dfsan.cc | 11 | ||||
-rw-r--r-- | lib/dfsan/dfsan.h | 1 |
3 files changed, 8 insertions, 6 deletions
diff --git a/lib/dfsan/CMakeLists.txt b/lib/dfsan/CMakeLists.txt index 257a15a93..971146aa3 100644 --- a/lib/dfsan/CMakeLists.txt +++ b/lib/dfsan/CMakeLists.txt @@ -5,7 +5,7 @@ set(DFSAN_RTL_SOURCES dfsan.cc dfsan_custom.cc dfsan_interceptors.cc) -set(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS}) +set(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS} -fno-rtti) # Prevent clang from generating libc calls. append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS) diff --git a/lib/dfsan/dfsan.cc b/lib/dfsan/dfsan.cc index b8eb1f22d..dd0ea6114 100644 --- a/lib/dfsan/dfsan.cc +++ b/lib/dfsan/dfsan.cc @@ -22,6 +22,7 @@ #include "sanitizer_common/sanitizer_atomic.h" #include "sanitizer_common/sanitizer_common.h" #include "sanitizer_common/sanitizer_flags.h" +#include "sanitizer_common/sanitizer_flag_parser.h" #include "sanitizer_common/sanitizer_libc.h" #include "dfsan/dfsan.h" @@ -316,16 +317,18 @@ void Flags::SetDefaults() { #undef DFSAN_FLAG } -void Flags::ParseFromString(const char *str) { -#define DFSAN_FLAG(Type, Name, DefaultValue, Description) \ - ParseFlag(str, &Name, #Name, Description); +void RegisterDfsanFlags(FlagParser *parser, Flags *f) { +#define DFSAN_FLAG(Type, Name, DefaultValue, Description) \ + RegisterFlag(parser, #Name, Description, &f->Name); #include "dfsan_flags.inc" #undef DFSAN_FLAG } static void InitializeFlags(Flags &f, const char *env) { + FlagParser parser; + RegisterDfsanFlags(&parser, &f); f.SetDefaults(); - f.ParseFromString(env); + parser.ParseString(env); } static void dfsan_fini() { diff --git a/lib/dfsan/dfsan.h b/lib/dfsan/dfsan.h index 8f242197f..ceba3533a 100644 --- a/lib/dfsan/dfsan.h +++ b/lib/dfsan/dfsan.h @@ -61,7 +61,6 @@ struct Flags { #undef DFSAN_FLAG void SetDefaults(); - void ParseFromString(const char *str); }; extern Flags flags_data; |