Sameer Arora | 303a7f7 | 2020-07-01 15:02:22 -0700 | [diff] [blame] | 1 | ## This test checks that a correct static library is created. |
| 2 | |
| 3 | # RUN: yaml2obj %S/Inputs/input1.yaml -o %t-input1.o |
| 4 | # RUN: yaml2obj %S/Inputs/input2.yaml -o %t-input2.o |
| 5 | |
| 6 | # RUN: rm -rf %t.lib |
| 7 | # RUN: llvm-libtool-darwin -static -o %t.lib %t-input1.o %t-input2.o |
| 8 | |
| 9 | ## Check that binaries are present: |
| 10 | # RUN: llvm-ar t %t.lib | \ |
| 11 | # RUN: FileCheck %s --check-prefix=CHECK-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp |
| 12 | |
| 13 | # CHECK-NAMES: [[PREFIX]]-input1.o |
| 14 | # CHECK-NAMES-NEXT: [[PREFIX]]-input2.o |
| 15 | |
| 16 | ## Check that symbols are present: |
| 17 | # RUN: llvm-nm --print-armap %t.lib | \ |
| 18 | # RUN: FileCheck %s --check-prefix=CHECK-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines |
| 19 | |
| 20 | # CHECK-SYMBOLS: Archive map |
| 21 | # CHECK-SYMBOLS-NEXT: _symbol1 in [[PREFIX]]-input1.o |
| 22 | # CHECK-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o |
| 23 | # CHECK-SYMBOLS-EMPTY: |
| 24 | |
| 25 | ## Check that output archive is in Darwin format: |
| 26 | # RUN: llvm-objdump --macho --archive-headers %t.lib | \ |
| 27 | # RUN: FileCheck %s --check-prefix=FORMAT -DPREFIX=%basename_t.tmp -DARCHIVE=%t |
| 28 | |
| 29 | # FORMAT: Archive : [[ARCHIVE]] |
| 30 | # FORMAT-NEXT: __.SYMDEF |
| 31 | # FORMAT-NEXT: [[PREFIX]]-input1.o |
| 32 | # FORMAT-NEXT: [[PREFIX]]-input2.o |
| 33 | # FORMAT-NOT: {{.}} |
| 34 | |
| 35 | ## Check that the output file is overwritten: |
| 36 | # RUN: llvm-libtool-darwin -static -o %t.lib %t-input2.o |
| 37 | # RUN: llvm-ar t %t.lib | \ |
| 38 | # RUN: FileCheck %s --check-prefix=OVERWRITE-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp |
| 39 | # RUN: llvm-nm --print-armap %t.lib | \ |
| 40 | # RUN: FileCheck %s --check-prefix=OVERWRITE-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines |
| 41 | |
| 42 | # OVERWRITE-NAMES: [[PREFIX]]-input2.o |
| 43 | |
| 44 | # OVERWRITE-SYMBOLS: Archive map |
| 45 | # OVERWRITE-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o |
| 46 | # OVERWRITE-SYMBOLS-EMPTY: |
| 47 | |
| 48 | ## Duplicate a binary: |
| 49 | ## cctools' libtool raises a warning in this case. |
| 50 | ## The warning is not yet implemented for llvm-libtool-darwin. |
| 51 | # RUN: llvm-libtool-darwin -static -o %t.lib %t-input1.o %t-input2.o %t-input1.o 2>&1 | \ |
| 52 | # RUN: FileCheck %s --allow-empty --implicit-check-not={{.}} |
| 53 | # RUN: llvm-ar t %t.lib | \ |
| 54 | # RUN: FileCheck %s --check-prefix=DUPLICATE-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp |
| 55 | # RUN: llvm-nm --print-armap %t.lib | \ |
| 56 | # RUN: FileCheck %s --check-prefix=DUPLICATE-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines |
| 57 | |
| 58 | # DUPLICATE-NAMES: [[PREFIX]]-input1.o |
| 59 | # DUPLICATE-NAMES-NEXT: [[PREFIX]]-input2.o |
| 60 | # DUPLICATE-NAMES-NEXT: [[PREFIX]]-input1.o |
| 61 | |
| 62 | # DUPLICATE-SYMBOLS: Archive map |
| 63 | # DUPLICATE-SYMBOLS-NEXT: _symbol1 in [[PREFIX]]-input1.o |
| 64 | # DUPLICATE-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o |
| 65 | # DUPLICATE-SYMBOLS-NEXT: _symbol1 in [[PREFIX]]-input1.o |
| 66 | # DUPLICATE-SYMBOLS-EMPTY: |