From 2918d0b4b25d71d8d4b4cae9ce3721f1d147f43f Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Thu, 20 Oct 2016 00:13:34 +0000 Subject: [PATCH] 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. llvm-svn: 284680 --- lld/ELF/OutputSections.cpp | 2 +- lld/ELF/OutputSections.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp index 06c9de864272..90561bc5b04b 100644 --- a/lld/ELF/OutputSections.cpp +++ b/lld/ELF/OutputSections.cpp @@ -633,7 +633,7 @@ void GnuHashTableSection::addSymbols(std::vector &V) { 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())}); } diff --git a/lld/ELF/OutputSections.h b/lld/ELF/OutputSections.h index f73c41856c2b..f5a527094a8f 100644 --- a/lld/ELF/OutputSections.h +++ b/lld/ELF/OutputSections.h @@ -266,7 +266,7 @@ private: struct SymbolTableEntry { SymbolBody *Symbol; - std::size_t StrTabOffset; + size_t StrTabOffset; }; template