<div dir="ltr"><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 28, 2014 at 11:45 AM, Warren Hunt <span dir="ltr"><<a href="mailto:whunt@google.com" target="_blank">whunt@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">This commit breaks functionality because asan uses the ModuleID when checking blacklists.  We're going to need to fix it and/or revert it.</div>

</blockquote><div><br></div><div>To be more precise: all sanitizers assume that ModuleIdentifier contains the path to the source file being compiled with Clang.</div><div>(e.g. if you run "clang path/to/file.cc" module identifier will be "path/to/file.cc"). After this change the module identifier became only</div>
<div>the basename of a source file ("file.cc"). In particular, this:</div><div>1) breaks down -fsanitize-blacklist functionality - when ASan LLVM instrumentation pass decides which globals should be instrumented,</div>
<div>it reads the contents of blacklist file and can drop the global from instrumentation if it is contained in a blacklisted source file.</div><div>2) reduces the quality of ASan reports. ASan stores the module identifier string in an executable to later print it in the error report if</div>
<div>necessary (this will work independent of whether there is debug info in executable or no). Of course, printing the full path to the source file</div><div>is better than printing only the basename.</div><div><br></div>
<div>However, it seems that there are no guarantees whatsoever about the ModuleID and sanitizers shouldn't depend on it. Instead, we should</div><div>put as much blacklist functionality as possible into the Clang itself (some of that is already done). So:</div>
<div><br></div><div>regarding (1), we should instead exclude globals from instrumentation in Clang. We'll probably be able to land this patch back after that, unless</div><div>there are more issues in TSan/MSan.</div>
<div><br></div><div>regarding (2), we need to design/implement a robust way to pass data from Clang to sanitizer instrumentation passes anyway, which wouldn't</div><div>depend on LLVM ModuleID, or other obscure stuff like temporary names (<a href="https://code.google.com/p/address-sanitizer/issues/detail?id=299">https://code.google.com/p/address-sanitizer/issues/detail?id=299</a>).</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span><font color="#888888"><div>

<br></div><div>-Warren</div></font></span></div><div><div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Fri, May 23, 2014 at 12:34 AM, Robert Lytton <span dir="ltr"><<a href="mailto:robert@xmos.com" target="_blank">robert@xmos.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


Author: rlytton<br>
Date: Fri May 23 02:34:08 2014<br>
New Revision: 209503<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=209503&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=209503&view=rev</a><br>
Log:<br>
Fix '-main-file-name <name>' so that it is used for the ModuleID.<br>
<br>
Summary:<br>
Previously, you could not specify the original file name when passing a preprocessed file into the compiler<br>
Now you can use 'clang -Xclang -main-file-name -Xclang <original file name> ...'<br>
Or 'clang -cc1 -main-file-name <original file name> ...'<br>
<br>
Added:<br>
    cfe/trunk/test/CodeGen/main-file-name.c<br>
Modified:<br>
    cfe/trunk/lib/CodeGen/CodeGenAction.cpp<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=209503&r1=209502&r2=209503&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=209503&r1=209502&r2=209503&view=diff</a><br>



==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Fri May 23 02:34:08 2014<br>
@@ -551,9 +551,12 @@ ASTConsumer *CodeGenAction::CreateASTCon<br>
     LinkModuleToUse = ModuleOrErr.get();<br>
   }<br>
<br>
+  StringRef MainFileName = getCompilerInstance().getCodeGenOpts().MainFileName;<br>
+  if (MainFileName.empty())<br>
+    MainFileName = InFile;<br>
   BEConsumer = new BackendConsumer(BA, CI.getDiagnostics(), CI.getCodeGenOpts(),<br>
                                    CI.getTargetOpts(), CI.getLangOpts(),<br>
-                                   CI.getFrontendOpts().ShowTimers, InFile,<br>
+                                   CI.getFrontendOpts().ShowTimers, MainFileName,<br>
                                    LinkModuleToUse, OS.release(), *VMContext);<br>
   return BEConsumer;<br>
 }<br>
<br>
Added: cfe/trunk/test/CodeGen/main-file-name.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/main-file-name.c?rev=209503&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/main-file-name.c?rev=209503&view=auto</a><br>



==============================================================================<br>
--- cfe/trunk/test/CodeGen/main-file-name.c (added)<br>
+++ cfe/trunk/test/CodeGen/main-file-name.c Fri May 23 02:34:08 2014<br>
@@ -0,0 +1,6 @@<br>
+// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s<br>
+// RUN: %clang_cc1 -emit-llvm -o - %s -main-file-name <a href="http://some.name" target="_blank">some.name</a> | FileCheck -check-prefix NAMED %s<br>
+<br>
+// CHECK: ; ModuleID = '{{.*}}main-file-name.c'<br>
+// NAMED: ; ModuleID = '<a href="http://some.name" target="_blank">some.name</a>'<br>
+<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div>
</div></div>