From a04933edc114475ba38a26a70b24d0b4a98cd1f7 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 8 Jul 2015 22:27:54 +0000 Subject: [PATCH] Don't reject an archive with just a symbol table. 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 | 2 +- test/Object/Inputs/symtab-only.a | Bin 0 -> 72 bytes test/Object/archive-toc.test | 4 ++++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 test/Object/Inputs/symtab-only.a diff --git a/lib/Object/Archive.cpp b/lib/Object/Archive.cpp index d03c328ae3b..b9d949b4428 100644 --- a/lib/Object/Archive.cpp +++ b/lib/Object/Archive.cpp @@ -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 index 0000000000000000000000000000000000000000..611236bf3a1582693caaae0e1ea33eadff7002ab GIT binary patch literal 72 scmY$iNi0gvu;bEKKm~>-#%9Kr#ui4V3JL~bDP&SX!33^6fr|kM0L+sM4FCWD literal 0 HcmV?d00001 diff --git a/test/Object/archive-toc.test b/test/Object/archive-toc.test index 79a6e0e0ba8..93eb49ab784 100644 --- a/test/Object/archive-toc.test +++ b/test/Object/archive-toc.test @@ -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: {{.}}