Path: blob/main/contrib/llvm-project/llvm/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp
35293 views
//===- DIAFrameData.cpp - DIA impl. of IPDBFrameData -------------- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "llvm/DebugInfo/PDB/DIA/DIAFrameData.h"9#include "llvm/DebugInfo/PDB/DIA/DIASession.h"10#include "llvm/DebugInfo/PDB/DIA/DIAUtils.h"1112using namespace llvm::pdb;1314DIAFrameData::DIAFrameData(CComPtr<IDiaFrameData> DiaFrameData)15: FrameData(DiaFrameData) {}1617template <typename ArgType>18ArgType19PrivateGetDIAValue(IDiaFrameData *FrameData,20HRESULT (__stdcall IDiaFrameData::*Method)(ArgType *)) {21ArgType Value;22if (S_OK == (FrameData->*Method)(&Value))23return static_cast<ArgType>(Value);2425return ArgType();26}2728uint32_t DIAFrameData::getAddressOffset() const {29return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_addressOffset);30}3132uint32_t DIAFrameData::getAddressSection() const {33return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_addressSection);34}3536uint32_t DIAFrameData::getLengthBlock() const {37return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_lengthBlock);38}3940std::string DIAFrameData::getProgram() const {41return invokeBstrMethod(*FrameData, &IDiaFrameData::get_program);42}4344uint32_t DIAFrameData::getRelativeVirtualAddress() const {45return PrivateGetDIAValue(FrameData,46&IDiaFrameData::get_relativeVirtualAddress);47}4849uint64_t DIAFrameData::getVirtualAddress() const {50return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_virtualAddress);51}525354