[PATCH] D48141: [ASan] Linker-initialize static ScopedInErrorReport::current_error_.
    Aleksey Shlyapnikov via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Jun 13 12:06:31 PDT 2018
    
    
  
alekseyshl created this revision.
alekseyshl added reviewers: eugenis, morehouse.
Herald added subscribers: Sanitizers, delcypher, kubamracek.
Static ScopedInErrorReport::current_error_ can be linker initialized to
shave one global ctor call on the startup and be __asan_init-safe.
Issue: https://github.com/google/sanitizers/issues/194
Repository:
  rCRT Compiler Runtime
https://reviews.llvm.org/D48141
Files:
  lib/asan/asan_errors.h
  lib/asan/asan_report.cc
Index: lib/asan/asan_report.cc
===================================================================
--- lib/asan/asan_report.cc
+++ lib/asan/asan_report.cc
@@ -206,7 +206,7 @@
   bool halt_on_error_;
 };
 
-ErrorDescription ScopedInErrorReport::current_error_;
+ErrorDescription ScopedInErrorReport::current_error_(LINKER_INITIALIZED);
 
 void ReportDeadlySignal(const SignalContext &sig) {
   ScopedInErrorReport in_report(/*fatal*/ true);
Index: lib/asan/asan_errors.h
===================================================================
--- lib/asan/asan_errors.h
+++ lib/asan/asan_errors.h
@@ -414,6 +414,7 @@
   };
 
   ErrorDescription() { internal_memset(this, 0, sizeof(*this)); }
+  explicit ErrorDescription(LinkerInitialized) {}
   ASAN_FOR_EACH_ERROR_KIND(ASAN_ERROR_DESCRIPTION_CONSTRUCTOR)
 
   bool IsValid() { return kind != kErrorKindInvalid; }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48141.151223.patch
Type: text/x-patch
Size: 860 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180613/97116360/attachment.bin>
    
    
More information about the llvm-commits
mailing list