| ## 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 |