Path: blob/main/contrib/llvm-project/lldb/source/Plugins/SymbolFile/NativePDB/DWARFLocationExpression.h
39642 views
//===-- DWARFLocationExpression.h -------------------------------*- 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#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_DWARFLOCATIONEXPRESSION_H9#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_DWARFLOCATIONEXPRESSION_H1011#include "lldb/lldb-forward.h"12#include "llvm/ADT/ArrayRef.h"13#include "llvm/DebugInfo/CodeView/CodeView.h"14#include <map>1516namespace llvm {17class APSInt;18class StringRef;19namespace codeview {20class TypeIndex;21}22namespace pdb {23class TpiStream;24}25} // namespace llvm26namespace lldb_private {27namespace npdb {28struct MemberValLocation {29uint16_t reg_id;30uint16_t reg_offset;31bool is_at_reg = true;32};3334DWARFExpression35MakeEnregisteredLocationExpression(llvm::codeview::RegisterId reg,36lldb::ModuleSP module);3738DWARFExpression MakeRegRelLocationExpression(llvm::codeview::RegisterId reg,39int32_t offset,40lldb::ModuleSP module);41DWARFExpression MakeVFrameRelLocationExpression(llvm::StringRef fpo_program,42int32_t offset,43lldb::ModuleSP module);44DWARFExpression MakeGlobalLocationExpression(uint16_t section, uint32_t offset,45lldb::ModuleSP module);46DWARFExpression MakeConstantLocationExpression(47llvm::codeview::TypeIndex underlying_ti, llvm::pdb::TpiStream &tpi,48const llvm::APSInt &constant, lldb::ModuleSP module);49DWARFExpression MakeEnregisteredLocationExpressionForComposite(50const std::map<uint64_t, MemberValLocation> &offset_to_location,51std::map<uint64_t, size_t> &offset_to_size, size_t total_size,52lldb::ModuleSP module);53} // namespace npdb54} // namespace lldb_private5556#endif575859