diff --git a/include/llvm/Object/Archive.h b/include/llvm/Object/Archive.h index 198491c3769..05595572dde 100644 --- a/include/llvm/Object/Archive.h +++ b/include/llvm/Object/Archive.h @@ -33,7 +33,8 @@ struct ArchiveMemberHeader { /// Get the name without looking up long names. llvm::StringRef getName() const; - uint64_t getSize() const; + /// Members are not larger than 4GB. + uint32_t getSize() const; }; class Archive : public Binary { diff --git a/lib/Object/Archive.cpp b/lib/Object/Archive.cpp index 14b21fd6361..52578943dec 100644 --- a/lib/Object/Archive.cpp +++ b/lib/Object/Archive.cpp @@ -54,11 +54,11 @@ StringRef ArchiveMemberHeader::getName() const { return llvm::StringRef(Name, end); } -uint64_t ArchiveMemberHeader::getSize() const { - uint64_t ret; - if (llvm::StringRef(Size, sizeof(Size)).rtrim(" ").getAsInteger(10, ret)) - llvm_unreachable("Size is not an integer."); - return ret; +uint32_t ArchiveMemberHeader::getSize() const { + uint32_t Ret; + if (llvm::StringRef(Size, sizeof(Size)).rtrim(" ").getAsInteger(10, Ret)) + llvm_unreachable("Size is not a decimal number."); + return Ret; } static const ArchiveMemberHeader *toHeader(const char *base) {