summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
commit061da546b983eb767bad15e67af1174fb0bcf31c (patch)
tree83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz
wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h')
-rw-r--r--gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h b/gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
new file mode 100644
index 00000000000..c4421a3f4a3
--- /dev/null
+++ b/gnu/llvm/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
@@ -0,0 +1,63 @@
+//===-- PlatformAndroidRemoteGDBServer.h ------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_PlatformAndroidRemoteGDBServer_h_
+#define liblldb_PlatformAndroidRemoteGDBServer_h_
+
+#include <map>
+#include <utility>
+
+#include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h"
+
+#include "llvm/ADT/Optional.h"
+
+#include "AdbClient.h"
+
+namespace lldb_private {
+namespace platform_android {
+
+class PlatformAndroidRemoteGDBServer
+ : public platform_gdb_server::PlatformRemoteGDBServer {
+public:
+ PlatformAndroidRemoteGDBServer();
+
+ ~PlatformAndroidRemoteGDBServer() override;
+
+ Status ConnectRemote(Args &args) override;
+
+ Status DisconnectRemote() override;
+
+ lldb::ProcessSP ConnectProcess(llvm::StringRef connect_url,
+ llvm::StringRef plugin_name,
+ lldb_private::Debugger &debugger,
+ lldb_private::Target *target,
+ lldb_private::Status &error) override;
+
+protected:
+ std::string m_device_id;
+ std::map<lldb::pid_t, uint16_t> m_port_forwards;
+ llvm::Optional<AdbClient::UnixSocketNamespace> m_socket_namespace;
+
+ bool LaunchGDBServer(lldb::pid_t &pid, std::string &connect_url) override;
+
+ bool KillSpawnedProcess(lldb::pid_t pid) override;
+
+ void DeleteForwardPort(lldb::pid_t pid);
+
+ Status MakeConnectURL(const lldb::pid_t pid, const uint16_t remote_port,
+ llvm::StringRef remote_socket_name,
+ std::string &connect_url);
+
+private:
+ DISALLOW_COPY_AND_ASSIGN(PlatformAndroidRemoteGDBServer);
+};
+
+} // namespace platform_android
+} // namespace lldb_private
+
+#endif // liblldb_PlatformAndroidRemoteGDBServer_h_