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
This commit is contained in:
parent
4a105d73a9
commit
aecbdf70bf
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
!<arch>
|
||||
library.dll/ 28800 0 0 `
|
|
@ -0,0 +1,3 @@
|
|||
RUN: llvm-ar tv %S/Inputs/msvc-import.lib | FileCheck %s
|
||||
|
||||
CHECK: --------- 0/0 0 1970-01-01 00:00:00.000000000 library.dll
|
Loading…
Reference in New Issue