blob: dc24507b1d1f7ed908973b292f37f491dbe7c319 [file] [log] [blame]
Zachary Turner21473f72015-02-08 00:29:29 +00001//===- PDBSymbolThunk.cpp - -------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include <utility>
11
12#include "llvm/DebugInfo/PDB/PDBSymbol.h"
13#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"
14
Zachary Turnera5549172015-02-10 22:43:25 +000015#include "llvm/Support/Format.h"
16
Zachary Turner21473f72015-02-08 00:29:29 +000017using namespace llvm;
18
Zachary Turner98571ed2015-02-08 22:53:53 +000019PDBSymbolThunk::PDBSymbolThunk(const IPDBSession &PDBSession,
Zachary Turnerbae16b32015-02-08 20:58:09 +000020 std::unique_ptr<IPDBRawSymbol> Symbol)
David Blaikiee4698b92015-02-08 23:15:37 +000021 : PDBSymbol(PDBSession, std::move(Symbol)) {}
Zachary Turner21473f72015-02-08 00:29:29 +000022
Zachary Turnera5549172015-02-10 22:43:25 +000023void PDBSymbolThunk::dump(raw_ostream &OS, int Indent,
24 PDB_DumpLevel Level) const {
Zachary Turnera952c492015-02-13 07:40:03 +000025 OS.indent(Indent);
26 OS << "thunk ";
27 PDB_ThunkOrdinal Ordinal = getThunkOrdinal();
28 uint32_t RVA = getRelativeVirtualAddress();
29 if (Ordinal == PDB_ThunkOrdinal::TrampIncremental) {
30 OS << format_hex(RVA, 10);
31 } else {
32 OS << "[" << format_hex(RVA, 10);
33 OS << " - " << format_hex(RVA + getLength(), 10) << "]";
Zachary Turnera5549172015-02-10 22:43:25 +000034 }
Zachary Turnera952c492015-02-13 07:40:03 +000035 OS << " (" << Ordinal << ")";
36 if (Ordinal == PDB_ThunkOrdinal::TrampIncremental)
37 OS << " -> " << format_hex(getTargetRelativeVirtualAddress(), 10);
38 OS << " ";
39 std::string Name = getName();
40 if (!Name.empty())
41 OS << Name;
Zachary Turnera5549172015-02-10 22:43:25 +000042}