blob: 7417167b61ade28ecba6d115d34157da7f26cc8b [file] [log] [blame]
Zachary Turner21473f72015-02-08 00:29:29 +00001//===- PDBSymbolExe.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
Zachary Turner52c9f882015-02-14 03:53:56 +000010#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
11
Zachary Turner9a818ad2015-02-22 22:03:38 +000012#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
Zachary Turnerc883a8c2017-04-12 23:18:21 +000013#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
Zachary Turner21473f72015-02-08 00:29:29 +000014
Zachary Turner52c9f882015-02-14 03:53:56 +000015#include <utility>
16
Zachary Turner21473f72015-02-08 00:29:29 +000017using namespace llvm;
Zachary Turnerec28fc32016-05-04 20:32:13 +000018using namespace llvm::pdb;
Zachary Turner21473f72015-02-08 00:29:29 +000019
Zachary Turner98571ed2015-02-08 22:53:53 +000020PDBSymbolExe::PDBSymbolExe(const IPDBSession &PDBSession,
Zachary Turnerbae16b32015-02-08 20:58:09 +000021 std::unique_ptr<IPDBRawSymbol> Symbol)
Zachary Turner1b1a70f2017-04-10 06:14:09 +000022 : PDBSymbol(PDBSession, std::move(Symbol)) {
23 assert(RawSymbol->getSymTag() == PDB_SymType::Exe);
24}
Zachary Turner21473f72015-02-08 00:29:29 +000025
Zachary Turnerb52d08d2015-03-01 06:51:29 +000026void PDBSymbolExe::dump(PDBSymDumper &Dumper) const { Dumper.dump(*this); }
Zachary Turnerc883a8c2017-04-12 23:18:21 +000027
28uint32_t PDBSymbolExe::getPointerByteSize() const {
29 auto Pointer = findOneChild<PDBSymbolTypePointer>();
30 if (Pointer)
31 return Pointer->getLength();
32
33 if (getMachineType() == PDB_Machine::x86)
34 return 4;
35 return 8;
36}