1*5ffd83dbSDimitry Andric //===- NativeLineNumber.cpp - Native line number implementation -*- C++ -*-===// 2*5ffd83dbSDimitry Andric // 3*5ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*5ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*5ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*5ffd83dbSDimitry Andric // 7*5ffd83dbSDimitry Andric //===----------------------------------------------------------------------===// 8*5ffd83dbSDimitry Andric 9*5ffd83dbSDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativeLineNumber.h" 10*5ffd83dbSDimitry Andric 11*5ffd83dbSDimitry Andric using namespace llvm; 12*5ffd83dbSDimitry Andric using namespace llvm::pdb; 13*5ffd83dbSDimitry Andric 14*5ffd83dbSDimitry Andric NativeLineNumber::NativeLineNumber(const NativeSession &Session, 15*5ffd83dbSDimitry Andric const codeview::LineInfo Line, 16*5ffd83dbSDimitry Andric uint32_t ColumnNumber, uint32_t Section, 17*5ffd83dbSDimitry Andric uint32_t Offset, uint32_t Length, 18*5ffd83dbSDimitry Andric uint32_t SrcFileId) 19*5ffd83dbSDimitry Andric : Session(Session), Line(Line), ColumnNumber(ColumnNumber), 20*5ffd83dbSDimitry Andric Section(Section), Offset(Offset), Length(Length), SrcFileId(SrcFileId) {} 21*5ffd83dbSDimitry Andric 22*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getLineNumber() const { return Line.getStartLine(); } 23*5ffd83dbSDimitry Andric 24*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getLineNumberEnd() const { 25*5ffd83dbSDimitry Andric return Line.getEndLine(); 26*5ffd83dbSDimitry Andric } 27*5ffd83dbSDimitry Andric 28*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getColumnNumber() const { return ColumnNumber; } 29*5ffd83dbSDimitry Andric 30*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getColumnNumberEnd() const { return 0; } 31*5ffd83dbSDimitry Andric 32*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getAddressSection() const { return Section; } 33*5ffd83dbSDimitry Andric 34*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getAddressOffset() const { return Offset; } 35*5ffd83dbSDimitry Andric 36*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getRelativeVirtualAddress() const { 37*5ffd83dbSDimitry Andric return Session.getRVAFromSectOffset(Section, Offset); 38*5ffd83dbSDimitry Andric } 39*5ffd83dbSDimitry Andric 40*5ffd83dbSDimitry Andric uint64_t NativeLineNumber::getVirtualAddress() const { 41*5ffd83dbSDimitry Andric return Session.getVAFromSectOffset(Section, Offset); 42*5ffd83dbSDimitry Andric } 43*5ffd83dbSDimitry Andric 44*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getLength() const { return Length; } 45*5ffd83dbSDimitry Andric 46*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getSourceFileId() const { return SrcFileId; } 47*5ffd83dbSDimitry Andric 48*5ffd83dbSDimitry Andric uint32_t NativeLineNumber::getCompilandId() const { return 0; } 49*5ffd83dbSDimitry Andric 50*5ffd83dbSDimitry Andric bool NativeLineNumber::isStatement() const { return Line.isStatement(); } 51