Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[XRay][compiler-rt] Support string-based config for FDR mode
Summary: In this chage we add support for the string-based configuration mechanism for configuring FDR mode. We deprecate most of the `xray_fdr_log_*` flags that are set with the `XRAY_OPTIONS` environment variable. Instead we make the FDR implementation take defaults from the `XRAY_FDR_OPTIONS` environment variable, and use the flags defined in `xray_fdr_flags.{h,cc,inc}` for the options we support. This change addresses http://llvm.org/PR36790. Depends on D46173. Reviewers: eizan, pelikan, kpw, echristo Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D46174 llvm-svn: 331506
- Loading branch information
1 parent
cc80776
commit 5c389ac
Showing
9 changed files
with
208 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
//===-- xray_fdr_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 FDR flag parsing logic. | ||
//===----------------------------------------------------------------------===// | ||
|
||
#include "xray_fdr_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 { | ||
|
||
FDRFlags xray_fdr_flags_dont_use_directly; // use via fdrFlags(). | ||
|
||
void FDRFlags::setDefaults() XRAY_NEVER_INSTRUMENT { | ||
#define XRAY_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue; | ||
#include "xray_fdr_flags.inc" | ||
#undef XRAY_FLAG | ||
} | ||
|
||
void registerXRayFDRFlags(FlagParser *P, FDRFlags *F) XRAY_NEVER_INSTRUMENT { | ||
#define XRAY_FLAG(Type, Name, DefaultValue, Description) \ | ||
RegisterFlag(P, #Name, Description, &F->Name); | ||
#include "xray_fdr_flags.inc" | ||
#undef XRAY_FLAG | ||
} | ||
|
||
const char *useCompilerDefinedFDRFlags() XRAY_NEVER_INSTRUMENT { | ||
#ifdef XRAY_FDR_OPTIONS | ||
return SANITIZER_STRINGIFY(XRAY_FDR_OPTIONS); | ||
#else | ||
return ""; | ||
#endif | ||
} | ||
|
||
} // namespace __xray |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
//===-- xray_fdr_flags.h ---------------------------------------*- 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. | ||
// | ||
// This file defines the flags for the flight-data-recorder mode implementation. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
#ifndef XRAY_FDR_FLAGS_H | ||
#define XRAY_FDR_FLAGS_H | ||
|
||
#include "sanitizer_common/sanitizer_flag_parser.h" | ||
#include "sanitizer_common/sanitizer_internal_defs.h" | ||
|
||
namespace __xray { | ||
|
||
struct FDRFlags { | ||
#define XRAY_FLAG(Type, Name, DefaultValue, Description) Type Name; | ||
#include "xray_fdr_flags.inc" | ||
#undef XRAY_FLAG | ||
|
||
void setDefaults(); | ||
}; | ||
|
||
extern FDRFlags xray_fdr_flags_dont_use_directly; | ||
extern void registerXRayFDRFlags(FlagParser *P, FDRFlags *F); | ||
const char *useCompilerDefinedFDRFlags(); | ||
inline FDRFlags *fdrFlags() { return &xray_fdr_flags_dont_use_directly; } | ||
|
||
} // namespace __xray | ||
|
||
#endif // XRAY_FDR_FLAGS_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
//===-- xray_fdr_flags.inc --------------------------------------*- C++ -*-===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// XRay FDR Mode runtime flags. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
#ifndef XRAY_FLAG | ||
#error "Define XRAY_FLAG prior to including this file!" | ||
#endif | ||
|
||
// FDR (Flight Data Recorder) Mode logging options. | ||
XRAY_FLAG(int, func_duration_threshold_us, 5, | ||
"FDR logging will try to skip functions that execute for fewer " | ||
"microseconds than this threshold.") | ||
XRAY_FLAG(int, grace_period_ms, 100, | ||
"FDR logging will wait this much time in milliseconds before " | ||
"actually flushing the log; this gives a chance for threads to " | ||
"notice that the log has been finalized and clean up.") | ||
XRAY_FLAG(int, buffer_size, 16384, | ||
"Size of buffers in the circular buffer queue.") | ||
XRAY_FLAG(int, buffer_max, 100, "Maximum number of buffers in the queue.") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters