| # REQUIRES: x86 |
| # RUN: yaml2obj %s -o %t.obj |
| # RUN: llvm-mc %S/Inputs/pdb-global-gc.s -triple x86_64-windows-msvc -filetype=obj -o %t2.obj |
| # RUN: lld-link %t.obj %t2.obj -debug -entry:main \ |
| # RUN: -nodefaultlib -opt:ref -out:%t.exe -pdb:%t.pdb -verbose |
| # RUN: llvm-pdbutil dump -symbols -globals %t.pdb | FileCheck %s |
| |
| # This tests the case where an __imp_ chunk is discarded by linker GC. The debug |
| # info may refer to the __imp_ symbol still. |
| |
| # Compile this code with MSVC to regenerate the test case: |
| # extern char __declspec(dllimport) __wc_mb_cur; |
| # int discarded() { return __wc_mb_cur; } |
| # int main() { return g2; } |
| |
| # CHECK: Global Symbols |
| # CHECK-NEXT: ============================================================ |
| # CHECK-NEXT: Records |
| # CHECK-NEXT: 20 | S_GDATA32 [size = 28] `__wc_mb_cur` |
| # CHECK-NEXT: type = 0x0070 (char), addr = 0000:0000 |
| |
| # CHECK: Symbols |
| # CHECK: ============================================================ |
| # CHECK-NEXT: Mod 0000 | `{{.*}}pdb-global-gc.yaml.tmp.obj`: |
| # CHECK-NEXT: Mod 0001 | `{{.*}}pdb-global-gc.yaml.tmp2.obj`: |
| # CHECK-NEXT: Mod 0002 | `* Linker *`: |
| |
| --- !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_GDATA32 |
| DataSym: |
| Type: 112 |
| DisplayName: __wc_mb_cur |
| - !StringTable |
| Strings: |
| Relocations: |
| - VirtualAddress: 20 |
| SymbolName: __wc_mb_cur |
| Type: IMAGE_REL_AMD64_SECREL |
| - VirtualAddress: 24 |
| SymbolName: __wc_mb_cur |
| Type: IMAGE_REL_AMD64_SECTION |
| - Name: '.text$mn' |
| Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] |
| Alignment: 16 |
| SectionData: 0FBE0500000000C3 |
| Relocations: |
| - VirtualAddress: 3 |
| SymbolName: __wc_mb_cur |
| Type: IMAGE_REL_AMD64_REL32 |
| - Name: '.text$mn' |
| Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] |
| Alignment: 16 |
| SectionData: B82A000000C3 |
| 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: 240 |
| NumberOfRelocations: 2 |
| NumberOfLinenumbers: 0 |
| CheckSum: 0 |
| Number: 0 |
| - Name: '.text$mn' |
| Value: 0 |
| SectionNumber: 2 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 11 |
| NumberOfRelocations: 1 |
| NumberOfLinenumbers: 0 |
| CheckSum: 2906070869 |
| Number: 0 |
| Selection: IMAGE_COMDAT_SELECT_NODUPLICATES |
| - Name: '.text$mn' |
| Value: 0 |
| SectionNumber: 3 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 6 |
| NumberOfRelocations: 0 |
| NumberOfLinenumbers: 0 |
| CheckSum: 2139436471 |
| Number: 0 |
| Selection: IMAGE_COMDAT_SELECT_NODUPLICATES |
| - Name: discarded |
| Value: 0 |
| SectionNumber: 2 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: main |
| Value: 0 |
| SectionNumber: 3 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: __wc_mb_cur |
| Value: 0 |
| SectionNumber: 0 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| ... |