llvm-project/compiler-rt/lib/xray/xray_basic_flags.cc
Dean Michael Berris 47e6b8c2c7 [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
2018-05-04 06:27:53 +00:00

51 lines
1.5 KiB
C++

//===-- 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