[llvm] r242162 - llvm-ar: Don't try to extract from thin archives.
Rafael Espindola
rafael.espindola at gmail.com
Tue Jul 14 09:55:13 PDT 2015
Author: rafael
Date: Tue Jul 14 11:55:13 2015
New Revision: 242162
URL: http://llvm.org/viewvc/llvm-project?rev=242162&view=rev
Log:
llvm-ar: Don't try to extract from thin archives.
This matches the gnu ar behavior.
Modified:
llvm/trunk/include/llvm/Object/Archive.h
llvm/trunk/test/Object/archive-extract.test
llvm/trunk/tools/llvm-ar/llvm-ar.cpp
Modified: llvm/trunk/include/llvm/Object/Archive.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/Archive.h?rev=242162&r1=242161&r2=242162&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/Archive.h (original)
+++ llvm/trunk/include/llvm/Object/Archive.h Tue Jul 14 11:55:13 2015
@@ -183,6 +183,7 @@ public:
};
Kind kind() const { return (Kind)Format; }
+ bool isThin() const { return IsThin; }
child_iterator child_begin(bool SkipInternal = true) const;
child_iterator child_end() const;
Modified: llvm/trunk/test/Object/archive-extract.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/archive-extract.test?rev=242162&r1=242161&r2=242162&view=diff
==============================================================================
--- llvm/trunk/test/Object/archive-extract.test (original)
+++ llvm/trunk/test/Object/archive-extract.test Tue Jul 14 11:55:13 2015
@@ -45,3 +45,6 @@ CHECK: 1465 2004-11-19 03:01:31.00000000
RUN: not llvm-ar x %p/Inputs/GNU.a foo.o 2>&1 | FileCheck --check-prefix=NOTFOUND %s
NOTFOUND: foo.o was not found
+
+RUN: not llvm-ar x %p/Inputs/thin.a foo.o 2>&1 | FileCheck %s --check-prefix=THINEXTRACT
+THINEXTRACT: extracting from a thin archive is not supported
Modified: llvm/trunk/tools/llvm-ar/llvm-ar.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=242162&r1=242161&r2=242162&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-ar/llvm-ar.cpp (original)
+++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp Tue Jul 14 11:55:13 2015
@@ -391,6 +391,11 @@ static bool shouldCreateArchive(ArchiveO
static void performReadOperation(ArchiveOperation Operation,
object::Archive *OldArchive) {
+ if (Operation == Extract && OldArchive->isThin()) {
+ errs() << "extracting from a thin archive is not supported\n";
+ std::exit(1);
+ }
+
bool Filter = !Members.empty();
for (const object::Archive::Child &C : OldArchive->children()) {
ErrorOr<StringRef> NameOrErr = C.getName();
More information about the llvm-commits
mailing list