1*68d75effSDimitry Andric //===-- xray_basic_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 Basic flag parsing logic. 12*68d75effSDimitry Andric //===----------------------------------------------------------------------===// 13*68d75effSDimitry Andric 14*68d75effSDimitry Andric #include "xray_basic_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 /// Use via basicFlags(). 25*68d75effSDimitry Andric BasicFlags xray_basic_flags_dont_use_directly; 26*68d75effSDimitry Andric 27*68d75effSDimitry Andric void BasicFlags::setDefaults() XRAY_NEVER_INSTRUMENT { 28*68d75effSDimitry Andric #define XRAY_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue; 29*68d75effSDimitry Andric #include "xray_basic_flags.inc" 30*68d75effSDimitry Andric #undef XRAY_FLAG 31*68d75effSDimitry Andric } 32*68d75effSDimitry Andric 33*68d75effSDimitry Andric void registerXRayBasicFlags(FlagParser *P, 34*68d75effSDimitry Andric BasicFlags *F) XRAY_NEVER_INSTRUMENT { 35*68d75effSDimitry Andric #define XRAY_FLAG(Type, Name, DefaultValue, Description) \ 36*68d75effSDimitry Andric RegisterFlag(P, #Name, Description, &F->Name); 37*68d75effSDimitry Andric #include "xray_basic_flags.inc" 38*68d75effSDimitry Andric #undef XRAY_FLAG 39*68d75effSDimitry Andric } 40*68d75effSDimitry Andric 41*68d75effSDimitry Andric const char *useCompilerDefinedBasicFlags() XRAY_NEVER_INSTRUMENT { 42*68d75effSDimitry Andric #ifdef XRAY_BASIC_OPTIONS 43*68d75effSDimitry Andric return SANITIZER_STRINGIFY(XRAY_BASIC_OPTIONS); 44*68d75effSDimitry Andric #else 45*68d75effSDimitry Andric return ""; 46*68d75effSDimitry Andric #endif 47*68d75effSDimitry Andric } 48*68d75effSDimitry Andric 49*68d75effSDimitry Andric } // namespace __xray 50