1Make a DLL that exports a few functions, then make a DLL with PDBs that imports
2them. Check that the __imp_ pointer and the generated thunks appear in the
3publics stream.
4
5RUN: yaml2obj < %p/Inputs/export.yaml > %t1.obj
6RUN: lld-link /out:%t1.dll /dll %t1.obj /implib:%t1.lib \
7RUN:   /export:exportfn1 /export:exportfn2
8RUN: yaml2obj < %p/Inputs/import.yaml > %t2.obj
9RUN: lld-link /out:%t2.exe /pdb:%t2.pdb /pdbaltpath:test.pdb \
10RUN:   /debug /entry:main %t2.obj %t1.lib
11RUN: llvm-pdbutil dump %t2.pdb -publics -section-contribs | FileCheck %s
12
13CHECK:                             Public Symbols
14CHECK-NEXT: ============================================================
15CHECK-NEXT:    Records
16CHECK-NEXT:      112 | S_PUB32 [size = 20] `main`
17CHECK-NEXT:            flags = function, addr = 0001:0000
18CHECK-NEXT:       64 | S_PUB32 [size = 24] `exportfn1`
19CHECK-NEXT:            flags = function, addr = 0001:0016
20CHECK-NEXT:       88 | S_PUB32 [size = 24] `exportfn2`
21CHECK-NEXT:            flags = function, addr = 0001:0032
22CHECK-NEXT:       32 | S_PUB32 [size = 32] `__imp_exportfn2`
23CHECK-NEXT:            flags = none, addr = 0002:0136
24CHECK-NEXT:        0 | S_PUB32 [size = 32] `__imp_exportfn1`
25CHECK-NEXT:            flags = none, addr = 0002:0128
26
27CHECK:                         Section Contributions
28CHECK-NEXT: ============================================================
29    main
30CHECK-NEXT:   SC[.text]   | mod = 0, 0001:0000, size = 8, data crc = 0, reloc crc = 0
31CHECK-NEXT:                 IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_EXECUTE |
32CHECK-NEXT:                 IMAGE_SCN_MEM_READ
33    exportfn1 thunk
34CHECK-NEXT:   SC[.text]   | mod = 1, 0001:0016, size = 6, data crc = 0, reloc crc = 0
35CHECK-NEXT:                 IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ
36    exportfn2 thunk
37CHECK-NEXT:   SC[.text]   | mod = 1, 0001:0032, size = 6, data crc = 0, reloc crc = 0
38CHECK-NEXT:                 IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ
39    .rdata debug directory data chunks
40CHECK-NEXT:   SC[.rdata]  | mod = 1, 0002:0000, size = 28, data crc = 0, reloc crc = 0
41CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ
42CHECK-NEXT:   SC[.rdata]  | mod = 1, 0002:0028, size = 33, data crc = 0, reloc crc = 0
43CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ
44