1 //===-- DWARFLocationExpression.h -------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_DWARFLOCATIONEXPRESSION_H 10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_DWARFLOCATIONEXPRESSION_H 11 12 #include "lldb/lldb-forward.h" 13 #include "llvm/ADT/ArrayRef.h" 14 #include "llvm/DebugInfo/CodeView/CodeView.h" 15 #include <map> 16 17 namespace llvm { 18 class APSInt; 19 class StringRef; 20 namespace codeview { 21 class TypeIndex; 22 } 23 namespace pdb { 24 class TpiStream; 25 } 26 } // namespace llvm 27 namespace lldb_private { 28 namespace npdb { 29 DWARFExpression 30 MakeEnregisteredLocationExpression(llvm::codeview::RegisterId reg, 31 lldb::ModuleSP module); 32 33 DWARFExpression MakeRegRelLocationExpression(llvm::codeview::RegisterId reg, 34 int32_t offset, 35 lldb::ModuleSP module); 36 DWARFExpression MakeVFrameRelLocationExpression(llvm::StringRef fpo_program, 37 int32_t offset, 38 lldb::ModuleSP module); 39 DWARFExpression MakeGlobalLocationExpression(uint16_t section, uint32_t offset, 40 lldb::ModuleSP module); 41 DWARFExpression MakeConstantLocationExpression( 42 llvm::codeview::TypeIndex underlying_ti, llvm::pdb::TpiStream &tpi, 43 const llvm::APSInt &constant, lldb::ModuleSP module); 44 DWARFExpression MakeEnregisteredLocationExpressionForClass( 45 std::map<uint64_t, std::pair<llvm::codeview::RegisterId, uint32_t>> 46 &members_info, 47 lldb::ModuleSP module); 48 } // namespace npdb 49 } // namespace lldb_private 50 51 #endif 52