# This test has an S_GPROC32_ID symbol that doesn't refer to an LF_FUNC_ID # record. Make sure we have reasonable behavior. # RUN: yaml2obj %s -o %t.obj # RUN: lld-link %t.obj -out:%t.exe -debug -pdb:%t.pdb -nodefaultlib -entry:main 2>&1 | FileCheck %s --check-prefix=WARNING # RUN: llvm-pdbutil dump -symbols %t.pdb | FileCheck %s # RUN: lld-link %t.obj -out:%t.exe -debug -debug:ghash -pdb:%t.pdb -nodefaultlib -entry:main 2>&1 | FileCheck %s --check-prefix=WARNING # RUN: llvm-pdbutil dump -symbols %t.pdb | FileCheck %s # WARNING: warning: procedure symbol record for `main` in {{.*}}.tmp.obj refers to PDB item index 0x{{.*}} which is not a valid function ID record # CHECK: Mod 0000 | `{{.*}}pdb-invalid-func-type{{.*}}.tmp.obj`: # CHECK: 4 | S_GPROC32 [size = 44] `main` # CHECK: parent = 0, end = 80, addr = 0001:0000, code size = 3 # CHECK: type = `0x0007 ()`, debug start = 0, debug end = 2, flags = none # CHECK: 48 | S_FRAMEPROC [size = 32] # CHECK: 80 | S_END [size = 4] --- !COFF header: Machine: IMAGE_FILE_MACHINE_AMD64 Characteristics: [ ] sections: - Name: '.debug$S' Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] Alignment: 1 Subsections: - !Symbols Records: - Kind: S_GPROC32_ID ProcSym: CodeSize: 3 DbgStart: 0 DbgEnd: 2 # Refers to the wrong kind of type record (LF_PROCEDURE vs # LF_FUNC_ID). FunctionType: 4097 Flags: [ ] DisplayName: main - Kind: S_FRAMEPROC FrameProcSym: TotalFrameBytes: 0 PaddingFrameBytes: 0 OffsetToPadding: 0 BytesOfCalleeSavedRegisters: 0 OffsetOfExceptionHandler: 0 SectionIdOfExceptionHandler: 0 Flags: [ AsynchronousExceptionHandling, OptimizedForSpeed ] - Kind: S_PROC_ID_END ScopeEndSym: - !Lines CodeSize: 3 Flags: [ ] RelocOffset: 0 RelocSegment: 0 Blocks: - FileName: 'c:\src\llvm-project\build\t.c' Lines: - Offset: 0 LineStart: 1 IsStatement: true EndDelta: 0 Columns: - !FileChecksums Checksums: - FileName: 'c:\src\llvm-project\build\t.c' Kind: MD5 Checksum: 270A878DCC1B845655B162F56C4F5020 - !StringTable Strings: - 'c:\src\llvm-project\build\t.c' Relocations: - VirtualAddress: 44 SymbolName: main Type: IMAGE_REL_AMD64_SECREL - VirtualAddress: 48 SymbolName: main Type: IMAGE_REL_AMD64_SECTION - VirtualAddress: 100 SymbolName: main Type: IMAGE_REL_AMD64_SECREL - VirtualAddress: 104 SymbolName: main Type: IMAGE_REL_AMD64_SECTION - Name: '.debug$T' Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] Alignment: 1 Types: - Kind: LF_ARGLIST ArgList: ArgIndices: [ 0 ] - Kind: LF_PROCEDURE Procedure: ReturnType: 116 CallConv: NearC Options: [ None ] ParameterCount: 0 ArgumentList: 4096 - Kind: LF_FUNC_ID FuncId: ParentScope: 0 FunctionType: 4097 Name: main - Name: '.text$mn' Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] Alignment: 16 SectionData: 33C0C3 symbols: - Name: '.debug$S' Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 328 NumberOfRelocations: 4 NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 - Name: '.debug$T' Value: 0 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 564 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 - Name: '.text$mn' Value: 0 SectionNumber: 3 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 3 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 4021952397 Number: 0 - Name: main Value: 0 SectionNumber: 3 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_FUNCTION StorageClass: IMAGE_SYM_CLASS_EXTERNAL ...