Archive members cannot be larger than 4GB. Return a uint32_t.

llvm-svn: 185936
This commit is contained in:
Rafael Espindola 2013-07-09 12:45:11 +00:00
parent 7160fb6511
commit 8e9385ec63
2 changed files with 7 additions and 6 deletions

View File

@ -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 {

View File

@ -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) {