15ffd83dbSDimitry Andric //===- NativePublicSymbol.cpp - info about public symbols -------*- C++ -*-===// 25ffd83dbSDimitry Andric // 35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65ffd83dbSDimitry Andric // 75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===// 85ffd83dbSDimitry Andric 95ffd83dbSDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativePublicSymbol.h" 105ffd83dbSDimitry Andric 115ffd83dbSDimitry Andric #include "llvm/DebugInfo/CodeView/SymbolRecord.h" 125ffd83dbSDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativeTypeBuiltin.h" 135ffd83dbSDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativeTypeEnum.h" 145ffd83dbSDimitry Andric 155ffd83dbSDimitry Andric using namespace llvm; 165ffd83dbSDimitry Andric using namespace llvm::codeview; 175ffd83dbSDimitry Andric using namespace llvm::pdb; 185ffd83dbSDimitry Andric 195ffd83dbSDimitry Andric NativePublicSymbol::NativePublicSymbol(NativeSession &Session, SymIndexId Id, 205ffd83dbSDimitry Andric const codeview::PublicSym32 &Sym) 21*e8d8bef9SDimitry Andric : NativeRawSymbol(Session, PDB_SymType::PublicSymbol, Id), Sym(Sym) {} 225ffd83dbSDimitry Andric 235ffd83dbSDimitry Andric NativePublicSymbol::~NativePublicSymbol() {} 245ffd83dbSDimitry Andric 255ffd83dbSDimitry Andric void NativePublicSymbol::dump(raw_ostream &OS, int Indent, 265ffd83dbSDimitry Andric PdbSymbolIdField ShowIdFields, 275ffd83dbSDimitry Andric PdbSymbolIdField RecurseIdFields) const { 285ffd83dbSDimitry Andric NativeRawSymbol::dump(OS, Indent, ShowIdFields, RecurseIdFields); 295ffd83dbSDimitry Andric dumpSymbolField(OS, "name", getName(), Indent); 305ffd83dbSDimitry Andric dumpSymbolField(OS, "offset", getAddressOffset(), Indent); 315ffd83dbSDimitry Andric dumpSymbolField(OS, "section", getAddressSection(), Indent); 325ffd83dbSDimitry Andric } 335ffd83dbSDimitry Andric 345ffd83dbSDimitry Andric uint32_t NativePublicSymbol::getAddressOffset() const { return Sym.Offset; } 355ffd83dbSDimitry Andric 365ffd83dbSDimitry Andric uint32_t NativePublicSymbol::getAddressSection() const { return Sym.Segment; } 375ffd83dbSDimitry Andric 385ffd83dbSDimitry Andric std::string NativePublicSymbol::getName() const { 395ffd83dbSDimitry Andric return std::string(Sym.Name); 405ffd83dbSDimitry Andric } 415ffd83dbSDimitry Andric 425ffd83dbSDimitry Andric uint32_t NativePublicSymbol::getRelativeVirtualAddress() const { 435ffd83dbSDimitry Andric return Session.getRVAFromSectOffset(Sym.Segment, Sym.Offset); 445ffd83dbSDimitry Andric } 455ffd83dbSDimitry Andric 465ffd83dbSDimitry Andric uint64_t NativePublicSymbol::getVirtualAddress() const { 475ffd83dbSDimitry Andric return Session.getVAFromSectOffset(Sym.Segment, Sym.Offset); 485ffd83dbSDimitry Andric } 49