1*a7c257b0Skamil //===-- ubsan_flags.h -------------------------------------------*- C++ -*-===// 2*a7c257b0Skamil // 3*a7c257b0Skamil // The LLVM Compiler Infrastructure 4*a7c257b0Skamil // 5*a7c257b0Skamil // This file is distributed under the University of Illinois Open Source 6*a7c257b0Skamil // License. See LICENSE.TXT for details. 7*a7c257b0Skamil // 8*a7c257b0Skamil //===----------------------------------------------------------------------===// 9*a7c257b0Skamil // 10*a7c257b0Skamil // Runtime flags for UndefinedBehaviorSanitizer. 11*a7c257b0Skamil // 12*a7c257b0Skamil //===----------------------------------------------------------------------===// 13*a7c257b0Skamil #ifndef UBSAN_FLAGS_H 14*a7c257b0Skamil #define UBSAN_FLAGS_H 15*a7c257b0Skamil 16*a7c257b0Skamil #include "sanitizer_common/sanitizer_internal_defs.h" 17*a7c257b0Skamil 18*a7c257b0Skamil namespace __sanitizer { 19*a7c257b0Skamil class FlagParser; 20*a7c257b0Skamil } 21*a7c257b0Skamil 22*a7c257b0Skamil namespace __ubsan { 23*a7c257b0Skamil 24*a7c257b0Skamil struct Flags { 25*a7c257b0Skamil #define UBSAN_FLAG(Type, Name, DefaultValue, Description) Type Name; 26*a7c257b0Skamil #include "ubsan_flags.inc" 27*a7c257b0Skamil #undef UBSAN_FLAG 28*a7c257b0Skamil 29*a7c257b0Skamil void SetDefaults(); 30*a7c257b0Skamil }; 31*a7c257b0Skamil 32*a7c257b0Skamil extern Flags ubsan_flags; flags()33*a7c257b0Skamilinline Flags *flags() { return &ubsan_flags; } 34*a7c257b0Skamil 35*a7c257b0Skamil void InitializeFlags(); 36*a7c257b0Skamil void RegisterUbsanFlags(FlagParser *parser, Flags *f); 37*a7c257b0Skamil 38*a7c257b0Skamil const char *MaybeCallUbsanDefaultOptions(); 39*a7c257b0Skamil 40*a7c257b0Skamil } // namespace __ubsan 41*a7c257b0Skamil 42*a7c257b0Skamil extern "C" { 43*a7c257b0Skamil // Users may provide their own implementation of __ubsan_default_options to 44*a7c257b0Skamil // override the default flag values. 45*a7c257b0Skamil SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 46*a7c257b0Skamil const char *__ubsan_default_options(); 47*a7c257b0Skamil } // extern "C" 48*a7c257b0Skamil 49*a7c257b0Skamil #endif // UBSAN_FLAGS_H 50