Files
clang-p2996/llvm/test/tools/llvm-ar/mri-addlib.test
gbreynoo 7de277d684 [llvm-ar] Improve MRI script CREATE command handling
I discovered that when compared to GNU the llvm-ar MRI script parsing of
CREATE could lead to some strange behaviour. This fix improves the error
message in the case when no archive name is given and will not allow the
adding of members until CREATE is called. Along with this change I added
more testing of the CREATE command.

Differential Revision: https://reviews.llvm.org/D128055
2022-06-27 11:11:16 +01:00

83 lines
1.7 KiB
Plaintext

## Test the ADDLIB MRI command.
# RUN: rm -rf %t && split-file %s %t
# RUN: cd %t
# RUN: yaml2obj %s -o f.o
# RUN: llvm-ar r f.a f.o
## Merge contents of archives.
# RUN: llvm-ar -M < add-lib.mri
# RUN: llvm-nm --print-armap add-lib.a | FileCheck --check-prefix=SYMS %s
# RUN: llvm-ar t add-lib.a | FileCheck --check-prefix=FILES %s
# SYMS: f in {{.*}}
# FILES: f.o
## ADDLIB with non-archive file.
# RUN: not llvm-ar -M < bad-lib.mri 2>&1 | FileCheck --check-prefix=PARSE %s
# RUN: not ls bad-lib.a
# PARSE: error: script line 2: could not parse library
## No create command.
# RUN: not llvm-ar -M < no-create.mri 2>&1 | FileCheck --check-prefix=NOCREATE %s
# NOCREATE: error: script line 1: no output archive has been opened
## ADDLIB with missing file.
# RUN: not llvm-ar -M < missing.mri 2>&1 | FileCheck -DMSG=%errc_ENOENT %s --check-prefix=MISSING
# RUN: not ls missing.a
# MISSING: error: script line 2: could not open library missing-lib.a: [[MSG]]
## ADD same lib twice.
# RUN: llvm-ar -M < duplicate.mri
# RUN: llvm-nm --print-armap duplicate.a | FileCheck --check-prefix=SYMS2 %s
# RUN: llvm-ar t duplicate.a | FileCheck --check-prefix=FILES2 %s
# SYMS2-COUNT-2: f in {{.*}}
# FILES2-COUNT-2: f.o
#--- f.yaml
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Symbols:
- Name: f
Binding: STB_GLOBAL
Section: .text
...
#--- add-lib.mri
CREATE add-lib.a
ADDLIB f.a
SAVE
#--- text.txt
I AM NOT AN ARCHIVE
#--- bad-lib.mri
CREATE bad-lib.a
ADDLIB text.txt
SAVE
#--- no-create.mri
ADDLIB f.a
SAVE
#--- missing.mri
CREATE missing.a
ADDLIB missing-lib.a
SAVE
#--- duplicate.mri
CREATE duplicate.a
ADDLIB f.a
ADDLIB f.a
SAVE