1*68d75effSDimitry Andric //===-- xray_fdr_flags.cpp --------------------------------------*- C++ -*-===// 2*68d75effSDimitry Andric // 3*68d75effSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*68d75effSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*68d75effSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*68d75effSDimitry Andric // 7*68d75effSDimitry Andric //===----------------------------------------------------------------------===// 8*68d75effSDimitry Andric // 9*68d75effSDimitry Andric // This file is a part of XRay, a dynamic runtime instrumentation system. 10*68d75effSDimitry Andric // 11*68d75effSDimitry Andric // XRay FDR flag parsing logic. 12*68d75effSDimitry Andric //===----------------------------------------------------------------------===// 13*68d75effSDimitry Andric 14*68d75effSDimitry Andric #include "xray_fdr_flags.h" 15*68d75effSDimitry Andric #include "sanitizer_common/sanitizer_common.h" 16*68d75effSDimitry Andric #include "sanitizer_common/sanitizer_flag_parser.h" 17*68d75effSDimitry Andric #include "sanitizer_common/sanitizer_libc.h" 18*68d75effSDimitry Andric #include "xray_defs.h" 19*68d75effSDimitry Andric 20*68d75effSDimitry Andric using namespace __sanitizer; 21*68d75effSDimitry Andric 22*68d75effSDimitry Andric namespace __xray { 23*68d75effSDimitry Andric 24*68d75effSDimitry Andric FDRFlags xray_fdr_flags_dont_use_directly; // use via fdrFlags(). 25*68d75effSDimitry Andric 26*68d75effSDimitry Andric void FDRFlags::setDefaults() XRAY_NEVER_INSTRUMENT { 27*68d75effSDimitry Andric #define XRAY_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue; 28*68d75effSDimitry Andric #include "xray_fdr_flags.inc" 29*68d75effSDimitry Andric #undef XRAY_FLAG 30*68d75effSDimitry Andric } 31*68d75effSDimitry Andric 32*68d75effSDimitry Andric void registerXRayFDRFlags(FlagParser *P, FDRFlags *F) XRAY_NEVER_INSTRUMENT { 33*68d75effSDimitry Andric #define XRAY_FLAG(Type, Name, DefaultValue, Description) \ 34*68d75effSDimitry Andric RegisterFlag(P, #Name, Description, &F->Name); 35*68d75effSDimitry Andric #include "xray_fdr_flags.inc" 36*68d75effSDimitry Andric #undef XRAY_FLAG 37*68d75effSDimitry Andric } 38*68d75effSDimitry Andric 39*68d75effSDimitry Andric const char *useCompilerDefinedFDRFlags() XRAY_NEVER_INSTRUMENT { 40*68d75effSDimitry Andric #ifdef XRAY_FDR_OPTIONS 41*68d75effSDimitry Andric return SANITIZER_STRINGIFY(XRAY_FDR_OPTIONS); 42*68d75effSDimitry Andric #else 43*68d75effSDimitry Andric return ""; 44*68d75effSDimitry Andric #endif 45*68d75effSDimitry Andric } 46*68d75effSDimitry Andric 47*68d75effSDimitry Andric } // namespace __xray 48