91 lines
3.0 KiB
C++
91 lines
3.0 KiB
C++
//===-- OperatingSystemGo.h -------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _liblldb_OperatingSystemGo_h_
|
|
#define _liblldb_OperatingSystemGo_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
#include <memory>
|
|
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "lldb/Target/OperatingSystem.h"
|
|
|
|
class DynamicRegisterInfo;
|
|
|
|
class OperatingSystemGo : public lldb_private::OperatingSystem {
|
|
public:
|
|
OperatingSystemGo(lldb_private::Process *process);
|
|
|
|
~OperatingSystemGo() override;
|
|
|
|
//------------------------------------------------------------------
|
|
// Static Functions
|
|
//------------------------------------------------------------------
|
|
static lldb_private::OperatingSystem *
|
|
CreateInstance(lldb_private::Process *process, bool force);
|
|
|
|
static void Initialize();
|
|
|
|
static void DebuggerInitialize(lldb_private::Debugger &debugger);
|
|
|
|
static void Terminate();
|
|
|
|
static lldb_private::ConstString GetPluginNameStatic();
|
|
|
|
static const char *GetPluginDescriptionStatic();
|
|
|
|
//------------------------------------------------------------------
|
|
// lldb_private::PluginInterface Methods
|
|
//------------------------------------------------------------------
|
|
lldb_private::ConstString GetPluginName() override;
|
|
|
|
uint32_t GetPluginVersion() override;
|
|
|
|
//------------------------------------------------------------------
|
|
// lldb_private::OperatingSystem Methods
|
|
//------------------------------------------------------------------
|
|
bool UpdateThreadList(lldb_private::ThreadList &old_thread_list,
|
|
lldb_private::ThreadList &real_thread_list,
|
|
lldb_private::ThreadList &new_thread_list) override;
|
|
|
|
void ThreadWasSelected(lldb_private::Thread *thread) override;
|
|
|
|
lldb::RegisterContextSP
|
|
CreateRegisterContextForThread(lldb_private::Thread *thread,
|
|
lldb::addr_t reg_data_addr) override;
|
|
|
|
lldb::StopInfoSP
|
|
CreateThreadStopReason(lldb_private::Thread *thread) override;
|
|
|
|
//------------------------------------------------------------------
|
|
// Method for lazy creation of threads on demand
|
|
//------------------------------------------------------------------
|
|
lldb::ThreadSP CreateThread(lldb::tid_t tid, lldb::addr_t context) override;
|
|
|
|
private:
|
|
struct Goroutine;
|
|
|
|
static lldb::ValueObjectSP FindGlobal(lldb::TargetSP target,
|
|
const char *name);
|
|
|
|
static lldb::TypeSP FindType(lldb::TargetSP target_sp, const char *name);
|
|
|
|
bool Init(lldb_private::ThreadList &threads);
|
|
|
|
Goroutine CreateGoroutineAtIndex(uint64_t idx, lldb_private::Status &err);
|
|
|
|
std::unique_ptr<DynamicRegisterInfo> m_reginfo;
|
|
lldb::ValueObjectSP m_allg_sp;
|
|
lldb::ValueObjectSP m_allglen_sp;
|
|
};
|
|
|
|
#endif // liblldb_OperatingSystemGo_h_
|