summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h
diff options
context:
space:
mode:
authorAdrian McCarthy <amccarth@google.com>2015-08-24 16:00:51 +0000
committerAdrian McCarthy <amccarth@google.com>2015-08-24 16:00:51 +0000
commit27785dd5300825e60d5ff7edf5a2bada85004b58 (patch)
treec5a03e2890b6331638b2f2a55861bce8dd57e465 /lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h
parent550dfe79ca8c3a2ec5fbf2e34ad40fe66eb7c09f (diff)
downloadbcm5719-llvm-27785dd5300825e60d5ff7edf5a2bada85004b58.tar.gz
bcm5719-llvm-27785dd5300825e60d5ff7edf5a2bada85004b58.zip
Reorg code to allow Windows Process Plugins to share some common code.
Differential Revision: http://reviews.llvm.org/D12252 llvm-svn: 245850
Diffstat (limited to 'lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h')
-rw-r--r--lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h b/lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h
new file mode 100644
index 00000000000..de9273274a2
--- /dev/null
+++ b/lldb/source/Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h
@@ -0,0 +1,116 @@
+//===-- ProcessWinMiniDump.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_ProcessWinMiniDump_h_
+#define liblldb_ProcessWinMiniDump_h_
+
+#include <list>
+#include <vector>
+
+#include "lldb/Core/ConstString.h"
+#include "lldb/Core/Error.h"
+#include "lldb/Target/Process.h"
+
+struct ThreadData;
+
+class ProcessWinMiniDump : public lldb_private::Process
+{
+public:
+ static lldb::ProcessSP
+ CreateInstance (lldb_private::Target& target,
+ lldb_private::Listener &listener,
+ const lldb_private::FileSpec *crash_file_path);
+
+ static void
+ Initialize();
+
+ static void
+ Terminate();
+
+ static lldb_private::ConstString
+ GetPluginNameStatic();
+
+ static const char *
+ GetPluginDescriptionStatic();
+
+ ProcessWinMiniDump(lldb_private::Target& target,
+ lldb_private::Listener &listener,
+ const lldb_private::FileSpec &core_file);
+
+ virtual
+ ~ProcessWinMiniDump();
+
+ bool
+ CanDebug(lldb_private::Target &target, bool plugin_specified_by_name) override;
+
+ lldb_private::Error
+ DoLoadCore() override;
+
+ lldb_private::DynamicLoader *
+ GetDynamicLoader() override;
+
+ lldb_private::ConstString
+ GetPluginName() override;
+
+ uint32_t
+ GetPluginVersion() override;
+
+ lldb_private::Error
+ DoDestroy() override;
+
+ void
+ RefreshStateAfterStop() override;
+
+ bool
+ IsAlive() override;
+
+ size_t
+ ReadMemory(lldb::addr_t addr, void *buf, size_t size, lldb_private::Error &error) override;
+
+ size_t
+ DoReadMemory(lldb::addr_t addr, void *buf, size_t size, lldb_private::Error &error) override;
+
+ lldb::addr_t
+ GetImageInfoAddress() override;
+
+ lldb_private::ArchSpec
+ GetArchitecture();
+
+protected:
+ void
+ Clear();
+
+ bool
+ UpdateThreadList(lldb_private::ThreadList &old_thread_list,
+ lldb_private::ThreadList &new_thread_list) override;
+
+private:
+ lldb_private::Error
+ MapMiniDumpIntoMemory(const char *file);
+
+ lldb_private::ArchSpec
+ DetermineArchitecture();
+
+ void
+ ReadExceptionRecord();
+
+ // A thin wrapper around WinAPI's MiniDumpReadDumpStream to avoid redundant
+ // checks. If there's a failure (e.g., if the requested stream doesn't exist),
+ // the function returns nullptr and sets *size_out to 0.
+ void *
+ FindDumpStream(unsigned stream_number, size_t *size_out);
+
+ // Isolate the data to keep Windows-specific types out of this header. Can't
+ // use the typical pimpl idiom because the implementation of this class also
+ // needs access to public and protected members of the base class.
+ class Data;
+ std::unique_ptr<Data> m_data_up;
+};
+
+#endif // liblldb_ProcessWinMiniDump_h_
OpenPOWER on IntegriCloud