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
83 lines
1.7 KiB
Plaintext
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
|