[lld] r248102 - COFF: Fix thread-safety bug.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 19 16:14:52 PDT 2015


Author: ruiu
Date: Sat Sep 19 18:14:51 2015
New Revision: 248102

URL: http://llvm.org/viewvc/llvm-project?rev=248102&view=rev
Log:
COFF: Fix thread-safety bug.

LTOModule doesn't seem to be thread-safe, so guard that with mutex.

Modified:
    lld/trunk/COFF/InputFiles.cpp
    lld/trunk/COFF/InputFiles.h

Modified: lld/trunk/COFF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/InputFiles.cpp?rev=248102&r1=248101&r2=248102&view=diff
==============================================================================
--- lld/trunk/COFF/InputFiles.cpp (original)
+++ lld/trunk/COFF/InputFiles.cpp Sat Sep 19 18:14:51 2015
@@ -310,6 +310,9 @@ void ImportFile::parse() {
 }
 
 void BitcodeFile::parse() {
+  // Usually parse() is thread-safe, but bitcode file is an exception.
+  std::lock_guard<std::mutex> Lock(Mu);
+
   std::string Err;
   M.reset(LTOModule::createFromBuffer(MB.getBufferStart(),
                                       MB.getBufferSize(),
@@ -356,5 +359,7 @@ MachineTypes BitcodeFile::getMachineType
   }
 }
 
+std::mutex BitcodeFile::Mu;
+
 } // namespace coff
 } // namespace lld

Modified: lld/trunk/COFF/InputFiles.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/InputFiles.h?rev=248102&r1=248101&r2=248102&view=diff
==============================================================================
--- lld/trunk/COFF/InputFiles.h (original)
+++ lld/trunk/COFF/InputFiles.h Sat Sep 19 18:14:51 2015
@@ -17,6 +17,7 @@
 #include "llvm/Object/COFF.h"
 #include "llvm/Support/StringSaver.h"
 #include <memory>
+#include <mutex>
 #include <set>
 #include <vector>
 
@@ -213,6 +214,7 @@ private:
   std::vector<SymbolBody *> SymbolBodies;
   llvm::BumpPtrAllocator Alloc;
   std::unique_ptr<LTOModule> M;
+  static std::mutex Mu;
 };
 
 } // namespace coff




More information about the llvm-commits mailing list