1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

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:
Saleem Abdulrasool 2016-07-05 00:23:05 +00:00
parent 63fc45cc8d
commit 552365689b
3 changed files with 11 additions and 2 deletions

View File

@ -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;
}

Binary file not shown.

View File

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