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