diff --git a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp --- a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -379,6 +379,13 @@ if (complex_type == llvm::COFF::IMAGE_SYM_DTYPE_FUNCTION) { return lldb::eSymbolTypeCode; } + const auto base_type = coff_symbol_type & 0xff; + if (base_type == llvm::COFF::IMAGE_SYM_TYPE_NULL && + complex_type == llvm::COFF::IMAGE_SYM_DTYPE_NULL) { + // Unknown type. LLD and GNU ld uses this for variables on MinGW, so + // consider these symbols to be data to enable printing. + return lldb::eSymbolTypeData; + } return lldb::eSymbolTypeInvalid; } diff --git a/lldb/test/Shell/ObjectFile/PECOFF/symbol.yaml b/lldb/test/Shell/ObjectFile/PECOFF/symbol.yaml --- a/lldb/test/Shell/ObjectFile/PECOFF/symbol.yaml +++ b/lldb/test/Shell/ObjectFile/PECOFF/symbol.yaml @@ -6,7 +6,7 @@ # CHECK: Type File Address/Value {{.*}} Size Flags Name # CHECK: Code 0x0000000040001000 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} entry -# CHECK: 0x0000000040002000 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} variable +# CHECK: Data 0x0000000040002000 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} variable # CHECK: Absolute 0x00000000deadbeef 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} absolute_symbol --- !COFF diff --git a/lldb/test/Shell/ObjectFile/PECOFF/symbols-export-table.yaml b/lldb/test/Shell/ObjectFile/PECOFF/symbols-export-table.yaml --- a/lldb/test/Shell/ObjectFile/PECOFF/symbols-export-table.yaml +++ b/lldb/test/Shell/ObjectFile/PECOFF/symbols-export-table.yaml @@ -15,7 +15,7 @@ # CHECK-NEXT: 4294967295 Code 0x0000000180001020 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} aliasFunc # CHECK-NEXT: 4294967295 X Additional 0x0000000180003000 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} exportInt # CHECK-NEXT: 4294967295 Data 0x0000000180003004 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} aliasInt -# CHECK-NEXT: 4294967295 Invalid 0x0000000180003008 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} internalInt +# CHECK-NEXT: 4294967295 Data 0x0000000180003008 0x{{[0-9a-f]+}} 0x{{[0-9a-f]+}} internalInt # CHECK-EMPTY: # Test file generated with: