48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
//===-- PECallFrameInfo.h ---------------------------------------*- C++ -*-===//
 | 
						|
//
 | 
						|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 | 
						|
// See https://llvm.org/LICENSE.txt for license information.
 | 
						|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#ifndef LLDB_SOURCE_PLUGINS_OBJECTFILE_PECOFF_PECALLFRAMEINFO_H
 | 
						|
#define LLDB_SOURCE_PLUGINS_OBJECTFILE_PECOFF_PECALLFRAMEINFO_H
 | 
						|
 | 
						|
#include "lldb/Symbol/CallFrameInfo.h"
 | 
						|
#include "lldb/Utility/DataExtractor.h"
 | 
						|
 | 
						|
class ObjectFilePECOFF;
 | 
						|
 | 
						|
namespace llvm {
 | 
						|
namespace Win64EH {
 | 
						|
 | 
						|
struct RuntimeFunction;
 | 
						|
 | 
						|
}
 | 
						|
} // namespace llvm
 | 
						|
 | 
						|
class PECallFrameInfo : public virtual lldb_private::CallFrameInfo {
 | 
						|
public:
 | 
						|
  explicit PECallFrameInfo(ObjectFilePECOFF &object_file,
 | 
						|
                           uint32_t exception_dir_rva,
 | 
						|
                           uint32_t exception_dir_size);
 | 
						|
 | 
						|
  bool GetAddressRange(lldb_private::Address addr,
 | 
						|
                       lldb_private::AddressRange &range) override;
 | 
						|
 | 
						|
  bool GetUnwindPlan(const lldb_private::Address &addr,
 | 
						|
                     lldb_private::UnwindPlan &unwind_plan) override;
 | 
						|
  bool GetUnwindPlan(const lldb_private::AddressRange &range,
 | 
						|
                     lldb_private::UnwindPlan &unwind_plan) override;
 | 
						|
 | 
						|
private:
 | 
						|
  const llvm::Win64EH::RuntimeFunction *FindRuntimeFunctionIntersectsWithRange(
 | 
						|
      const lldb_private::AddressRange &range) const;
 | 
						|
 | 
						|
  ObjectFilePECOFF &m_object_file;
 | 
						|
  lldb_private::DataExtractor m_exception_dir;
 | 
						|
};
 | 
						|
 | 
						|
#endif // LLDB_SOURCE_PLUGINS_OBJECTFILE_PECOFF_PECALLFRAMEINFO_H
 |