| //===-- esan_flags.cc -------------------------------------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // This file is a part of EfficiencySanitizer, a family of performance tuners. | |
| // | |
| // Esan flag parsing logic. | |
| //===----------------------------------------------------------------------===// | |
| #include "esan_flags.h" | |
| #include "sanitizer_common/sanitizer_common.h" | |
| #include "sanitizer_common/sanitizer_flag_parser.h" | |
| #include "sanitizer_common/sanitizer_flags.h" | |
| namespace __esan { | |
| static const char EsanOptsEnv[] = "ESAN_OPTIONS"; | |
| Flags EsanFlagsDontUseDirectly; | |
| void Flags::setDefaults() { | |
| #define ESAN_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue; | |
| #include "esan_flags.inc" | |
| #undef ESAN_FLAG | |
| } | |
| static void registerEsanFlags(FlagParser *Parser, Flags *F) { | |
| #define ESAN_FLAG(Type, Name, DefaultValue, Description) \ | |
| RegisterFlag(Parser, #Name, Description, &F->Name); | |
| #include "esan_flags.inc" | |
| #undef ESAN_FLAG | |
| } | |
| void initializeFlags() { | |
| SetCommonFlagsDefaults(); | |
| Flags *F = getFlags(); | |
| F->setDefaults(); | |
| FlagParser Parser; | |
| registerEsanFlags(&Parser, F); | |
| RegisterCommonFlags(&Parser); | |
| Parser.ParseString(GetEnv(EsanOptsEnv)); | |
| InitializeCommonFlags(); | |
| if (Verbosity()) | |
| ReportUnrecognizedFlags(); | |
| if (common_flags()->help) | |
| Parser.PrintFlagDescriptions(); | |
| __sanitizer_set_report_path(common_flags()->log_path); | |
| } | |
| } // namespace __esan |