# RUN: yaml2obj %s -o %t.obj # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll > %t.1.txt # RUN: lld-link /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll > %t.2.txt # RUN: cat %t.1.txt %t.2.txt | FileCheck %s # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /debug /pdb:%t1.pdb /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll > %t.3.txt # RUN: lld-link /debug /pdb:%t2.pdb /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll > %t.4.txt # RUN: cat %t.3.txt %t.4.txt | FileCheck --check-prefix TWOPDBS %s # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /Brepro /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix REPRO %s # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /Brepro /debug /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix REPRODEBUG %s # Generate .buildid section using binary hash under /lldmingw and /build-id # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /lldmingw /build-id /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix BUILDID %s # Generate debug directory with use binary hash when /build-id is given and not # generating PDB. # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /build-id /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix BUILDID %s # If generate PDB, PDB hash is used and /build-id is ignored. # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /build-id /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix BUILDID %s # Do not generate .buildid section under /build-id:no # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /build-id:no /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix NO_BUILDID %s # RUN: rm -f %t.dll %t.pdb # RUN: lld-link /dll /out:%t.dll /entry:DllMain %t.obj # RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix NO_BUILDID %s # CHECK: File: [[FILE:.*]].dll # CHECK: DebugDirectory [ # CHECK: DebugEntry { # CHECK: Characteristics: 0x0 # CHECK: TimeDateStamp: # CHECK: MajorVersion: 0x0 # CHECK: MinorVersion: 0x0 # CHECK: Type: CodeView (0x2) # CHECK: SizeOfData: 0x{{[^0]}} # CHECK: AddressOfRawData: 0x{{[^0]}} # CHECK: PointerToRawData: 0x{{[^0]}} # CHECK: PDBInfo { # CHECK: PDBSignature: 0x53445352 # CHECK: PDBGUID: [[GUID:\(([A-Za-z0-9]{2} ?){16}\)]] # CHECK: PDBAge: 1 # CHECK: PDBFileName: {{.*}}.pdb # CHECK: } # CHECK: } # CHECK: ] # CHECK: File: [[FILE]].dll # CHECK: DebugDirectory [ # CHECK: DebugEntry { # CHECK: Characteristics: 0x0 # CHECK: TimeDateStamp: # CHECK: MajorVersion: 0x0 # CHECK: MinorVersion: 0x0 # CHECK: Type: CodeView (0x2) # CHECK: SizeOfData: 0x{{[^0]}} # CHECK: AddressOfRawData: 0x{{[^0]}} # CHECK: PointerToRawData: 0x{{[^0]}} # CHECK: PDBInfo { # CHECK: PDBSignature: 0x53445352 # CHECK: PDBGUID: [[GUID]] # CHECK: PDBAge: 1 # CHECK: PDBFileName: {{.*}}.pdb # CHECK: } # CHECK: } # CHECK: ] # TWOPDBS: File: [[FILE:.*]].dll # TWOPDBS: DebugDirectory [ # TWOPDBS: DebugEntry { # TWOPDBS: Characteristics: 0x0 # TWOPDBS: TimeDateStamp: # TWOPDBS: MajorVersion: 0x0 # TWOPDBS: MinorVersion: 0x0 # TWOPDBS: Type: CodeView (0x2) # TWOPDBS: SizeOfData: 0x{{[^0]}} # TWOPDBS: AddressOfRawData: 0x{{[^0]}} # TWOPDBS: PointerToRawData: 0x{{[^0]}} # TWOPDBS: PDBInfo { # TWOPDBS: PDBSignature: 0x53445352 # TWOPDBS: PDBGUID: [[GUID:\(([A-Za-z0-9]{2} ?){16}\)]] # TWOPDBS: PDBAge: 1 # TWOPDBS: PDBFileName: {{.*}}.pdb # TWOPDBS: } # TWOPDBS: } # TWOPDBS: ] # TWOPDBS: File: [[FILE]].dll # TWOPDBS: DebugDirectory [ # TWOPDBS: DebugEntry { # TWOPDBS: Characteristics: 0x0 # TWOPDBS: TimeDateStamp: # TWOPDBS: MajorVersion: 0x0 # TWOPDBS: MinorVersion: 0x0 # TWOPDBS: Type: CodeView (0x2) # TWOPDBS: SizeOfData: 0x{{[^0]}} # TWOPDBS: AddressOfRawData: 0x{{[^0]}} # TWOPDBS: PointerToRawData: 0x{{[^0]}} # TWOPDBS: PDBInfo { # TWOPDBS: PDBSignature: 0x53445352 # TWOPDBS-NOT: PDBGUID: [[GUID]] # TWOPDBS: PDBAge: 1 # TWOPDBS: PDBFileName: {{.*}}.pdb # TWOPDBS: } # TWOPDBS: } # TWOPDBS: ] # REPRO: File: {{.*}}.dll # REPRO: DebugDirectory [ # REPRO: DebugEntry { # REPRO: Characteristics: 0x0 # REPRO: TimeDateStamp: # REPRO: MajorVersion: 0x0 # REPRO: MinorVersion: 0x0 # REPRO: Type: Repro (0x10) # REPRO: SizeOfData: 0x0 # REPRO: AddressOfRawData: 0x0 # REPRO: PointerToRawData: 0x0 # REPRO: } # REPRO: ] # REPRODEBUG: File: {{.*}}.dll # REPRODEBUG: DebugDirectory [ # REPRODEBUG: DebugEntry { # REPRODEBUG: Characteristics: 0x0 # REPRODEBUG: TimeDateStamp: # REPRODEBUG: MajorVersion: 0x0 # REPRODEBUG: MinorVersion: 0x0 # REPRODEBUG: Type: CodeView (0x2) # REPRODEBUG: SizeOfData: 0x{{[^0]}} # REPRODEBUG: AddressOfRawData: 0x{{[^0]}} # REPRODEBUG: PointerToRawData: 0x{{[^0]}} # REPRODEBUG: PDBInfo { # REPRODEBUG: PDBSignature: 0x53445352 # REPRODEBUG: PDBGUID: # REPRODEBUG: PDBAge: 1 # REPRODEBUG: PDBFileName: # REPRODEBUG: } # REPRODEBUG: } # REPRODEBUG: DebugEntry { # REPRODEBUG: Characteristics: 0x0 # REPRODEBUG: TimeDateStamp: # REPRODEBUG: MajorVersion: 0x0 # REPRODEBUG: MinorVersion: 0x0 # REPRODEBUG: Type: Repro (0x10) # REPRODEBUG: SizeOfData: 0x0 # REPRODEBUG: AddressOfRawData: 0x0 # REPRODEBUG: PointerToRawData: 0x0 # REPRODEBUG: } # REPRODEBUG: ] # BUILDID: File: {{.*}}.dll # BUILDID: DebugDirectory [ # BUILDID: DebugEntry { # BUILDID: Characteristics: 0x0 # BUILDID: TimeDateStamp: # BUILDID: MajorVersion: 0x0 # BUILDID: MinorVersion: 0x0 # BUILDID: Type: CodeView (0x2) # BUILDID: SizeOfData: 0x{{[^0]}} # BUILDID: AddressOfRawData: 0x{{[^0]}} # BUILDID: PointerToRawData: 0x{{[^0]}} # BUILDID: PDBInfo { # BUILDID: PDBSignature: 0x53445352 # BUILDID: PDBGUID: [[GUID:\(([A-Za-z0-9]{2} ?){16}\)]] # BUILDID: PDBAge: 1 # BUILDID: PDBFileName: # BUILDID: } # BUILDID: } # BUILDID: ] # NO_BUILDID: DebugDirectory [ # NO_BUILDID-NEXT: ] # BUILDID_SEC: Name: .buildid --- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ ] sections: - Name: .text Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] Alignment: 4 SectionData: 31C0C3 - Name: .data Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] Alignment: 4 SectionData: '' - Name: .bss Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] Alignment: 4 SectionData: '' symbols: - Name: .text Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 3 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 3963538403 Number: 1 - Name: .data Value: 0 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 0 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 2 - Name: .bss Value: 0 SectionNumber: 3 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 0 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 3 - Name: '@feat.00' Value: 1 SectionNumber: -1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC - Name: _DllMain Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_FUNCTION StorageClass: IMAGE_SYM_CLASS_EXTERNAL ...