| # RUN: rm -rf %t && split-file %s %t |
| # RUN: cd %t |
| |
| # RUN: yaml2obj %S/Inputs/elf.yaml -o elf.o |
| # RUN: llvm-ar -rc elf.a elf.o text.txt |
| # RUN: llvm-ar -rc --thin thin-elf.a elf.o text.txt |
| |
| ## Basic delete. |
| # RUN: llvm-ar -M < delete.mri |
| # RUN: llvm-ar tv delete.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| # DELETE: text.txt |
| |
| ## Delete so the archive is empty. |
| # RUN: llvm-ar -M < empty.mri |
| # RUN: llvm-ar tv empty.ar | FileCheck %s --check-prefixes=EMPTY --allow-empty |
| |
| # EMPTY-NOT: elf.o |
| |
| ## Attempt to delete a file that is not in the archive. |
| # RUN: llvm-ar -M < bad.mri |
| # RUN: llvm-ar tv bad.ar | FileCheck %s --check-prefixes=BOTH |
| |
| ## Delete operation in a script with comments. |
| # RUN: llvm-ar -M < comment.mri |
| # RUN: llvm-ar tv comment.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| ## Add a file that has been deleted. |
| # RUN: llvm-ar -M < re-add.mri |
| # RUN: llvm-ar tv re-add.ar | FileCheck %s --check-prefixes=BOTH |
| |
| # BOTH-DAG: text.txt |
| # BOTH-DAG: elf.o |
| |
| ## Add the same file twice and delete them. It is expected behaviour |
| ## that one delete command deletes all matching members. |
| # RUN: llvm-ar -M < duplicate.mri |
| # RUN: llvm-ar tv duplicate.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| ## Add and delete the same file twice. |
| # RUN: llvm-ar -M < duplicate-re-add.mri |
| # RUN: llvm-ar tv duplicate-re-add.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| ## Attempt to delete the same file twice. |
| # RUN: llvm-ar -M < extra-delete.mri |
| # RUN: llvm-ar tv extra-delete.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| ## Add the same file to a thin archive twice. |
| # RUN: llvm-ar -M < thin-duplicate.mri |
| # RUN: llvm-ar tv thin-duplicate.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| ## Delete a file after it was added via ADDLIB. |
| # RUN: llvm-ar -M < addlib.mri |
| # RUN: llvm-ar tv addlib.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| ## Attempt to delete an archive after it was added via ADDLIB. |
| # RUN: llvm-ar -M < addlib-deletelib.mri |
| # RUN: llvm-ar tv addlib-deletelib.ar | FileCheck %s --check-prefixes=BOTH |
| |
| ## Add the same archive twice to a thin archive and then delete some members. |
| # RUN: llvm-ar -M < addlib-thin-duplicate.mri |
| # RUN: llvm-ar tv addlib-thin-duplicate.ar | FileCheck %s --check-prefixes=DELETE --implicit-check-not=elf.o |
| |
| #--- text.txt |
| I AM A TEXT FILE |
| |
| #--- delete.mri |
| create delete.ar |
| addmod text.txt |
| addmod elf.o |
| delete elf.o |
| save |
| end |
| |
| #--- empty.mri |
| create empty.ar |
| addmod elf.o |
| delete elf.o |
| save |
| end |
| |
| #--- bad.mri |
| create bad.ar |
| addmod text.txt |
| addmod elf.o |
| delete bad.o |
| save |
| end |
| |
| #--- comment.mri |
| create comment.ar |
| addmod elf.o |
| ; comment |
| addmod text.txt |
| ;comment |
| delete elf.o |
| * comment |
| save |
| *comment |
| end |
| |
| #--- re-add.mri |
| create re-add.ar |
| addmod elf.o |
| addmod text.txt |
| delete elf.o |
| addmod elf.o |
| save |
| end |
| |
| #--- duplicate.mri |
| create duplicate.ar |
| addmod elf.o |
| addmod elf.o |
| addmod text.txt |
| delete elf.o |
| save |
| end |
| |
| #--- duplicate-re-add.mri |
| create duplicate-re-add.ar |
| addmod elf.o |
| delete elf.o |
| addmod text.txt |
| addmod elf.o |
| delete elf.o |
| save |
| end |
| |
| #--- extra-delete.mri |
| create extra-delete.ar |
| addmod elf.o |
| addmod text.txt |
| delete elf.o |
| delete elf.o |
| save |
| end |
| |
| #--- thin-duplicate.mri |
| createthin thin-duplicate.ar |
| addmod elf.o |
| addmod elf.o |
| addmod text.txt |
| delete elf.o |
| save |
| end |
| |
| #--- addlib.mri |
| create addlib.ar |
| addlib elf.a |
| delete elf.o |
| save |
| end |
| |
| #--- addlib-deletelib.mri |
| create addlib-deletelib.ar |
| addlib elf.a |
| delete elf.a |
| save |
| end |
| |
| #--- addlib-thin-duplicate.mri |
| createthin addlib-thin-duplicate.ar |
| addlib thin-elf.a |
| addlib thin-elf.a |
| delete elf.o |
| save |
| end |