
Summary: This is a clean version of the change suggested here: https://bugs.llvm.org/show_bug.cgi?id=37495 The main change is to follow the same pattern as non-windows targets and use an unwinder object to retrieve the register context. I also changed a couple of the comments to actually log, so that issues with unsupported scenarios can be tracked down more easily. Lastly, ClearStackFrames is implemented in the base class, so individual thread implementations don't have to override it. Reviewers: asmith, zturner, aleksandr.urakov Reviewed By: aleksandr.urakov Subscribers: emaste, stella.stamenova, tatyana-krasnukha, llvm-commits Differential Revision: https://reviews.llvm.org/D49111 llvm-svn: 336732
51 lines
1.4 KiB
C++
51 lines
1.4 KiB
C++
//===-- TargetThreadWindows.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_Plugins_Process_Windows_TargetThreadWindows_H_
|
|
#define liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
|
|
|
|
//#include "ForwardDecl.h"
|
|
#include "lldb/Host/HostThread.h"
|
|
#include "lldb/Target/Thread.h"
|
|
#include "lldb/lldb-forward.h"
|
|
|
|
#include "RegisterContextWindows.h"
|
|
|
|
namespace lldb_private {
|
|
class ProcessWindows;
|
|
class HostThread;
|
|
class StackFrame;
|
|
|
|
class TargetThreadWindows : public lldb_private::Thread {
|
|
public:
|
|
TargetThreadWindows(ProcessWindows &process, const HostThread &thread);
|
|
virtual ~TargetThreadWindows();
|
|
|
|
// lldb_private::Thread overrides
|
|
void RefreshStateAfterStop() override;
|
|
void WillResume(lldb::StateType resume_state) override;
|
|
void DidStop() override;
|
|
lldb::RegisterContextSP GetRegisterContext() override;
|
|
lldb::RegisterContextSP
|
|
CreateRegisterContextForFrame(StackFrame *frame) override;
|
|
bool CalculateStopInfo() override;
|
|
Unwind *GetUnwinder() override;
|
|
|
|
Status DoResume();
|
|
|
|
HostThread GetHostThread() const { return m_host_thread; }
|
|
|
|
private:
|
|
lldb::RegisterContextSP m_thread_reg_ctx_sp;
|
|
HostThread m_host_thread;
|
|
};
|
|
} // namespace lldb_private
|
|
|
|
#endif
|