From 2012593f180d29081e6c609f667e1f63b729209a Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 9 Jul 2013 12:45:11 +0000 Subject: [PATCH] Archive members cannot be larger than 4GB. Return a uint32_t. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185936 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/Archive.h | 3 ++- lib/Object/Archive.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) 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) { -- 2.34.1