summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/Archive.cpp
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2016-07-05 00:23:05 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2016-07-05 00:23:05 +0000
commitaecbdf70bfd3dbba8fe5c902046188821513e1b8 (patch)
treef99db926dbc38527396adbadffda9eee8fdb347b /llvm/lib/Object/Archive.cpp
parent4a105d73a9c0633a248049a622d6a74fa5dd8ca4 (diff)
downloadbcm5719-llvm-aecbdf70bfd3dbba8fe5c902046188821513e1b8.tar.gz
bcm5719-llvm-aecbdf70bfd3dbba8fe5c902046188821513e1b8.zip
Object: support empty UID/GID fields
Normal archives do not have empty UID/GID fields. However, the Microsoft Import library format is a customized archive (it just uses an alternate symbol index format). When the import library is constructed by lib.exe, the UID and GID fields are left empty. Do not abort on such an input. llvm-svn: 274528
Diffstat (limited to 'llvm/lib/Object/Archive.cpp')
-rw-r--r--llvm/lib/Object/Archive.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index 4e9a18ee40c..4720bf894e9 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -69,14 +69,20 @@ sys::TimeValue ArchiveMemberHeader::getLastModified() const {
unsigned ArchiveMemberHeader::getUID() const {
unsigned Ret;
- if (StringRef(UID, sizeof(UID)).rtrim(' ').getAsInteger(10, Ret))
+ StringRef User = StringRef(UID, sizeof(UID)).rtrim(' ');
+ if (User.empty())
+ return 0;
+ if (User.getAsInteger(10, Ret))
llvm_unreachable("UID time not a decimal number.");
return Ret;
}
unsigned ArchiveMemberHeader::getGID() const {
unsigned Ret;
- if (StringRef(GID, sizeof(GID)).rtrim(' ').getAsInteger(10, Ret))
+ StringRef Group = StringRef(GID, sizeof(GID)).rtrim(' ');
+ if (Group.empty())
+ return 0;
+ if (Group.getAsInteger(10, Ret))
llvm_unreachable("GID time not a decimal number.");
return Ret;
}
OpenPOWER on IntegriCloud