mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-28 05:19:42 +00:00
llvm-ar: Don't try to extract from thin archives.
This matches the gnu ar behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242162 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -183,6 +183,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
Kind kind() const { return (Kind)Format; }
|
Kind kind() const { return (Kind)Format; }
|
||||||
|
bool isThin() const { return IsThin; }
|
||||||
|
|
||||||
child_iterator child_begin(bool SkipInternal = true) const;
|
child_iterator child_begin(bool SkipInternal = true) const;
|
||||||
child_iterator child_end() const;
|
child_iterator child_end() const;
|
||||||
|
|||||||
@@ -45,3 +45,6 @@ CHECK: 1465 2004-11-19 03:01:31.000000000 very_long_bytecode_file_name.bc
|
|||||||
|
|
||||||
RUN: not llvm-ar x %p/Inputs/GNU.a foo.o 2>&1 | FileCheck --check-prefix=NOTFOUND %s
|
RUN: not llvm-ar x %p/Inputs/GNU.a foo.o 2>&1 | FileCheck --check-prefix=NOTFOUND %s
|
||||||
NOTFOUND: foo.o was not found
|
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
|
||||||
|
|||||||
@@ -391,6 +391,11 @@ static bool shouldCreateArchive(ArchiveOperation Op) {
|
|||||||
|
|
||||||
static void performReadOperation(ArchiveOperation Operation,
|
static void performReadOperation(ArchiveOperation Operation,
|
||||||
object::Archive *OldArchive) {
|
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();
|
bool Filter = !Members.empty();
|
||||||
for (const object::Archive::Child &C : OldArchive->children()) {
|
for (const object::Archive::Child &C : OldArchive->children()) {
|
||||||
ErrorOr<StringRef> NameOrErr = C.getName();
|
ErrorOr<StringRef> NameOrErr = C.getName();
|
||||||
|
|||||||
Reference in New Issue
Block a user