Don't reject an archive with just a symbol table.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 8 Jul 2015 22:27:54 +0000 (22:27 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 8 Jul 2015 22:27:54 +0000 (22:27 +0000)
It is pretty unambiguous how to interpret it and gnu ar accepts it too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241750 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Object/Archive.cpp
test/Object/Inputs/symtab-only.a [new file with mode: 0644]
test/Object/archive-toc.test

index d03c328ae3b17ba1797f12f0f6a7d6222627c223..b9d949b4428c42343d7baacc3769c521db4022a4 100644 (file)
@@ -288,7 +288,7 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
 
     ++i;
     if (i == e) {
-      ec = object_error::parse_failed;
+      ec = std::error_code();
       return;
     }
     Name = i->getRawName();
diff --git a/test/Object/Inputs/symtab-only.a b/test/Object/Inputs/symtab-only.a
new file mode 100644 (file)
index 0000000..611236b
Binary files /dev/null and b/test/Object/Inputs/symtab-only.a differ
index 79a6e0e0ba8049b8ecedeaf846d6b4ee25d9c57e..93eb49ab7842d6c36f4cb025b82388909d2ddd0b 100644 (file)
@@ -34,3 +34,7 @@ THIN:      rw-r--r-- 1000/1000      8 2014-12-16 00:56:27.000000000 evenlen
 THIN-NEXT: rw-r--r-- 1000/1000      7 2014-12-16 00:56:27.000000000 oddlen
 THIN-NEXT: rwxr-xr-x 1000/1000   1465 2014-12-16 00:56:27.000000000 very_long_bytecode_file_name.bc
 THIN-NEXT: rw-r--r-- 1000/1000   2280 2014-12-16 00:56:27.000000000 IsNAN.o
+
+Test reading an archive with just a symbol table. We use to reject them.
+RUN: llvm-ar tv %p/Inputs/symtab-only.a | FileCheck --allow-empty --check-prefix=EMPTY %s
+EMPTY-NOT: {{.}}