Home | History | Annotate | Download | only in PDB
      1 //===- 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 
     10 #include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
     11 
     12 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
     13 #include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
     14 
     15 #include <utility>
     16 
     17 using namespace llvm;
     18 using namespace llvm::pdb;
     19 
     20 PDBSymbolExe::PDBSymbolExe(const IPDBSession &PDBSession,
     21                            std::unique_ptr<IPDBRawSymbol> Symbol)
     22     : PDBSymbol(PDBSession, std::move(Symbol)) {
     23   assert(RawSymbol->getSymTag() == PDB_SymType::Exe);
     24 }
     25 
     26 void PDBSymbolExe::dump(PDBSymDumper &Dumper) const { Dumper.dump(*this); }
     27 
     28 uint32_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 }
     37