1# RUN: yaml2obj %s -o %t.obj
2# RUN: lld-link %t.obj %S/Inputs/pdb-import-gc.lib -debug -entry:main \
3# RUN:          -nodefaultlib -opt:ref -out:%t.exe -pdb:%t.pdb
4# RUN: llvm-pdbutil dump -globals -symbols %t.pdb | FileCheck %s
5
6# This tests the case where an __imp_ chunk is discarded by linker GC. The debug
7# info may refer to the __imp_ symbol still.
8
9# Compile this code with MSVC to regenerate the test case:
10#   extern char __declspec(dllimport) __wc_mb_cur;
11#   int discarded() { return __wc_mb_cur; }
12#   int main() { return g2; }
13
14# CHECK:                             Global Symbols
15# CHECK-NEXT: ============================================================
16# CHECK-NEXT:   Records
17# CHECK-NEXT:       20 | S_GDATA32 [size = 32] `__imp___wc_mb_cur`
18# CHECK-NEXT:            type = 0x0070 (char), addr = 0000:0000
19
20# CHECK:                                Symbols
21# CHECK-NEXT: ============================================================
22# CHECK-NEXT:   Mod 0000 | `{{.*}}pdb-import-gc.yaml.tmp.obj`:
23# CHECK-NEXT:   Mod 0001 | `* Linker *`:
24
25--- !COFF
26header:
27  Machine:         IMAGE_FILE_MACHINE_AMD64
28  Characteristics: [  ]
29sections:
30  - Name:            '.debug$S'
31    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
32    Alignment:       1
33    Subsections:
34      - !Symbols
35        Records:
36          - Kind:            S_GDATA32
37            DataSym:
38              Type:            112
39              DisplayName:     __imp___wc_mb_cur
40      - !StringTable
41        Strings:
42    Relocations:
43      - VirtualAddress:  20
44        SymbolName:      __imp___wc_mb_cur
45        Type:            IMAGE_REL_AMD64_SECREL
46      - VirtualAddress:  24
47        SymbolName:      __imp___wc_mb_cur
48        Type:            IMAGE_REL_AMD64_SECTION
49  - Name:            '.text$mn'
50    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
51    Alignment:       16
52    SectionData:     488B05000000000FBE00C3
53    Relocations:
54      - VirtualAddress:  3
55        SymbolName:      __imp___wc_mb_cur
56        Type:            IMAGE_REL_AMD64_REL32
57  - Name:            '.text$mn'
58    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
59    Alignment:       16
60    SectionData:     B82A000000C3
61symbols:
62  - Name:            '.debug$S'
63    Value:           0
64    SectionNumber:   1
65    SimpleType:      IMAGE_SYM_TYPE_NULL
66    ComplexType:     IMAGE_SYM_DTYPE_NULL
67    StorageClass:    IMAGE_SYM_CLASS_STATIC
68    SectionDefinition:
69      Length:          240
70      NumberOfRelocations: 2
71      NumberOfLinenumbers: 0
72      CheckSum:        0
73      Number:          0
74  - Name:            '.text$mn'
75    Value:           0
76    SectionNumber:   2
77    SimpleType:      IMAGE_SYM_TYPE_NULL
78    ComplexType:     IMAGE_SYM_DTYPE_NULL
79    StorageClass:    IMAGE_SYM_CLASS_STATIC
80    SectionDefinition:
81      Length:          11
82      NumberOfRelocations: 1
83      NumberOfLinenumbers: 0
84      CheckSum:        2906070869
85      Number:          0
86      Selection:       IMAGE_COMDAT_SELECT_NODUPLICATES
87  - Name:            '.text$mn'
88    Value:           0
89    SectionNumber:   3
90    SimpleType:      IMAGE_SYM_TYPE_NULL
91    ComplexType:     IMAGE_SYM_DTYPE_NULL
92    StorageClass:    IMAGE_SYM_CLASS_STATIC
93    SectionDefinition:
94      Length:          6
95      NumberOfRelocations: 0
96      NumberOfLinenumbers: 0
97      CheckSum:        2139436471
98      Number:          0
99      Selection:       IMAGE_COMDAT_SELECT_NODUPLICATES
100  - Name:            discarded
101    Value:           0
102    SectionNumber:   2
103    SimpleType:      IMAGE_SYM_TYPE_NULL
104    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
105    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
106  - Name:            main
107    Value:           0
108    SectionNumber:   3
109    SimpleType:      IMAGE_SYM_TYPE_NULL
110    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
111    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
112  - Name:            __imp___wc_mb_cur
113    Value:           0
114    SectionNumber:   0
115    SimpleType:      IMAGE_SYM_TYPE_NULL
116    ComplexType:     IMAGE_SYM_DTYPE_NULL
117    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
118...
119