1*9880d681SAndroid Build Coastguard Worker //===- BuiltinDumper.cpp ---------------------------------------- *- C++ *-===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker #include "BuiltinDumper.h" 11*9880d681SAndroid Build Coastguard Worker #include "LinePrinter.h" 12*9880d681SAndroid Build Coastguard Worker #include "llvm-pdbdump.h" 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h" 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker using namespace llvm; 17*9880d681SAndroid Build Coastguard Worker using namespace llvm::pdb; 18*9880d681SAndroid Build Coastguard Worker BuiltinDumper(LinePrinter & P)19*9880d681SAndroid Build Coastguard WorkerBuiltinDumper::BuiltinDumper(LinePrinter &P) 20*9880d681SAndroid Build Coastguard Worker : PDBSymDumper(false), Printer(P) {} 21*9880d681SAndroid Build Coastguard Worker start(const PDBSymbolTypeBuiltin & Symbol)22*9880d681SAndroid Build Coastguard Workervoid BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) { 23*9880d681SAndroid Build Coastguard Worker WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol); 24*9880d681SAndroid Build Coastguard Worker } 25*9880d681SAndroid Build Coastguard Worker getTypeName(const PDBSymbolTypeBuiltin & Symbol)26*9880d681SAndroid Build Coastguard WorkerStringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) { 27*9880d681SAndroid Build Coastguard Worker PDB_BuiltinType Type = Symbol.getBuiltinType(); 28*9880d681SAndroid Build Coastguard Worker switch (Type) { 29*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Float: 30*9880d681SAndroid Build Coastguard Worker if (Symbol.getLength() == 4) 31*9880d681SAndroid Build Coastguard Worker return "float"; 32*9880d681SAndroid Build Coastguard Worker return "double"; 33*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::UInt: 34*9880d681SAndroid Build Coastguard Worker switch (Symbol.getLength()) { 35*9880d681SAndroid Build Coastguard Worker case 8: 36*9880d681SAndroid Build Coastguard Worker return "unsigned __int64"; 37*9880d681SAndroid Build Coastguard Worker case 4: 38*9880d681SAndroid Build Coastguard Worker return "unsigned int"; 39*9880d681SAndroid Build Coastguard Worker case 2: 40*9880d681SAndroid Build Coastguard Worker return "unsigned short"; 41*9880d681SAndroid Build Coastguard Worker case 1: 42*9880d681SAndroid Build Coastguard Worker return "unsigned char"; 43*9880d681SAndroid Build Coastguard Worker default: 44*9880d681SAndroid Build Coastguard Worker return "unsigned"; 45*9880d681SAndroid Build Coastguard Worker } 46*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Int: 47*9880d681SAndroid Build Coastguard Worker switch (Symbol.getLength()) { 48*9880d681SAndroid Build Coastguard Worker case 8: 49*9880d681SAndroid Build Coastguard Worker return "__int64"; 50*9880d681SAndroid Build Coastguard Worker case 4: 51*9880d681SAndroid Build Coastguard Worker return "int"; 52*9880d681SAndroid Build Coastguard Worker case 2: 53*9880d681SAndroid Build Coastguard Worker return "short"; 54*9880d681SAndroid Build Coastguard Worker case 1: 55*9880d681SAndroid Build Coastguard Worker return "char"; 56*9880d681SAndroid Build Coastguard Worker default: 57*9880d681SAndroid Build Coastguard Worker return "int"; 58*9880d681SAndroid Build Coastguard Worker } 59*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Char: 60*9880d681SAndroid Build Coastguard Worker return "char"; 61*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::WCharT: 62*9880d681SAndroid Build Coastguard Worker return "wchar_t"; 63*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Void: 64*9880d681SAndroid Build Coastguard Worker return "void"; 65*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Long: 66*9880d681SAndroid Build Coastguard Worker return "long"; 67*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::ULong: 68*9880d681SAndroid Build Coastguard Worker return "unsigned long"; 69*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Bool: 70*9880d681SAndroid Build Coastguard Worker return "bool"; 71*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Currency: 72*9880d681SAndroid Build Coastguard Worker return "CURRENCY"; 73*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Date: 74*9880d681SAndroid Build Coastguard Worker return "DATE"; 75*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Variant: 76*9880d681SAndroid Build Coastguard Worker return "VARIANT"; 77*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Complex: 78*9880d681SAndroid Build Coastguard Worker return "complex"; 79*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::Bitfield: 80*9880d681SAndroid Build Coastguard Worker return "bitfield"; 81*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::BSTR: 82*9880d681SAndroid Build Coastguard Worker return "BSTR"; 83*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::HResult: 84*9880d681SAndroid Build Coastguard Worker return "HRESULT"; 85*9880d681SAndroid Build Coastguard Worker case PDB_BuiltinType::BCD: 86*9880d681SAndroid Build Coastguard Worker return "HRESULT"; 87*9880d681SAndroid Build Coastguard Worker default: 88*9880d681SAndroid Build Coastguard Worker return "void"; 89*9880d681SAndroid Build Coastguard Worker } 90*9880d681SAndroid Build Coastguard Worker } 91