[llvm] r212596 - [ASan/Win] Don't instrument COMDAT globals. Properly fixes PR20244.

Reid Kleckner rnk at google.com
Wed Jul 9 12:47:07 PDT 2014


This fixes compiler-rt/test/asan/TestCases/Windows/dll_cerr.cc, but I
agree, this should have IR-to-IR tests in LLVM proper.


On Wed, Jul 9, 2014 at 12:39 PM, Rafael EspĂ­ndola <
rafael.espindola at gmail.com> wrote:

> testcase?
>
> On 9 July 2014 04:35, Timur Iskhodzhanov <timurrrr at google.com> wrote:
> > Author: timurrrr
> > Date: Wed Jul  9 03:35:33 2014
> > New Revision: 212596
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=212596&view=rev
> > Log:
> > [ASan/Win] Don't instrument COMDAT globals. Properly fixes PR20244.
> >
> > Modified:
> >     llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
> >
> > Modified: llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=212596&r1=212595&r2=212596&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
> (original)
> > +++ llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp Wed
> Jul  9 03:35:33 2014
> > @@ -923,11 +923,14 @@ bool AddressSanitizerModule::ShouldInstr
> >    if (!G->hasInitializer()) return false;
> >    if (GlobalWasGeneratedByAsan(G)) return false;  // Our own global.
> >    // Touch only those globals that will not be defined in other modules.
> > -  // Don't handle ODR type linkages since other modules may be built
> w/o asan.
> > +  // Don't handle ODR linkage types and COMDATs since other modules may
> be built
> > +  // without ASan.
> >    if (G->getLinkage() != GlobalVariable::ExternalLinkage &&
> >        G->getLinkage() != GlobalVariable::PrivateLinkage &&
> >        G->getLinkage() != GlobalVariable::InternalLinkage)
> >      return false;
> > +  if (G->hasComdat())
> > +    return false;
> >    // Two problems with thread-locals:
> >    //   - The address of the main thread's copy can't be computed at
> link-time.
> >    //   - Need to poison all copies, not just the main thread's one.
> > @@ -946,13 +949,6 @@ bool AddressSanitizerModule::ShouldInstr
> >      return false;
> >    }
> >
> > -  // Don't instrument private COMDAT globals on Windows until PR20244
> (linkage
> > -  // of vftables with RTTI) is properly fixed.
> > -  llvm::Triple TargetTriple(G->getParent()->getTargetTriple());
> > -  if (G->hasComdat() && G->getLinkage() ==
> GlobalVariable::PrivateLinkage &&
> > -      TargetTriple.isWindowsMSVCEnvironment())
> > -    return false;
> > -
> >    if (G->hasSection()) {
> >      StringRef Section(G->getSection());
> >      // Ignore the globals from the __OBJC section. The ObjC runtime
> assumes
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140709/2a25a430/attachment.html>


More information about the llvm-commits mailing list