[UBSan] Move all runtime flags parsing to ubsan_flags.cc.
No functionality change. llvm-svn: 214258
This commit is contained in:
parent
130765558b
commit
6ae5bac794
|
@ -17,18 +17,29 @@
|
|||
|
||||
namespace __ubsan {
|
||||
|
||||
void InitializeCommonFlags() {
|
||||
CommonFlags *cf = common_flags();
|
||||
SetCommonFlagsDefaults(cf);
|
||||
cf->print_summary = false;
|
||||
// Common flags may be overriden in UBSAN_OPTIONS.
|
||||
ParseCommonFlagsFromString(cf, GetEnv("UBSAN_OPTIONS"));
|
||||
}
|
||||
|
||||
Flags ubsan_flags;
|
||||
|
||||
static void ParseFlagsFromString(Flags *f, const char *str) {
|
||||
if (!str)
|
||||
return;
|
||||
ParseFlag(str, &f->print_stacktrace, "print_stacktrace",
|
||||
"Include full stacktrace into an error report");
|
||||
}
|
||||
|
||||
void InitializeFlags() {
|
||||
Flags *f = flags();
|
||||
// Default values.
|
||||
f->print_stacktrace = false;
|
||||
|
||||
const char *options = GetEnv("UBSAN_OPTIONS");
|
||||
if (options) {
|
||||
ParseFlag(options, &f->print_stacktrace, "print_stacktrace",
|
||||
"Include full stacktrace into an error report");
|
||||
}
|
||||
// Override from environment variable.
|
||||
ParseFlagsFromString(f, GetEnv("UBSAN_OPTIONS"));
|
||||
}
|
||||
|
||||
} // namespace __ubsan
|
||||
|
|
|
@ -22,6 +22,7 @@ struct Flags {
|
|||
extern Flags ubsan_flags;
|
||||
inline Flags *flags() { return &ubsan_flags; }
|
||||
|
||||
void InitializeCommonFlags();
|
||||
void InitializeFlags();
|
||||
|
||||
} // namespace __ubsan
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include "ubsan_flags.h"
|
||||
#include "sanitizer_common/sanitizer_common.h"
|
||||
#include "sanitizer_common/sanitizer_libc.h"
|
||||
#include "sanitizer_common/sanitizer_flags.h"
|
||||
#include "sanitizer_common/sanitizer_mutex.h"
|
||||
#include "sanitizer_common/sanitizer_symbolizer.h"
|
||||
|
||||
|
@ -38,11 +37,7 @@ void __ubsan::InitIfNecessary() {
|
|||
// common flags. It means, that we are not allowed to *use* common flags
|
||||
// in this function.
|
||||
SanitizerToolName = "UndefinedBehaviorSanitizer";
|
||||
CommonFlags *cf = common_flags();
|
||||
SetCommonFlagsDefaults(cf);
|
||||
cf->print_summary = false;
|
||||
// Common flags may only be modified via UBSAN_OPTIONS.
|
||||
ParseCommonFlagsFromString(cf, GetEnv("UBSAN_OPTIONS"));
|
||||
InitializeCommonFlags();
|
||||
Symbolizer::GetOrInit();
|
||||
}
|
||||
// Initialize UBSan-specific flags.
|
||||
|
|
Loading…
Reference in New Issue