Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
Show First 20 Lines • Show All 366 Lines • ▼ Show 20 Lines | static bool discoverTypeIndices(ArrayRef<uint8_t> Content, SymbolKind Kind, | ||||
case SymbolKind::S_GPROC32: | case SymbolKind::S_GPROC32: | ||||
case SymbolKind::S_LPROC32: | case SymbolKind::S_LPROC32: | ||||
case SymbolKind::S_GPROC32_ID: | case SymbolKind::S_GPROC32_ID: | ||||
case SymbolKind::S_LPROC32_ID: | case SymbolKind::S_LPROC32_ID: | ||||
case SymbolKind::S_LPROC32_DPC: | case SymbolKind::S_LPROC32_DPC: | ||||
case SymbolKind::S_LPROC32_DPC_ID: | case SymbolKind::S_LPROC32_DPC_ID: | ||||
Refs.push_back({TiRefKind::IndexRef, 24, 1}); // LF_FUNC_ID | Refs.push_back({TiRefKind::IndexRef, 24, 1}); // LF_FUNC_ID | ||||
break; | break; | ||||
case SymbolKind::S_BPREL32: | |||||
Refs.push_back({TiRefKind::TypeRef, 4, 1}); // local variable | |||||
break; | |||||
case SymbolKind::S_UDT: | case SymbolKind::S_UDT: | ||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // UDT | Refs.push_back({TiRefKind::TypeRef, 0, 1}); // UDT | ||||
break; | break; | ||||
case SymbolKind::S_GDATA32: | case SymbolKind::S_GDATA32: | ||||
case SymbolKind::S_LDATA32: | case SymbolKind::S_LDATA32: | ||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | ||||
break; | break; | ||||
case SymbolKind::S_BUILDINFO: | case SymbolKind::S_BUILDINFO: | ||||
Refs.push_back({TiRefKind::IndexRef, 0, 1}); // Compile flags | Refs.push_back({TiRefKind::IndexRef, 0, 1}); // Compile flags | ||||
break; | break; | ||||
case SymbolKind::S_LTHREAD32: | case SymbolKind::S_LTHREAD32: | ||||
case SymbolKind::S_GTHREAD32: | case SymbolKind::S_GTHREAD32: | ||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | ||||
break; | break; | ||||
case SymbolKind::S_FILESTATIC: | case SymbolKind::S_FILESTATIC: | ||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | ||||
break; | break; | ||||
case SymbolKind::S_LOCAL: | case SymbolKind::S_LOCAL: | ||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | ||||
break; | break; | ||||
case SymbolKind::S_CONSTANT: | case SymbolKind::S_CONSTANT: | ||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type | ||||
break; | break; | ||||
case SymbolKind::S_REGREL32: | case SymbolKind::S_REGREL32: | ||||
rnk: Maybe add S_BPREL32 before this? They're related, BPRELSYM32 vs REGREL32. | |||||
Not Done ReplyInline Actionsping? rnk: ping? | |||||
Refs.push_back({TiRefKind::TypeRef, 4, 1}); // Type | Refs.push_back({TiRefKind::TypeRef, 4, 1}); // Type | ||||
break; | break; | ||||
case SymbolKind::S_CALLSITEINFO: | case SymbolKind::S_CALLSITEINFO: | ||||
Refs.push_back({TiRefKind::TypeRef, 8, 1}); // Call signature | Refs.push_back({TiRefKind::TypeRef, 8, 1}); // Call signature | ||||
break; | break; | ||||
case SymbolKind::S_CALLERS: | case SymbolKind::S_CALLERS: | ||||
case SymbolKind::S_CALLEES: | case SymbolKind::S_CALLEES: | ||||
// The record is a count followed by an array of type indices. | // The record is a count followed by an array of type indices. | ||||
▲ Show 20 Lines • Show All 78 Lines • Show Last 20 Lines |
Maybe add S_BPREL32 before this? They're related, BPRELSYM32 vs REGREL32.