ubsan_flags.h revision 353358
1189251Ssam//===-- ubsan_flags.h -------------------------------------------*- C++ -*-===//
2189251Ssam//
3189251Ssam// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4189251Ssam// See https://llvm.org/LICENSE.txt for license information.
5189251Ssam// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6189251Ssam//
7189251Ssam//===----------------------------------------------------------------------===//
8189251Ssam//
9189251Ssam// Runtime flags for UndefinedBehaviorSanitizer.
10189251Ssam//
11189251Ssam//===----------------------------------------------------------------------===//
12189251Ssam#ifndef UBSAN_FLAGS_H
13189251Ssam#define UBSAN_FLAGS_H
14189251Ssam
15189251Ssam#include "sanitizer_common/sanitizer_internal_defs.h"
16189251Ssam
17189251Ssamnamespace __sanitizer {
18189251Ssamclass FlagParser;
19189251Ssam}
20189251Ssam
21189251Ssamnamespace __ubsan {
22189251Ssam
23189251Ssamstruct Flags {
24189251Ssam#define UBSAN_FLAG(Type, Name, DefaultValue, Description) Type Name;
25189251Ssam#include "ubsan_flags.inc"
26189251Ssam#undef UBSAN_FLAG
27189251Ssam
28189251Ssam  void SetDefaults();
29189251Ssam};
30189251Ssam
31189251Ssamextern Flags ubsan_flags;
32189251Ssaminline Flags *flags() { return &ubsan_flags; }
33189251Ssam
34189251Ssamvoid InitializeFlags();
35189251Ssamvoid RegisterUbsanFlags(FlagParser *parser, Flags *f);
36189251Ssam
37189251Ssamconst char *MaybeCallUbsanDefaultOptions();
38189251Ssam
39189251Ssam}  // namespace __ubsan
40189251Ssam
41189251Ssamextern "C" {
42189251Ssam// Users may provide their own implementation of __ubsan_default_options to
43189251Ssam// override the default flag values.
44189251SsamSANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
45189251Ssamconst char *__ubsan_default_options();
46189251Ssam}  // extern "C"
47189251Ssam
48189251Ssam#endif  // UBSAN_FLAGS_H
49189251Ssam