# RUN: yaml2obj %s -o %t.obj # RUN: lld-link %t.obj %S/Inputs/pdb-import-gc.lib -debug -entry:main \ # RUN: -nodefaultlib -opt:ref -out:%t.exe -pdb:%t.pdb # RUN: llvm-pdbutil dump -globals -symbols %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 = 32] `__imp___wc_mb_cur` # CHECK-NEXT: type = 0x0070 (char), addr = 0000:0000 # CHECK: Symbols # CHECK-NEXT: ============================================================ # CHECK-NEXT: Mod 0000 | `{{.*}}pdb-import-gc.yaml.tmp.obj`: # CHECK-NEXT: Mod 0001 | `* 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: __imp___wc_mb_cur - !StringTable Strings: Relocations: - VirtualAddress: 20 SymbolName: __imp___wc_mb_cur Type: IMAGE_REL_AMD64_SECREL - VirtualAddress: 24 SymbolName: __imp___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: 488B05000000000FBE00C3 Relocations: - VirtualAddress: 3 SymbolName: __imp___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: __imp___wc_mb_cur Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL ...