diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-01-19 11:47:13 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-01-19 11:47:13 +0000 |
commit | 0d45d5ee267a176a0ccadb1cc617779717953977 (patch) | |
tree | 0576f4afe99f396c8c12247350d775d8d592b94f /lib/sanitizer_common/sanitizer_flag_parser.h | |
parent | 7023d934fbfdb6105b5e445c349823737ff627d1 (diff) |
[sanitizer] Switch flag parsing to LowLevelAlloc.
InternalAlloc is quite complex and its behavior may depend on the values of
flags. As such, it should not be used while parsing flags.
Sadly, LowLevelAlloc does not support deallocation of memory.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@226453 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_flag_parser.h')
-rw-r--r-- | lib/sanitizer_common/sanitizer_flag_parser.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/sanitizer_common/sanitizer_flag_parser.h b/lib/sanitizer_common/sanitizer_flag_parser.h index 27b91e0e7..b391cab41 100644 --- a/lib/sanitizer_common/sanitizer_flag_parser.h +++ b/lib/sanitizer_common/sanitizer_flag_parser.h @@ -17,7 +17,6 @@ #include "sanitizer_internal_defs.h" #include "sanitizer_libc.h" #include "sanitizer_common.h" -#include "sanitizer_allocator_internal.h" namespace __sanitizer { @@ -91,12 +90,13 @@ class FlagParser { public: FlagParser(); - ~FlagParser(); void RegisterHandler(const char *name, FlagHandlerBase *handler, const char *desc); void ParseString(const char *s); void PrintFlagDescriptions(); + static LowLevelAllocator Alloc; + private: void fatal_error(const char *err); bool is_space(char c); @@ -104,12 +104,13 @@ class FlagParser { void parse_flags(); void parse_flag(); bool run_handler(const char *name, const char *value); + char *ll_strndup(const char *s, uptr n); }; template <typename T> static void RegisterFlag(FlagParser *parser, const char *name, const char *desc, T *var) { - FlagHandler<T> *fh = new (INTERNAL_ALLOC) FlagHandler<T>(var); // NOLINT + FlagHandler<T> *fh = new (FlagParser::Alloc) FlagHandler<T>(var); // NOLINT parser->RegisterHandler(name, fh, desc); } |