Files
clang-p2996/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h
Jim Ingham 583bbb1dd4 Change over the broadcaster/listener process to hold shared or weak pointers
to each other.  This should remove some infrequent teardown crashes when the
listener is not the debugger's listener.

Processes now need to take a ListenerSP, not a Listener&.

This required changing over the Process plugin class constructors to take a ListenerSP, instead
of a Listener&.   Other than that there should be no functional change.
 
<rdar://problem/24580184> CrashTracer: [USER] Xcode at …ework: lldb_private::Listener::BroadcasterWillDestruct + 39

llvm-svn: 262863
2016-03-07 21:50:25 +00:00

53 lines
1.6 KiB
C++

//===-- ProcessWindows.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_Common_ProcessWindows_H_
#define liblldb_Plugins_Process_Windows_Common_ProcessWindows_H_
// Other libraries and framework includes
#include "lldb/lldb-forward.h"
#include "lldb/Core/Error.h"
#include "lldb/Target/Process.h"
namespace lldb_private
{
class ProcessWindows : public lldb_private::Process
{
public:
//------------------------------------------------------------------
// Constructors and destructors
//------------------------------------------------------------------
ProcessWindows(lldb::TargetSP target_sp,
lldb::ListenerSP listener_sp);
~ProcessWindows();
size_t GetSTDOUT(char *buf, size_t buf_size, lldb_private::Error &error) override;
size_t GetSTDERR(char *buf, size_t buf_size, lldb_private::Error &error) override;
size_t PutSTDIN(const char *buf, size_t buf_size, lldb_private::Error &error) override;
lldb::addr_t GetImageInfoAddress() override;
protected:
// These decode the page protection bits.
static bool
IsPageReadable(uint32_t protect);
static bool
IsPageWritable(uint32_t protect);
static bool
IsPageExecutable(uint32_t protect);
};
}
#endif // liblldb_Plugins_Process_Windows_Common_ProcessWindows_H_