1 //===-- ubsan_flags.cc ----------------------------------------------------===//
3 // This file is distributed under the University of Illinois Open Source
4 // License. See LICENSE.TXT for details.
6 //===----------------------------------------------------------------------===//
8 // Runtime flags for UndefinedBehaviorSanitizer.
10 //===----------------------------------------------------------------------===//
12 #include "ubsan_flags.h"
13 #include "sanitizer_common/sanitizer_common.h"
14 #include "sanitizer_common/sanitizer_flags.h"
18 static const char *MaybeCallUbsanDefaultOptions() {
19 return (&__ubsan_default_options
) ? __ubsan_default_options() : "";
22 void InitializeCommonFlags() {
23 CommonFlags
*cf
= common_flags();
24 SetCommonFlagsDefaults(cf
);
25 cf
->print_summary
= false;
26 // Override from user-specified string.
27 ParseCommonFlagsFromString(cf
, MaybeCallUbsanDefaultOptions());
28 // Override from environment variable.
29 ParseCommonFlagsFromString(cf
, GetEnv("UBSAN_OPTIONS"));
34 static void ParseFlagsFromString(Flags
*f
, const char *str
) {
37 ParseFlag(str
, &f
->halt_on_error
, "halt_on_error",
38 "Crash the program after printing the first error report");
39 ParseFlag(str
, &f
->print_stacktrace
, "print_stacktrace",
40 "Include full stacktrace into an error report");
43 void InitializeFlags() {
46 f
->halt_on_error
= false;
47 f
->print_stacktrace
= false;
48 // Override from user-specified string.
49 ParseFlagsFromString(f
, MaybeCallUbsanDefaultOptions());
50 // Override from environment variable.
51 ParseFlagsFromString(f
, GetEnv("UBSAN_OPTIONS"));
54 } // namespace __ubsan
56 #if !SANITIZER_SUPPORTS_WEAK_HOOKS
58 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
59 const char *__ubsan_default_options() { return ""; }