xref: /netbsd-src/sys/external/bsd/compiler_rt/dist/lib/ubsan/ubsan_flags.h (revision a7c257b03e4462df2b1020128fb82716512d7856)
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*a7c257b0Skamil inline 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