[llvm] r212596 - [ASan/Win] Don't instrument COMDAT globals. Properly fixes PR20244.
Rafael EspĂndola
rafael.espindola at gmail.com
Wed Jul 9 12:39:10 PDT 2014
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
More information about the llvm-commits
mailing list