[llvm] r274528 - Object: support empty UID/GID fields

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 4 17:23:05 PDT 2016


Author: compnerd
Date: Mon Jul  4 19:23:05 2016
New Revision: 274528

URL: http://llvm.org/viewvc/llvm-project?rev=274528&view=rev
Log:
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.

Added:
    llvm/trunk/test/tools/llvm-ar/Inputs/msvc-import.lib
    llvm/trunk/test/tools/llvm-ar/empty-uid-gid.test
Modified:
    llvm/trunk/lib/Object/Archive.cpp

Modified: llvm/trunk/lib/Object/Archive.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/Archive.cpp?rev=274528&r1=274527&r2=274528&view=diff
==============================================================================
--- llvm/trunk/lib/Object/Archive.cpp (original)
+++ llvm/trunk/lib/Object/Archive.cpp Mon Jul  4 19:23:05 2016
@@ -69,14 +69,20 @@ sys::TimeValue ArchiveMemberHeader::getL
 
 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;
 }

Added: llvm/trunk/test/tools/llvm-ar/Inputs/msvc-import.lib
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-ar/Inputs/msvc-import.lib?rev=274528&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-ar/Inputs/msvc-import.lib (added)
+++ llvm/trunk/test/tools/llvm-ar/Inputs/msvc-import.lib Mon Jul  4 19:23:05 2016
@@ -0,0 +1,2 @@
+!<arch>
+library.dll/    28800                   0       0         `

Added: llvm/trunk/test/tools/llvm-ar/empty-uid-gid.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-ar/empty-uid-gid.test?rev=274528&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-ar/empty-uid-gid.test (added)
+++ llvm/trunk/test/tools/llvm-ar/empty-uid-gid.test Mon Jul  4 19:23:05 2016
@@ -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




More information about the llvm-commits mailing list