1# RUN: yaml2obj < %s > %t.obj
2# RUN: lld-link /debug:dwarf /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib
3# RUN: llvm-readobj --symbols %t.exe | FileCheck %s
4# RUN: lld-link /debug:dwarf /opt:noref /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib
5# RUN: llvm-readobj --symbols %t.exe | FileCheck %s
6# RUN: lld-link /debug:symtab /opt:noref /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib
7# RUN: llvm-readobj --symbols %t.exe | FileCheck %s
8
9# RUN: lld-link /debug /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib
10# RUN: llvm-readobj --symbols %t.exe | FileCheck -check-prefix=NO %s
11
12# CHECK:      Symbols [
13# CHECK-NEXT:   Symbol {
14# CHECK-NEXT:     Name: .text
15# CHECK-NEXT:     Value: 0
16# CHECK-NEXT:     Section: .text (1)
17# CHECK-NEXT:     BaseType: Null (0x0)
18# CHECK-NEXT:     ComplexType: Null (0x0)
19# CHECK-NEXT:     StorageClass: Static (0x3)
20# CHECK-NEXT:     AuxSymbolCount: 0
21# CHECK-NEXT:   }
22# CHECK-NEXT:   Symbol {
23# CHECK-NEXT:     Name: .text2
24# CHECK-NEXT:     Value: 0
25# CHECK-NEXT:     Section: .text (1)
26# CHECK-NEXT:     BaseType: Null (0x0)
27# CHECK-NEXT:     ComplexType: Null (0x0)
28# CHECK-NEXT:     StorageClass: Static (0x3)
29# CHECK-NEXT:     AuxSymbolCount: 0
30# CHECK-NEXT:   }
31# CHECK-NEXT:   Symbol {
32# CHECK-NEXT:     Name: .data
33# CHECK-NEXT:     Value: 0
34# CHECK-NEXT:     Section: .data (3)
35# CHECK-NEXT:     BaseType: Null (0x0)
36# CHECK-NEXT:     ComplexType: Null (0x0)
37# CHECK-NEXT:     StorageClass: Static (0x3)
38# CHECK-NEXT:     AuxSymbolCount: 0
39# CHECK-NEXT:   }
40# CHECK-NEXT:   Symbol {
41# CHECK-NEXT:     Name: MessageBoxA
42# CHECK-NEXT:     Value: 80
43# CHECK-NEXT:     Section: .text (1)
44# CHECK-NEXT:     BaseType: Null (0x0)
45# CHECK-NEXT:     ComplexType: Null (0x0)
46# CHECK-NEXT:     StorageClass: External (0x2)
47# CHECK-NEXT:     AuxSymbolCount: 0
48# CHECK-NEXT:   }
49# CHECK-NEXT:   Symbol {
50# CHECK-NEXT:     Name: ExitProcess
51# CHECK-NEXT:     Value: 64
52# CHECK-NEXT:     Section: .text (1)
53# CHECK-NEXT:     BaseType: Null (0x0)
54# CHECK-NEXT:     ComplexType: Null (0x0)
55# CHECK-NEXT:     StorageClass: External (0x2)
56# CHECK-NEXT:     AuxSymbolCount: 0
57# CHECK-NEXT:   }
58# CHECK-NEXT:   Symbol {
59# CHECK-NEXT:     Name: message
60# CHECK-NEXT:     Value: 6
61# CHECK-NEXT:     Section: .text2
62# CHECK-NEXT:     BaseType: Null (0x0)
63# CHECK-NEXT:     ComplexType: Null (0x0)
64# CHECK-NEXT:     StorageClass: Static (0x3)
65# CHECK-NEXT:     AuxSymbolCount: 0
66# CHECK-NEXT:   }
67# CHECK-NEXT:   Symbol {
68# CHECK-NEXT:     Name: main
69# CHECK-NEXT:     Value: 0
70# CHECK-NEXT:     Section: .text (1)
71# CHECK-NEXT:     BaseType: Null (0x0)
72# CHECK-NEXT:     ComplexType: Null (0x0)
73# CHECK-NEXT:     StorageClass: External (0x2)
74# CHECK-NEXT:     AuxSymbolCount: 0
75# CHECK-NEXT:   }
76# CHECK-NEXT:   Symbol {
77# CHECK-NEXT:     Name: caption
78# CHECK-NEXT:     Value: 0
79# CHECK-NEXT:     Section: .text2
80# CHECK-NEXT:     BaseType: Null (0x0)
81# CHECK-NEXT:     ComplexType: Null (0x0)
82# CHECK-NEXT:     StorageClass: Static (0x3)
83# CHECK-NEXT:     AuxSymbolCount: 0
84# CHECK-NEXT:   }
85# CHECK-NEXT:   Symbol {
86# CHECK-NEXT:     Name: abs_symbol
87# CHECK-NEXT:     Value: 2662186735
88# CHECK-NEXT:     Section: IMAGE_SYM_ABSOLUTE (-1)
89# CHECK-NEXT:     BaseType: Null (0x0)
90# CHECK-NEXT:     ComplexType: Null (0x0)
91# CHECK-NEXT:     StorageClass: External (0x2)
92# CHECK-NEXT:     AuxSymbolCount: 0
93# CHECK-NEXT:   }
94# CHECK-NEXT: ]
95
96# NO: Symbols [
97
98--- !COFF
99header:
100  Machine:         IMAGE_FILE_MACHINE_AMD64
101  Characteristics: []
102sections:
103  - Name:            .text
104    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
105    Alignment:       4096
106    SectionData:     B800000000000000005068000000000000000068000000000000000050E8000000000000000050E8000000000000000050E80000000000000000
107    Relocations:
108      - VirtualAddress:  0
109        SymbolName:      abs_symbol
110        Type:            IMAGE_REL_AMD64_ADDR64
111      - VirtualAddress:  7
112        SymbolName:      caption
113        Type:            IMAGE_REL_AMD64_ADDR64
114      - VirtualAddress:  12
115        SymbolName:      message
116        Type:            IMAGE_REL_AMD64_ADDR64
117      - VirtualAddress:  18
118        SymbolName:      MessageBoxA
119        Type:            IMAGE_REL_AMD64_REL32
120      - VirtualAddress:  24
121        SymbolName:      ExitProcess
122        Type:            IMAGE_REL_AMD64_REL32
123      - VirtualAddress:  30
124        SymbolName:      __ImageBase
125        Type:            IMAGE_REL_AMD64_ADDR64
126  - Name:            .text2
127    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
128    Alignment:       4096
129    SectionData:     B800000000000000005068000000000000000068000000000000000050E8000000000000000050E8000000000000000050E80000000000000000
130    Relocations:
131      - VirtualAddress:  0
132        SymbolName:      abs_symbol
133        Type:            IMAGE_REL_AMD64_ADDR64
134      - VirtualAddress:  7
135        SymbolName:      caption
136        Type:            IMAGE_REL_AMD64_ADDR64
137      - VirtualAddress:  12
138        SymbolName:      message
139        Type:            IMAGE_REL_AMD64_ADDR64
140      - VirtualAddress:  18
141        SymbolName:      MessageBoxA
142        Type:            IMAGE_REL_AMD64_REL32
143      - VirtualAddress:  24
144        SymbolName:      ExitProcess
145        Type:            IMAGE_REL_AMD64_REL32
146      - VirtualAddress:  30
147        SymbolName:      __ImageBase
148        Type:            IMAGE_REL_AMD64_ADDR64
149  - Name:            .data
150    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
151    Alignment:       4
152    SectionData:     48656C6C6F0048656C6C6F20576F726C6400
153symbols:
154  - Name:            "@comp.id"
155    Value:           10394907
156    SectionNumber:   65535
157    SimpleType:      IMAGE_SYM_TYPE_NULL
158    ComplexType:     IMAGE_SYM_DTYPE_NULL
159    StorageClass:    IMAGE_SYM_CLASS_STATIC
160  - Name:            .text
161    Value:           0
162    SectionNumber:   1
163    SimpleType:      IMAGE_SYM_TYPE_NULL
164    ComplexType:     IMAGE_SYM_DTYPE_NULL
165    StorageClass:    IMAGE_SYM_CLASS_STATIC
166    SectionDefinition:
167      Length:          28
168      NumberOfRelocations: 6
169      NumberOfLinenumbers: 0
170      CheckSum:        0
171      Number:          0
172  - Name:            .text2
173    Value:           0
174    SectionNumber:   1
175    SimpleType:      IMAGE_SYM_TYPE_NULL
176    ComplexType:     IMAGE_SYM_DTYPE_NULL
177    StorageClass:    IMAGE_SYM_CLASS_STATIC
178    SectionDefinition:
179      Length:          28
180      NumberOfRelocations: 6
181      NumberOfLinenumbers: 0
182      CheckSum:        0
183      Number:          0
184  - Name:            .data
185    Value:           0
186    SectionNumber:   3
187    SimpleType:      IMAGE_SYM_TYPE_NULL
188    ComplexType:     IMAGE_SYM_DTYPE_NULL
189    StorageClass:    IMAGE_SYM_CLASS_STATIC
190    SectionDefinition:
191      Length:          18
192      NumberOfRelocations: 0
193      NumberOfLinenumbers: 0
194      CheckSum:        0
195      Number:          0
196  - Name:            MessageBoxA
197    Value:           0
198    SectionNumber:   0
199    SimpleType:      IMAGE_SYM_TYPE_NULL
200    ComplexType:     IMAGE_SYM_DTYPE_NULL
201    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
202  - Name:            ExitProcess
203    Value:           0
204    SectionNumber:   0
205    SimpleType:      IMAGE_SYM_TYPE_NULL
206    ComplexType:     IMAGE_SYM_DTYPE_NULL
207    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
208  - Name:            message
209    Value:           6
210    SectionNumber:   2
211    SimpleType:      IMAGE_SYM_TYPE_NULL
212    ComplexType:     IMAGE_SYM_DTYPE_NULL
213    StorageClass:    IMAGE_SYM_CLASS_STATIC
214  - Name:            main
215    Value:           0
216    SectionNumber:   1
217    SimpleType:      IMAGE_SYM_TYPE_NULL
218    ComplexType:     IMAGE_SYM_DTYPE_NULL
219    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
220  - Name:            caption
221    Value:           0
222    SectionNumber:   2
223    SimpleType:      IMAGE_SYM_TYPE_NULL
224    ComplexType:     IMAGE_SYM_DTYPE_NULL
225    StorageClass:    IMAGE_SYM_CLASS_STATIC
226  - Name:            abs_symbol
227    Value:           0xDEADBEEF
228    SectionNumber:   -1
229    SimpleType:      IMAGE_SYM_TYPE_NULL
230    ComplexType:     IMAGE_SYM_DTYPE_NULL
231    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
232  - Name:            __ImageBase
233    Value:           0
234    SectionNumber:   0
235    SimpleType:      IMAGE_SYM_TYPE_NULL
236    ComplexType:     IMAGE_SYM_DTYPE_NULL
237    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
238...
239