| |
| # Test linking an OBJ with a reference to an out-of-date PDB type server |
| # RUN: cd %S/Inputs |
| # 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 |
| # RUN: lld-link %t.obj -out:%t.exe -debug:ghash -pdb:%t.pdb -nodefaultlib -entry:main 2>&1 | FileCheck %s |
| # RUN: cd %S |
| |
| # CHECK: warning: Cannot use debug info for '{{.*}}.obj' |
| # CHECK-NEXT: The signature does not match; the file(s) might be out of date |
| |
| # Also test linking an OBJ with a reference to *valid* PDB type server |
| # RUN: cd %S/Inputs |
| # RUN: yaml2obj %S/Inputs/pdb-type-server-valid-signature.yaml -o %t2.obj |
| # RUN: lld-link %t2.obj -out:%t2.exe -debug -pdb:%t2.pdb -nodefaultlib -entry:main 2>&1 | FileCheck %s -check-prefix=VALID-SIGNATURE -allow-empty |
| # RUN: cd %S |
| |
| # VALID-SIGNATURE-NOT: warning: Cannot use debug info for '{{.*}}.obj' |
| # VALID-SIGNATURE-NOT: The signature does not match; the file(s) might be out of date |
| |
| # Test an invalid path reference to a PDB type server; as a fallback LLD should try to load the PDB in the same path as the OBJ |
| # RUN: yaml2obj %S/Inputs/pdb-type-server-invalid-path.yaml -o %t3.obj |
| # RUN: cp %S/Inputs/pdb-diff-cl.pdb %T |
| # RUN: lld-link %t3.obj -out:%t3.exe -debug -pdb:%t3.pdb -nodefaultlib -entry:main 2>&1 | FileCheck -DMSG=%errc_ENOENT %s -check-prefix=INVALID-PATH -allow-empty |
| |
| # INVALID-PATH-NOT: warning: Cannot use debug info for '{{.*}}3.obj' [LNK4099]
|
| # INVALID-PATH-NOT: failed to load reference 'c:\some_invalid_path_AABB98765\pdb-diff-cl.pdb': [[MSG]]
|
| |
| --- !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 |
| FunctionType: 4199 |
| 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_TYPESERVER2 |
| TypeServer2: |
| Guid: '{1B19DF01-BF22-426B-96CE-5258B8329FE5}' |
| Age: 18 |
| Name: 'pdb-diff-cl.pdb' |
| - 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 |
| ... |