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