From c60042ef8ba88b8c59537cbfb4cb2227b9ee93e0 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Fri, 12 Dec 2014 01:08:24 +0000 Subject: [PATCH] [ASan] Group all flag parsing code together. NFC. llvm-svn: 224087 --- compiler-rt/lib/asan/asan_rtl.cc | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/compiler-rt/lib/asan/asan_rtl.cc b/compiler-rt/lib/asan/asan_rtl.cc index 34fb111d5607..0f608f13c92f 100644 --- a/compiler-rt/lib/asan/asan_rtl.cc +++ b/compiler-rt/lib/asan/asan_rtl.cc @@ -299,21 +299,32 @@ void InitializeFlags(Flags *f, const char *env) { // Override from command line. ParseFlagsFromString(f, env); + if (env) + VReport(1, "Parsed ASAN_OPTIONS: %s\n", env); + + // If ASan starts in deactivated state, stash and clear some flags. + // Otherwise, let activation flags override current settings. + if (flags()->start_deactivated) + AsanStartDeactivated(); + else + ParseExtraActivationFlags(); + if (common_flags()->help) { PrintFlagDescriptions(); } + // Flag validation: if (!CAN_SANITIZE_LEAKS && cf->detect_leaks) { Report("%s: detect_leaks is not supported on this platform.\n", SanitizerToolName); cf->detect_leaks = false; } - // Make "strict_init_order" imply "check_initialization_order". // TODO(samsonov): Use a single runtime flag for an init-order checker. if (f->strict_init_order) { f->check_initialization_order = true; } + CHECK_LE(flags()->min_uar_stack_size_log, flags()->max_uar_stack_size_log); } // Parse flags that may change between startup and activation. @@ -574,20 +585,11 @@ static void AsanInitInternal() { SetCheckFailedCallback(AsanCheckFailed); SetPrintfAndReportCallback(AppendToErrorMessageBuffer); - if (!flags()->start_deactivated) - ParseExtraActivationFlags(); - __sanitizer_set_report_path(common_flags()->log_path); + + // Enable UAR detection, if required. __asan_option_detect_stack_use_after_return = flags()->detect_stack_use_after_return; - CHECK_LE(flags()->min_uar_stack_size_log, flags()->max_uar_stack_size_log); - - if (options) { - VReport(1, "Parsed ASAN_OPTIONS: %s\n", options); - } - - if (flags()->start_deactivated) - AsanStartDeactivated(); // Re-exec ourselves if we need to set additional env or command line args. MaybeReexec();