[llvm] r224860 - Band-aid fix for PR22032: don't emit DWARF debug info if AddressSanitizer is enabled on Windows

Timur Iskhodzhanov timurrrr at google.com
Fri Dec 26 09:00:51 PST 2014


Author: timurrrr
Date: Fri Dec 26 11:00:51 2014
New Revision: 224860

URL: http://llvm.org/viewvc/llvm-project?rev=224860&view=rev
Log:
Band-aid fix for PR22032: don't emit DWARF debug info if AddressSanitizer is enabled on Windows

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    llvm/trunk/test/DebugInfo/COFF/asan-module-ctor.ll

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=224860&r1=224859&r2=224860&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Fri Dec 26 11:00:51 2014
@@ -222,12 +222,25 @@ bool AsmPrinter::doInitialization(Module
   }
 
   if (MAI->doesSupportDebugInformation()) {
-    if (Triple(TM.getTargetTriple()).isKnownWindowsMSVCEnvironment())
+    bool skip_dwarf = false;
+    if (Triple(TM.getTargetTriple()).isKnownWindowsMSVCEnvironment()) {
       Handlers.push_back(HandlerInfo(new WinCodeViewLineTables(this),
                                      DbgTimerName,
                                      CodeViewLineTablesGroupName));
-    DD = new DwarfDebug(this, &M);
-    Handlers.push_back(HandlerInfo(DD, DbgTimerName, DWARFGroupName));
+      // FIXME: Don't emit DWARF debug info if there's at least one function
+      // with AddressSanitizer instrumentation.
+      // This is a band-aid fix for PR22032.
+      for (auto &F : M.functions()) {
+        if (F.hasFnAttribute(Attribute::SanitizeAddress)) {
+          skip_dwarf = true;
+          break;
+        }
+      }
+    }
+    if (!skip_dwarf) {
+      DD = new DwarfDebug(this, &M);
+      Handlers.push_back(HandlerInfo(DD, DbgTimerName, DWARFGroupName));
+    }
   }
 
   EHStreamer *ES = nullptr;

Modified: llvm/trunk/test/DebugInfo/COFF/asan-module-ctor.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/asan-module-ctor.ll?rev=224860&r1=224859&r2=224860&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/asan-module-ctor.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/asan-module-ctor.ll Fri Dec 26 11:00:51 2014
@@ -13,6 +13,9 @@
 ; X86-NEXT: calll   ___asan_init_v3
 ; X86-NEXT: retl
 
+; Make sure we don't put any DWARF debug info for ASan-instrumented modules.
+; X86-NOT: DWARF
+
 ; ModuleID = 'asan.c'
 target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32"
 target triple = "i686-pc-win32"





More information about the llvm-commits mailing list