xref: /llvm-project/lld/test/COFF/rsds.test (revision 0cb66a7bd52ee51a6b43c42fec22082b26365e37)
1# RUN: yaml2obj %s -o %t.obj
2
3# RUN: rm -f %t.dll %t.pdb
4# RUN: lld-link /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj
5# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.1.txt
6# RUN: lld-link /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj
7# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.2.txt
8# RUN: cat %t.1.txt %t.2.txt | FileCheck %s
9
10# RUN: rm -f %t.dll %t.pdb
11# RUN: lld-link /debug /pdb:%t1.pdb /dll /out:%t.dll /entry:DllMain %t.obj
12# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.3.txt
13# RUN: lld-link /debug /pdb:%t2.pdb /dll /out:%t.dll /entry:DllMain %t.obj
14# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.4.txt
15# RUN: cat %t.3.txt %t.4.txt | FileCheck --check-prefix TWOPDBS %s
16
17# RUN: rm -f %t.dll %t.pdb
18# RUN: lld-link /Brepro /dll /out:%t.dll /entry:DllMain %t.obj
19# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix REPRO %s
20
21# RUN: rm -f %t.dll %t.pdb
22# RUN: lld-link /Brepro /debug /dll /out:%t.dll /entry:DllMain %t.obj
23# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix REPRODEBUG %s
24
25# Generate .buildid section using binary hash under /lldmingw and /build-id
26# RUN: rm -f %t.dll %t.pdb
27# RUN: lld-link /lldmingw /build-id /dll /out:%t.dll /entry:DllMain %t.obj
28# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix BUILDID %s
29
30# Generate debug directory with use binary hash when /build-id is given and not
31# generating PDB.
32# RUN: rm -f %t.dll %t.pdb
33# RUN: lld-link /build-id /dll /out:%t.dll /entry:DllMain %t.obj
34# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix BUILDID %s
35
36# If generate PDB, PDB hash is used and /build-id is ignored.
37# RUN: rm -f %t.dll %t.pdb
38# RUN: lld-link /build-id /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj
39# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix BUILDID %s
40
41# Do not generate .buildid section under /build-id:no
42# RUN: rm -f %t.dll %t.pdb
43# RUN: lld-link /build-id:no /dll /out:%t.dll /entry:DllMain %t.obj
44# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix NO_BUILDID %s
45
46# RUN: rm -f %t.dll %t.pdb
47# RUN: lld-link /dll /out:%t.dll /entry:DllMain %t.obj
48# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix NO_BUILDID %s
49
50# CHECK: File: [[FILE:.*]].dll
51# CHECK: DebugDirectory [
52# CHECK:   DebugEntry {
53# CHECK:     Characteristics: 0x0
54# CHECK:     TimeDateStamp:
55# CHECK:     MajorVersion: 0x0
56# CHECK:     MinorVersion: 0x0
57# CHECK:     Type: CodeView (0x2)
58# CHECK:     SizeOfData: 0x{{[^0]}}
59# CHECK:     AddressOfRawData: 0x{{[^0]}}
60# CHECK:     PointerToRawData: 0x{{[^0]}}
61# CHECK:     PDBInfo {
62# CHECK:       PDBSignature: 0x53445352
63# CHECK:       PDBGUID: [[GUID:\{[A-Za-z0-9\-]{36}\}]]
64# CHECK:       PDBAge: 1
65# CHECK:       PDBFileName: {{.*}}.pdb
66# CHECK:     }
67# CHECK:   }
68# CHECK: ]
69# CHECK: File: [[FILE]].dll
70# CHECK: DebugDirectory [
71# CHECK:   DebugEntry {
72# CHECK:     Characteristics: 0x0
73# CHECK:     TimeDateStamp:
74# CHECK:     MajorVersion: 0x0
75# CHECK:     MinorVersion: 0x0
76# CHECK:     Type: CodeView (0x2)
77# CHECK:     SizeOfData: 0x{{[^0]}}
78# CHECK:     AddressOfRawData: 0x{{[^0]}}
79# CHECK:     PointerToRawData: 0x{{[^0]}}
80# CHECK:     PDBInfo {
81# CHECK:       PDBSignature: 0x53445352
82# CHECK:       PDBGUID: [[GUID]]
83# CHECK:       PDBAge: 1
84# CHECK:       PDBFileName: {{.*}}.pdb
85# CHECK:     }
86# CHECK:   }
87# CHECK: ]
88
89# TWOPDBS: File: [[FILE:.*]].dll
90# TWOPDBS: DebugDirectory [
91# TWOPDBS:   DebugEntry {
92# TWOPDBS:     Characteristics: 0x0
93# TWOPDBS:     TimeDateStamp:
94# TWOPDBS:     MajorVersion: 0x0
95# TWOPDBS:     MinorVersion: 0x0
96# TWOPDBS:     Type: CodeView (0x2)
97# TWOPDBS:     SizeOfData: 0x{{[^0]}}
98# TWOPDBS:     AddressOfRawData: 0x{{[^0]}}
99# TWOPDBS:     PointerToRawData: 0x{{[^0]}}
100# TWOPDBS:     PDBInfo {
101# TWOPDBS:       PDBSignature: 0x53445352
102# TWOPDBS:       PDBGUID: [[GUID:\{[A-Za-z0-9\-]{36}\}]]
103# TWOPDBS:       PDBAge: 1
104# TWOPDBS:       PDBFileName: {{.*}}.pdb
105# TWOPDBS:     }
106# TWOPDBS:   }
107# TWOPDBS: ]
108# TWOPDBS: File: [[FILE]].dll
109# TWOPDBS: DebugDirectory [
110# TWOPDBS:   DebugEntry {
111# TWOPDBS:     Characteristics: 0x0
112# TWOPDBS:     TimeDateStamp:
113# TWOPDBS:     MajorVersion: 0x0
114# TWOPDBS:     MinorVersion: 0x0
115# TWOPDBS:     Type: CodeView (0x2)
116# TWOPDBS:     SizeOfData: 0x{{[^0]}}
117# TWOPDBS:     AddressOfRawData: 0x{{[^0]}}
118# TWOPDBS:     PointerToRawData: 0x{{[^0]}}
119# TWOPDBS:     PDBInfo {
120# TWOPDBS:       PDBSignature: 0x53445352
121# TWOPDBS-NOT:       PDBGUID: [[GUID]]
122# TWOPDBS:       PDBAge: 1
123# TWOPDBS:       PDBFileName: {{.*}}.pdb
124# TWOPDBS:     }
125# TWOPDBS:   }
126# TWOPDBS: ]
127
128# REPRO: File: {{.*}}.dll
129# REPRO: DebugDirectory [
130# REPRO:   DebugEntry {
131# REPRO:     Characteristics: 0x0
132# REPRO:     TimeDateStamp:
133# REPRO:     MajorVersion: 0x0
134# REPRO:     MinorVersion: 0x0
135# REPRO:     Type: Repro (0x10)
136# REPRO:     SizeOfData: 0x0
137# REPRO:     AddressOfRawData: 0x0
138# REPRO:     PointerToRawData: 0x0
139# REPRO:   }
140# REPRO: ]
141
142# REPRODEBUG: File: {{.*}}.dll
143# REPRODEBUG: DebugDirectory [
144# REPRODEBUG:   DebugEntry {
145# REPRODEBUG:     Characteristics: 0x0
146# REPRODEBUG:     TimeDateStamp:
147# REPRODEBUG:     MajorVersion: 0x0
148# REPRODEBUG:     MinorVersion: 0x0
149# REPRODEBUG:     Type: CodeView (0x2)
150# REPRODEBUG:     SizeOfData: 0x{{[^0]}}
151# REPRODEBUG:     AddressOfRawData: 0x{{[^0]}}
152# REPRODEBUG:     PointerToRawData: 0x{{[^0]}}
153# REPRODEBUG:     PDBInfo {
154# REPRODEBUG:       PDBSignature: 0x53445352
155# REPRODEBUG:       PDBGUID:
156# REPRODEBUG:       PDBAge: 1
157# REPRODEBUG:       PDBFileName:
158# REPRODEBUG:     }
159# REPRODEBUG:   }
160# REPRODEBUG:   DebugEntry {
161# REPRODEBUG:     Characteristics: 0x0
162# REPRODEBUG:     TimeDateStamp:
163# REPRODEBUG:     MajorVersion: 0x0
164# REPRODEBUG:     MinorVersion: 0x0
165# REPRODEBUG:     Type: Repro (0x10)
166# REPRODEBUG:     SizeOfData: 0x0
167# REPRODEBUG:     AddressOfRawData: 0x0
168# REPRODEBUG:     PointerToRawData: 0x0
169# REPRODEBUG:   }
170# REPRODEBUG: ]
171
172# BUILDID: File: {{.*}}.dll
173# BUILDID: DebugDirectory [
174# BUILDID:   DebugEntry {
175# BUILDID:     Characteristics: 0x0
176# BUILDID:     TimeDateStamp:
177# BUILDID:     MajorVersion: 0x0
178# BUILDID:     MinorVersion: 0x0
179# BUILDID:     Type: CodeView (0x2)
180# BUILDID:     SizeOfData: 0x{{[^0]}}
181# BUILDID:     AddressOfRawData: 0x{{[^0]}}
182# BUILDID:     PointerToRawData: 0x{{[^0]}}
183# BUILDID:     PDBInfo {
184# BUILDID:       PDBSignature: 0x53445352
185# BUILDID:       PDBGUID: [[GUID:\{[A-Za-z0-9\-]{36}\}]]
186# BUILDID:       PDBAge: 1
187# BUILDID:       PDBFileName:
188# BUILDID:     }
189# BUILDID:   }
190# BUILDID: ]
191
192# NO_BUILDID:      DebugDirectory [
193# NO_BUILDID-NEXT: ]
194
195# BUILDID_SEC: Name: .buildid
196--- !COFF
197header:
198  Machine:         IMAGE_FILE_MACHINE_I386
199  Characteristics: [  ]
200sections:
201  - Name:            .text
202    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
203    Alignment:       4
204    SectionData:     31C0C3
205  - Name:            .data
206    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
207    Alignment:       4
208    SectionData:     ''
209  - Name:            .bss
210    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
211    Alignment:       4
212    SectionData:     ''
213symbols:
214  - Name:            .text
215    Value:           0
216    SectionNumber:   1
217    SimpleType:      IMAGE_SYM_TYPE_NULL
218    ComplexType:     IMAGE_SYM_DTYPE_NULL
219    StorageClass:    IMAGE_SYM_CLASS_STATIC
220    SectionDefinition:
221      Length:          3
222      NumberOfRelocations: 0
223      NumberOfLinenumbers: 0
224      CheckSum:        3963538403
225      Number:          1
226  - Name:            .data
227    Value:           0
228    SectionNumber:   2
229    SimpleType:      IMAGE_SYM_TYPE_NULL
230    ComplexType:     IMAGE_SYM_DTYPE_NULL
231    StorageClass:    IMAGE_SYM_CLASS_STATIC
232    SectionDefinition:
233      Length:          0
234      NumberOfRelocations: 0
235      NumberOfLinenumbers: 0
236      CheckSum:        0
237      Number:          2
238  - Name:            .bss
239    Value:           0
240    SectionNumber:   3
241    SimpleType:      IMAGE_SYM_TYPE_NULL
242    ComplexType:     IMAGE_SYM_DTYPE_NULL
243    StorageClass:    IMAGE_SYM_CLASS_STATIC
244    SectionDefinition:
245      Length:          0
246      NumberOfRelocations: 0
247      NumberOfLinenumbers: 0
248      CheckSum:        0
249      Number:          3
250  - Name:            '@feat.00'
251    Value:           1
252    SectionNumber:   -1
253    SimpleType:      IMAGE_SYM_TYPE_NULL
254    ComplexType:     IMAGE_SYM_DTYPE_NULL
255    StorageClass:    IMAGE_SYM_CLASS_STATIC
256  - Name:            _DllMain
257    Value:           0
258    SectionNumber:   1
259    SimpleType:      IMAGE_SYM_TYPE_NULL
260    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
261    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
262...
263