From ec80354873dab4a4b0263724f357b022bc19880a Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Fri, 11 Nov 2016 19:18:45 +0000 Subject: [PATCH] [sancov] Don't instrument MSVC CRT stdio config helpers They get called before initialization, which is a problem for winasan. Test coming in compiler-rt. llvm-svn: 286615 --- llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp index 93ca866..73881fa 100644 --- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp +++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp @@ -448,6 +448,11 @@ bool SanitizerCoverageModule::runOnFunction(Function &F) { return false; // Should not instrument sanitizer init functions. if (F.getName().startswith("__sanitizer_")) return false; // Don't instrument __sanitizer_* callbacks. + // Don't instrument MSVC CRT configuration helpers. They may run before normal + // initialization. + if (F.getName() == "__local_stdio_printf_options" || + F.getName() == "__local_stdio_scanf_options") + return false; // Don't instrument functions using SEH for now. Splitting basic blocks like // we do for coverage breaks WinEHPrepare. // FIXME: Remove this when SEH no longer uses landingpad pattern matching. -- 2.7.4