summaryrefslogtreecommitdiff
path: root/lib/dfsan
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/dfsan
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/dfsan')
-rw-r--r--lib/dfsan/CMakeLists.txt2
-rw-r--r--lib/dfsan/dfsan.cc11
-rw-r--r--lib/dfsan/dfsan.h1
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;