diff options
Diffstat (limited to 'lib/DebugInfo/CodeView')
| -rw-r--r-- | lib/DebugInfo/CodeView/RecordName.cpp | 3 | ||||
| -rw-r--r-- | lib/DebugInfo/CodeView/SymbolDumper.cpp | 6 | ||||
| -rw-r--r-- | lib/DebugInfo/CodeView/SymbolRecordMapping.cpp | 8 | ||||
| -rw-r--r-- | lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp | 3 | ||||
| -rw-r--r-- | lib/DebugInfo/CodeView/TypeStreamMerger.cpp | 5 | 
5 files changed, 23 insertions, 2 deletions
| diff --git a/lib/DebugInfo/CodeView/RecordName.cpp b/lib/DebugInfo/CodeView/RecordName.cpp index e50c43a1d481..d868ae237a44 100644 --- a/lib/DebugInfo/CodeView/RecordName.cpp +++ b/lib/DebugInfo/CodeView/RecordName.cpp @@ -307,6 +307,9 @@ static int getSymbolNameOffset(CVSymbol Sym) {    // See BPRelativeSym    case SymbolKind::S_BPREL32:      return 8; +  // See UsingNamespaceSym +  case SymbolKind::S_UNAMESPACE: +    return 0;    default:      return -1;    } diff --git a/lib/DebugInfo/CodeView/SymbolDumper.cpp b/lib/DebugInfo/CodeView/SymbolDumper.cpp index af249adc9774..f8bf961f22a1 100644 --- a/lib/DebugInfo/CodeView/SymbolDumper.cpp +++ b/lib/DebugInfo/CodeView/SymbolDumper.cpp @@ -611,6 +611,12 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) {    return Error::success();  } +Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, +                                           UsingNamespaceSym &UN) { +  W.printString("Namespace", UN.Name); +  return Error::success(); +} +  Error CVSymbolDumperImpl::visitUnknownSymbol(CVSymbol &CVR) {    W.printNumber("Length", CVR.length());    return Error::success(); diff --git a/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp b/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp index 923837a45d9f..e77c8e8f02f5 100644 --- a/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp +++ b/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp @@ -463,3 +463,11 @@ Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) {    return Error::success();  } + +Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, +                                            UsingNamespaceSym &UN) { + +  error(IO.mapStringZ(UN.Name)); + +  return Error::success(); +} diff --git a/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp b/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp index 95082d4a8e03..839ab6f0a705 100644 --- a/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp +++ b/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp @@ -428,7 +428,7 @@ static bool discoverTypeIndices(ArrayRef<uint8_t> Content, SymbolKind Kind,    case SymbolKind::S_DEFRANGE_SUBFIELD:      break; -  // No type refernces. +  // No type references.    case SymbolKind::S_LABEL32:    case SymbolKind::S_OBJNAME:    case SymbolKind::S_COMPILE: @@ -439,6 +439,7 @@ static bool discoverTypeIndices(ArrayRef<uint8_t> Content, SymbolKind Kind,    case SymbolKind::S_FRAMEPROC:    case SymbolKind::S_THUNK32:    case SymbolKind::S_FRAMECOOKIE: +  case SymbolKind::S_UNAMESPACE:      break;    // Scope ending symbols.    case SymbolKind::S_END: diff --git a/lib/DebugInfo/CodeView/TypeStreamMerger.cpp b/lib/DebugInfo/CodeView/TypeStreamMerger.cpp index e4f39dd988e1..2e29c9d7dfa0 100644 --- a/lib/DebugInfo/CodeView/TypeStreamMerger.cpp +++ b/lib/DebugInfo/CodeView/TypeStreamMerger.cpp @@ -226,7 +226,10 @@ bool TypeStreamMerger::remapIndexFallback(TypeIndex &Idx,    if (IsSecondPass && MapPos >= Map.size()) {      // FIXME: Print a more useful error. We can give the current record and the      // index that we think its pointing to. -    LastError = joinErrors(std::move(*LastError), errorCorruptRecord()); +    if (LastError) +      LastError = joinErrors(std::move(*LastError), errorCorruptRecord()); +    else +      LastError = errorCorruptRecord();    }    ++NumBadIndices; | 
