[lld] r284680 - Fix narrowing conversion error in 32-bit MSVC builds

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 19 17:13:34 PDT 2016


Author: rnk
Date: Wed Oct 19 19:13:34 2016
New Revision: 284680

URL: http://llvm.org/viewvc/llvm-project?rev=284680&view=rev
Log:
Fix narrowing conversion error in 32-bit MSVC builds

Use size_t instead of ELFT::uint for the string table offset. If the
linker is built 32-bit, it can't write an output file larger than 2GB.
Other code in this area uses size_t as well.

Modified:
    lld/trunk/ELF/OutputSections.cpp
    lld/trunk/ELF/OutputSections.h

Modified: lld/trunk/ELF/OutputSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=284680&r1=284679&r2=284680&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.cpp (original)
+++ lld/trunk/ELF/OutputSections.cpp Wed Oct 19 19:13:34 2016
@@ -633,7 +633,7 @@ void GnuHashTableSection<ELFT>::addSymbo
     return;
   for (auto I = Mid, E = V.end(); I != E; ++I) {
     SymbolBody *B = I->Symbol;
-    typename ELFT::uint StrOff = I->StrTabOffset;
+    size_t StrOff = I->StrTabOffset;
     Symbols.push_back({B, StrOff, hashGnu(B->getName())});
   }
 

Modified: lld/trunk/ELF/OutputSections.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.h?rev=284680&r1=284679&r2=284680&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.h (original)
+++ lld/trunk/ELF/OutputSections.h Wed Oct 19 19:13:34 2016
@@ -266,7 +266,7 @@ private:
 
 struct SymbolTableEntry {
   SymbolBody *Symbol;
-  std::size_t StrTabOffset;
+  size_t StrTabOffset;
 };
 
 template <class ELFT>




More information about the llvm-commits mailing list