mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-03 19:02:35 +00:00
[DebugInfo] Fix register variables not showing up in pdb.
Previously, when linking against libcmt from the MSVC runtime, lld-link /verbose would show "Ignoring unknown symbol record with kind 0x1006". It turns out this was because TypeIndexDiscovery did not handle S_REGISTER records, so these records were not getting properly remapped. Patch by: Alexnadre Ganea Differential Revision: https://reviews.llvm.org/D40919 llvm-svn: 320108
This commit is contained in:
parent
0e9a4ac953
commit
1e778523f5
@ -392,6 +392,9 @@ static bool discoverTypeIndices(ArrayRef<uint8_t> Content, SymbolKind Kind,
|
||||
case SymbolKind::S_LOCAL:
|
||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type
|
||||
break;
|
||||
case SymbolKind::S_REGISTER:
|
||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type;
|
||||
break;
|
||||
case SymbolKind::S_CONSTANT:
|
||||
Refs.push_back({TiRefKind::TypeRef, 0, 1}); // Type
|
||||
break;
|
||||
|
@ -537,9 +537,9 @@ TEST_F(TypeIndexIteratorTest, ManyMembers) {
|
||||
|
||||
TEST_F(TypeIndexIteratorTest, ProcSym) {
|
||||
ProcSym GS(SymbolRecordKind::GlobalProcSym);
|
||||
GS.FunctionType = TypeIndex(0x40);
|
||||
GS.FunctionType = TypeIndex::Float32();
|
||||
ProcSym LS(SymbolRecordKind::ProcSym);
|
||||
LS.FunctionType = TypeIndex(0x41);
|
||||
LS.FunctionType = TypeIndex::Float64();
|
||||
writeSymbolRecords(GS, LS);
|
||||
checkTypeReferences(0, GS.FunctionType);
|
||||
checkTypeReferences(1, LS.FunctionType);
|
||||
@ -547,11 +547,20 @@ TEST_F(TypeIndexIteratorTest, ProcSym) {
|
||||
|
||||
TEST_F(TypeIndexIteratorTest, DataSym) {
|
||||
DataSym DS(SymbolRecordKind::GlobalData);
|
||||
DS.Type = TypeIndex(0x40);
|
||||
DS.Type = TypeIndex::Float32();
|
||||
writeSymbolRecords(DS);
|
||||
checkTypeReferences(0, DS.Type);
|
||||
}
|
||||
|
||||
TEST_F(TypeIndexIteratorTest, RegisterSym) {
|
||||
RegisterSym Reg(SymbolRecordKind::RegisterSym);
|
||||
Reg.Index = TypeIndex::UInt32();
|
||||
Reg.Register = RegisterId::EAX;
|
||||
Reg.Name = "Target";
|
||||
writeSymbolRecords(Reg);
|
||||
checkTypeReferences(0, Reg.Index);
|
||||
}
|
||||
|
||||
TEST_F(TypeIndexIteratorTest, CallerSym) {
|
||||
CallerSym Callees(SymbolRecordKind::CalleeSym);
|
||||
Callees.Indices.push_back(TypeIndex(1));
|
||||
|
Loading…
x
Reference in New Issue
Block a user