Compiler projects using llvm
## Test that we can pass multiple files. There are several ways to do this:
## list them all individually, use --libdir to shorten the list, or use a
## response file (with or without --libdir).
##
# REQUIRES: x86-registered-target
#
# RUN: mkdir -p %t.dir
# RUN: yaml2obj --docnum=1 %s -o %t.dir/file1
# RUN: yaml2obj --docnum=2 %s -o %t.dir/file2
# RUN: yaml2obj --docnum=3 %s -o %t.dir/file3

# RUN: llvm-tli-checker --triple x86_64-scei-ps4 --report=full \
# RUN:     %t.dir/file1 %t.dir/file2 %t.dir/file3 | \
# RUN:   FileCheck %s
#
## Same result using --libdir.
# RUN: llvm-tli-checker --triple x86_64-scei-ps4 --report=full \
# RUN:     --libdir=%t.dir file1 file2 file3 | \
# RUN:   FileCheck %s
#
## And with a response file.
# RUN: echo -e "file1\nfile2\nfile3\n" > %t.dir/resp1.txt
# RUN: llvm-tli-checker --triple x86_64-scei-ps4 --report=full \
# RUN:     --libdir=%t.dir @%t.dir/resp1.txt | \
# RUN:   FileCheck %s
#
# RUN: echo %t.dir/file1  > %t.dir/resp2.txt
# RUN: echo %t.dir/file2 >> %t.dir/resp2.txt
# RUN: echo %t.dir/file3 >> %t.dir/resp2.txt
# RUN: llvm-tli-checker --triple x86_64-scei-ps4 --report=full \
# RUN:     @%t.dir/resp2.txt | \
# RUN:   FileCheck %s
#
## Also check that an archive works. Put file1 and file2 into an archive,
## and pass the archive name plus file3 on the command line.
# RUN: rm -f %t.dir/archive.a
# RUN: llvm-ar rc %t.dir/archive.a %t.dir/file1 %t.dir/file2
# RUN: llvm-tli-checker --triple x86_64-scei-ps4 --report=full \
# RUN:     --libdir=%t.dir archive.a file3 | \
# RUN:   FileCheck %s
#
# CHECK: TLI knows {{[0-9]+}} symbols, [[#AVAILABLE:]] available
# CHECK: >> TLI no  SDK yes: '_ZdaPvj'
# CHECK: == TLI yes SDK yes: 'abs'
# CHECK: == TLI yes SDK yes: 'calloc'
## The yes/no and yes/yes should add up to the total available.
## The no/yes aren't included in the total available.
# CHECK: << Total TLI yes SDK no: [[#AVAILABLE-2]]
# CHECK: >> Total TLI no  SDK yes: 1{{$}}
# CHECK: == Total TLI yes SDK yes: 2{{$}}

## --separate should give one summary per input file (as listed on the
# command line; it doesn't break things down by archive member).
# RUN: llvm-tli-checker --triple x86_64-scei-ps4 --separate \
# RUN:     --libdir=%t.dir archive.a file3 | \
# RUN:   FileCheck %s --check-prefix=SEPARATE
#
# SEPARATE: TLI knows {{[0-9]+}} symbols, [[#AVAILABLE:]] available
# SEPARATE: Found 2 global function symbols in '{{.*}}archive.a'
# SEPARATE: << Total TLI yes SDK no:  [[#AVAILABLE-1]]
# SEPARATE: >> Total TLI no  SDK yes: 1{{$}}
# SEPARATE: == Total TLI yes SDK yes: 1{{$}}
# SEPARATE: Found 1 global function symbols in '{{.*}}file3'
# SEPARATE: << Total TLI yes SDK no:  [[#AVAILABLE-1]]
# SEPARATE: >> Total TLI no  SDK yes: 0{{$}}
# SEPARATE: == Total TLI yes SDK yes: 1{{$}}

# file1
--- !ELF
FileHeader:
    Class:           ELFCLASS64
    Data:            ELFDATA2LSB
    OSABI:           ELFOSABI_FREEBSD
    Type:            ET_DYN
    Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
DynamicSymbols:
  - Name:            abs
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL

# file2
--- !ELF
FileHeader:
    Class:           ELFCLASS64
    Data:            ELFDATA2LSB
    OSABI:           ELFOSABI_FREEBSD
    Type:            ET_DYN
    Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
DynamicSymbols:
  - Name:            _ZdaPvj
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL

# file3
--- !ELF
FileHeader:
    Class:           ELFCLASS64
    Data:            ELFDATA2LSB
    OSABI:           ELFOSABI_FREEBSD
    Type:            ET_DYN
    Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
DynamicSymbols:
  - Name:            calloc
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL