mirror of
https://github.com/opnsense/src.git
synced 2026-02-28 12:20:54 -05:00
Notable upstream commits (upstream revision in parens): - Add a JSON producer to LLDB (228636) - Don't crash on bad DWARF expression (228729) - Add support of DWARFv3 DW_OP_form_tls_address (231342) - Assembly profiler for MIPS64 (232619) - Handle FreeBSD/arm64 core files (233273) - Read/Write register for MIPS64 (233685) - Rework LLDB system initialization (233758) - SysV ABI for aarch64 (236098) - MIPS software single stepping (236696) - FreeBSD/arm live debugging support (237303) - Assembly profiler for mips32 (237420) - Parse function name from DWARF DW_AT_abstract_origin (238307) - Improve LLDB prompt handling (238313) - Add real time signals support to FreeBSDSignals (238316) - Fix race in IOHandlerProcessSTDIO (238423) - MIPS64 Branch instruction emulation for SW single stepping (238820) - Improve OSType initialization in elf object file's arch_spec (239148) - Emulation of MIPS64 floating-point branch instructions (239996) - ABI Plugin for MIPS32 (239997) - ABI Plugin for MIPS64 (240123) - MIPS32 branch emulation and single stepping (240373) - Improve instruction emulation based stack unwinding on ARM (240533) - Add branch emulation to aarch64 instruction emulator (240769)
111 lines
3.7 KiB
C++
111 lines
3.7 KiB
C++
//===-- OperatingSystemPython.h ---------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
|
|
#ifndef liblldb_OperatingSystemPython_h_
|
|
#define liblldb_OperatingSystemPython_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
// Other libraries and framework includes
|
|
#include "lldb/Core/StructuredData.h"
|
|
#include "lldb/Target/OperatingSystem.h"
|
|
|
|
class DynamicRegisterInfo;
|
|
|
|
namespace lldb_private
|
|
{
|
|
class ScriptInterpreter;
|
|
}
|
|
|
|
class OperatingSystemPython : public lldb_private::OperatingSystem
|
|
{
|
|
public:
|
|
//------------------------------------------------------------------
|
|
// Static Functions
|
|
//------------------------------------------------------------------
|
|
static lldb_private::OperatingSystem *
|
|
CreateInstance (lldb_private::Process *process, bool force);
|
|
|
|
static void
|
|
Initialize();
|
|
|
|
static void
|
|
Terminate();
|
|
|
|
static lldb_private::ConstString
|
|
GetPluginNameStatic();
|
|
|
|
static const char *
|
|
GetPluginDescriptionStatic();
|
|
|
|
//------------------------------------------------------------------
|
|
// Class Methods
|
|
//------------------------------------------------------------------
|
|
OperatingSystemPython (lldb_private::Process *process,
|
|
const lldb_private::FileSpec &python_module_path);
|
|
|
|
virtual
|
|
~OperatingSystemPython ();
|
|
|
|
//------------------------------------------------------------------
|
|
// lldb_private::PluginInterface Methods
|
|
//------------------------------------------------------------------
|
|
virtual lldb_private::ConstString
|
|
GetPluginName();
|
|
|
|
virtual uint32_t
|
|
GetPluginVersion();
|
|
|
|
//------------------------------------------------------------------
|
|
// lldb_private::OperatingSystem Methods
|
|
//------------------------------------------------------------------
|
|
virtual bool
|
|
UpdateThreadList (lldb_private::ThreadList &old_thread_list,
|
|
lldb_private::ThreadList &real_thread_list,
|
|
lldb_private::ThreadList &new_thread_list);
|
|
|
|
virtual void
|
|
ThreadWasSelected (lldb_private::Thread *thread);
|
|
|
|
virtual lldb::RegisterContextSP
|
|
CreateRegisterContextForThread (lldb_private::Thread *thread,
|
|
lldb::addr_t reg_data_addr);
|
|
|
|
virtual lldb::StopInfoSP
|
|
CreateThreadStopReason (lldb_private::Thread *thread);
|
|
|
|
//------------------------------------------------------------------
|
|
// Method for lazy creation of threads on demand
|
|
//------------------------------------------------------------------
|
|
virtual lldb::ThreadSP
|
|
CreateThread (lldb::tid_t tid, lldb::addr_t context);
|
|
|
|
protected:
|
|
|
|
bool IsValid() const
|
|
{
|
|
return m_python_object_sp && m_python_object_sp->IsValid();
|
|
}
|
|
|
|
lldb::ThreadSP CreateThreadFromThreadInfo(lldb_private::StructuredData::Dictionary &thread_dict,
|
|
lldb_private::ThreadList &core_thread_list, lldb_private::ThreadList &old_thread_list,
|
|
std::vector<bool> &core_used_map, bool *did_create_ptr);
|
|
|
|
DynamicRegisterInfo *
|
|
GetDynamicRegisterInfo ();
|
|
|
|
lldb::ValueObjectSP m_thread_list_valobj_sp;
|
|
std::unique_ptr<DynamicRegisterInfo> m_register_info_ap;
|
|
lldb_private::ScriptInterpreter *m_interpreter;
|
|
lldb_private::StructuredData::ObjectSP m_python_object_sp;
|
|
};
|
|
|
|
#endif // #ifndef liblldb_OperatingSystemPython_h_
|
|
#endif // #ifndef LLDB_DISABLE_PYTHON
|