mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01: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:
parent
63fc45cc8d
commit
552365689b
@ -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;
|
||||
}
|
||||
|
BIN
test/tools/llvm-ar/Inputs/msvc-import.lib
Normal file
BIN
test/tools/llvm-ar/Inputs/msvc-import.lib
Normal file
Binary file not shown.
3
test/tools/llvm-ar/empty-uid-gid.test
Normal file
3
test/tools/llvm-ar/empty-uid-gid.test
Normal 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
|
Loading…
Reference in New Issue
Block a user