brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 07999aa Raw
54 lines · c
1//===-- PECallFrameInfo.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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_OBJECTFILE_PECOFF_PECALLFRAMEINFO_H10#define LLDB_SOURCE_PLUGINS_OBJECTFILE_PECOFF_PECALLFRAMEINFO_H11 12#include "lldb/Core/AddressRange.h"13#include "lldb/Symbol/CallFrameInfo.h"14#include "lldb/Symbol/UnwindPlan.h"15#include "lldb/Utility/DataExtractor.h"16 17class ObjectFilePECOFF;18 19namespace llvm {20namespace Win64EH {21 22struct RuntimeFunction;23 24}25} // namespace llvm26 27class PECallFrameInfo : public virtual lldb_private::CallFrameInfo {28public:29  explicit PECallFrameInfo(ObjectFilePECOFF &object_file,30                           uint32_t exception_dir_rva,31                           uint32_t exception_dir_size);32 33  bool GetAddressRange(lldb_private::Address addr,34                       lldb_private::AddressRange &range) override;35 36  std::unique_ptr<lldb_private::UnwindPlan>37  GetUnwindPlan(const lldb_private::Address &addr) override {38    return GetUnwindPlan({lldb_private::AddressRange(addr, 1)}, addr);39  }40 41  std::unique_ptr<lldb_private::UnwindPlan>42  GetUnwindPlan(llvm::ArrayRef<lldb_private::AddressRange> ranges,43                const lldb_private::Address &addr) override;44 45private:46  const llvm::Win64EH::RuntimeFunction *FindRuntimeFunctionIntersectsWithRange(47      const lldb_private::AddressRange &range) const;48 49  ObjectFilePECOFF &m_object_file;50  lldb_private::DataExtractor m_exception_dir;51};52 53#endif // LLDB_SOURCE_PLUGINS_OBJECTFILE_PECOFF_PECALLFRAMEINFO_H54