diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-06 20:13:44 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-06 20:13:44 +0000 |
commit | 91d212a4a6c2c87a6e09bc8a5e665b011022aaaf (patch) | |
tree | 31eb77cd1eadc56f19819a157ec87f83291c392c /lib/sanitizer_common/sancov_flags.cc | |
parent | dad1defd96f21c31ea21e4d4b6f969641fe368f8 (diff) | |
download | src-91d212a4a6c2c87a6e09bc8a5e665b011022aaaf.tar.gz src-91d212a4a6c2c87a6e09bc8a5e665b011022aaaf.zip |
Vendor import of compiler-rt trunk r291274:vendor/compiler-rt/compiler-rt-trunk-r291274
Notes
Notes:
svn path=/vendor/compiler-rt/dist/; revision=311536
svn path=/vendor/compiler-rt/compiler-rt-trunk-r291274/; revision=311537; tag=vendor/compiler-rt/compiler-rt-trunk-r291274
Diffstat (limited to 'lib/sanitizer_common/sancov_flags.cc')
-rw-r--r-- | lib/sanitizer_common/sancov_flags.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sancov_flags.cc b/lib/sanitizer_common/sancov_flags.cc new file mode 100644 index 000000000000..08fd2a4366a8 --- /dev/null +++ b/lib/sanitizer_common/sancov_flags.cc @@ -0,0 +1,60 @@ +//===-- sancov_flags.cc -----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Sanitizer Coverage runtime flags. +// +//===----------------------------------------------------------------------===// + +#include "sancov_flags.h" +#include "sanitizer_flag_parser.h" +#include "sanitizer_platform.h" + +#if !SANITIZER_LINUX +// other platforms do not have weak symbols out of the box. +extern "C" const char* __sancov_default_options() { return ""; } +#endif + +using namespace __sanitizer; + +namespace __sancov { + +SancovFlags sancov_flags_dont_use_directly; // use via flags(); + +void SancovFlags::SetDefaults() { +#define SANCOV_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue; +#include "sancov_flags.inc" +#undef SANCOV_FLAG +} + +static void RegisterSancovFlags(FlagParser *parser, SancovFlags *f) { +#define SANCOV_FLAG(Type, Name, DefaultValue, Description) \ + RegisterFlag(parser, #Name, Description, &f->Name); +#include "sancov_flags.inc" +#undef SANCOV_FLAG +} + +static const char *MaybeCallSancovDefaultOptions() { + return (&__sancov_default_options) ? __sancov_default_options() : ""; +} + +void InitializeSancovFlags() { + SancovFlags *f = sancov_flags(); + f->SetDefaults(); + + FlagParser parser; + RegisterSancovFlags(&parser, f); + + parser.ParseString(MaybeCallSancovDefaultOptions()); + parser.ParseString(GetEnv("SANCOV_OPTIONS")); + + ReportUnrecognizedFlags(); + if (f->help) parser.PrintFlagDescriptions(); +} + +} // namespace __sancov |