diff options
Diffstat (limited to 'gnu/llvm/lib/DebugInfo/CodeView/SymbolRecordHelpers.cpp')
| -rw-r--r-- | gnu/llvm/lib/DebugInfo/CodeView/SymbolRecordHelpers.cpp | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/gnu/llvm/lib/DebugInfo/CodeView/SymbolRecordHelpers.cpp b/gnu/llvm/lib/DebugInfo/CodeView/SymbolRecordHelpers.cpp deleted file mode 100644 index 01746138ad1..00000000000 --- a/gnu/llvm/lib/DebugInfo/CodeView/SymbolRecordHelpers.cpp +++ /dev/null @@ -1,94 +0,0 @@ -//===- SymbolRecordHelpers.cpp ----------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "llvm/DebugInfo/CodeView/SymbolRecordHelpers.h" - -#include "llvm/ADT/SmallVector.h" -#include "llvm/DebugInfo/CodeView/SymbolDeserializer.h" - -using namespace llvm; -using namespace llvm::codeview; - -template <typename RecordT> RecordT createRecord(const CVSymbol &sym) { - RecordT record(static_cast<SymbolRecordKind>(sym.kind())); - cantFail(SymbolDeserializer::deserializeAs<RecordT>(sym, record)); - return record; -} - -uint32_t llvm::codeview::getScopeEndOffset(const CVSymbol &Sym) { - assert(symbolOpensScope(Sym.kind())); - switch (Sym.kind()) { - case SymbolKind::S_GPROC32: - case SymbolKind::S_LPROC32: - case SymbolKind::S_GPROC32_ID: - case SymbolKind::S_LPROC32_ID: - case SymbolKind::S_LPROC32_DPC: - case SymbolKind::S_LPROC32_DPC_ID: { - ProcSym Proc = createRecord<ProcSym>(Sym); - return Proc.End; - } - case SymbolKind::S_BLOCK32: { - BlockSym Block = createRecord<BlockSym>(Sym); - return Block.End; - } - case SymbolKind::S_THUNK32: { - Thunk32Sym Thunk = createRecord<Thunk32Sym>(Sym); - return Thunk.End; - } - case SymbolKind::S_INLINESITE: { - InlineSiteSym Site = createRecord<InlineSiteSym>(Sym); - return Site.End; - } - default: - assert(false && "Unknown record type"); - return 0; - } -} - -uint32_t -llvm::codeview::getScopeParentOffset(const llvm::codeview::CVSymbol &Sym) { - assert(symbolOpensScope(Sym.kind())); - switch (Sym.kind()) { - case SymbolKind::S_GPROC32: - case SymbolKind::S_LPROC32: - case SymbolKind::S_GPROC32_ID: - case SymbolKind::S_LPROC32_ID: - case SymbolKind::S_LPROC32_DPC: - case SymbolKind::S_LPROC32_DPC_ID: { - ProcSym Proc = createRecord<ProcSym>(Sym); - return Proc.Parent; - } - case SymbolKind::S_BLOCK32: { - BlockSym Block = createRecord<BlockSym>(Sym); - return Block.Parent; - } - case SymbolKind::S_THUNK32: { - Thunk32Sym Thunk = createRecord<Thunk32Sym>(Sym); - return Thunk.Parent; - } - case SymbolKind::S_INLINESITE: { - InlineSiteSym Site = createRecord<InlineSiteSym>(Sym); - return Site.Parent; - } - default: - assert(false && "Unknown record type"); - return 0; - } -} - -CVSymbolArray -llvm::codeview::limitSymbolArrayToScope(const CVSymbolArray &Symbols, - uint32_t ScopeBegin) { - CVSymbol Opener = *Symbols.at(ScopeBegin); - assert(symbolOpensScope(Opener.kind())); - uint32_t EndOffset = getScopeEndOffset(Opener); - CVSymbol Closer = *Symbols.at(EndOffset); - EndOffset += Closer.RecordData.size(); - return Symbols.substream(ScopeBegin, EndOffset); -} |
