diff options
| author | Dean Michael Berris <dberris@google.com> | 2018-05-04 06:27:53 +0000 |
|---|---|---|
| committer | Dean Michael Berris <dberris@google.com> | 2018-05-04 06:27:53 +0000 |
| commit | 47e6b8c2c74e18d1f3bf30a52790e1f1aafea5cc (patch) | |
| tree | 3a33a627c21a47aa03d90bf0962a1716a86e3fb8 /compiler-rt/lib/xray/xray_basic_flags.cc | |
| parent | 5c389ace7dbe2419ff62bfe4d26cf29be06db6a7 (diff) | |
| download | bcm5719-llvm-47e6b8c2c74e18d1f3bf30a52790e1f1aafea5cc.tar.gz bcm5719-llvm-47e6b8c2c74e18d1f3bf30a52790e1f1aafea5cc.zip | |
[XRay][compiler-rt] Support string-based config for Basic mode.
Summary:
This addresses http://llvm.org/PR36790.
This change allows the XRay Basic Mode implementation to use the
string-based initialization routine provided through
`__xray_log_init_mode(...)`. In the process, we've also deprecated some
flags defined for the `XRAY_OPTIONS` environment variable.
We then introduce another environment variable that can control the XRay
Basic Mode implementation through `XRAY_BASIC_OPTIONS`.
We also rename files from `xray_inmemory_log` to `xray_basic_logging` to
be more in line with the mode implementation.
Depends on D46174.
Reviewers: echristo, kpw, pelikan, eizan
Reviewed By: kpw
Subscribers: mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D46246
llvm-svn: 331507
Diffstat (limited to 'compiler-rt/lib/xray/xray_basic_flags.cc')
| -rw-r--r-- | compiler-rt/lib/xray/xray_basic_flags.cc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/compiler-rt/lib/xray/xray_basic_flags.cc b/compiler-rt/lib/xray/xray_basic_flags.cc new file mode 100644 index 00000000000..14d805c71a8 --- /dev/null +++ b/compiler-rt/lib/xray/xray_basic_flags.cc @@ -0,0 +1,50 @@ +//===-- xray_basic_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 XRay, a dynamic runtime instrumentation system. +// +// XRay Basic flag parsing logic. +//===----------------------------------------------------------------------===// + +#include "xray_basic_flags.h" +#include "sanitizer_common/sanitizer_common.h" +#include "sanitizer_common/sanitizer_flag_parser.h" +#include "sanitizer_common/sanitizer_libc.h" +#include "xray_defs.h" + +using namespace __sanitizer; + +namespace __xray { + +/// Use via basicFlags(). +BasicFlags xray_basic_flags_dont_use_directly; + +void BasicFlags::setDefaults() XRAY_NEVER_INSTRUMENT { +#define XRAY_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue; +#include "xray_basic_flags.inc" +#undef XRAY_FLAG +} + +void registerXRayBasicFlags(FlagParser *P, + BasicFlags *F) XRAY_NEVER_INSTRUMENT { +#define XRAY_FLAG(Type, Name, DefaultValue, Description) \ + RegisterFlag(P, #Name, Description, &F->Name); +#include "xray_basic_flags.inc" +#undef XRAY_FLAG +} + +const char *useCompilerDefinedBasicFlags() XRAY_NEVER_INSTRUMENT { +#ifdef XRAY_BASIC_OPTIONS + return SANITIZER_STRINGIFY(XRAY_BASIC_OPTIONS); +#else + return ""; +#endif +} + +} // namespace __xray |

