1# RUN: %clang -emit-interface-stubs -o - %s %S/object.ifs -emit-merged-ifs | \
2# RUN: FileCheck %s --check-prefixes=CHECK-IFS
3
4# RUN: %clang -emit-interface-stubs -o - %s %S/object.ifs | llvm-readelf --all | \
5# RUN: FileCheck %s --check-prefixes=CHECK-ELF
6
7# RUN: %clang -emit-interface-stubs -o - %s %s -emit-merged-ifs | \
8# RUN: FileCheck %s --check-prefixes=CHECK-MERGE-IFS
9
10# CHECK-IFS: --- !experimental-ifs-v2
11# CHECK-IFS-NEXT: IfsVersion: 2.0
12# CHECK-IFS-NEXT: Triple:          x86_64-linux-gnu
13# CHECK-IFS-NEXT: ObjectFileFormat: ELF
14# CHECK-IFS-NEXT: Symbols:
15# CHECK-IFS-DAG:   - { Name: a, Type: Func }
16# CHECK-IFS-DAG:   - { Name: b, Type: Object, Size: 4 }
17# CHECK-IFS: ...
18
19# CHECK-ELF: ELF Header:
20# CHECK-ELF:   Class:                             ELF64
21# CHECK-ELF:   Type:                              DYN (Shared object file)
22# CHECK-ELF:   FUNC    GLOBAL DEFAULT  1 a
23# CHECK-ELF:   OBJECT  GLOBAL DEFAULT  1 b
24
25# Here we are testing to see if two identical symbols will merge.
26# CHECK-MERGE-IFS: --- !experimental-ifs-v2
27# CHECK-MERGE-IFS-NEXT: IfsVersion: 2.0
28# CHECK-MERGE-IFS-NEXT: Triple:          x86_64-linux-gnu
29# CHECK-MERGE-IFS-NEXT: ObjectFileFormat: ELF
30# CHECK-MERGE-IFS-NEXT: Symbols:
31# CHECK-MERGE-IFS-NEXT:   - { Name: a, Type: Func }
32# CHECK-MERGE-IFS-NEXT: ...
33
34--- !experimental-ifs-v2
35IfsVersion: 2.0
36Triple: x86_64-linux-gnu
37ObjectFileFormat: ELF
38Symbols:
39  - { Name: a, Type: Func }
40...
41