Archive members cannot be larger than 4GB. Return a uint32_t.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 9 Jul 2013 12:45:11 +0000 (12:45 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 9 Jul 2013 12:45:11 +0000 (12:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185936 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/Archive.h
lib/Object/Archive.cpp

index 198491c3769d9db443ff891d582409eae62a28bc..05595572dde1c235ca8d8e0f679d1d579800d607 100644 (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 {
index 14b21fd63612320ae7c02885c0d932c6a4ac7c87..52578943decd2d294540f9cae93f7ba091fa5b3b 100644 (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) {