summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect')
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py96
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/main.cpp6
3 files changed, 107 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile
new file mode 100644
index 00000000000..314f1cb2f07
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py
new file mode 100644
index 00000000000..aa4b3dee792
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py
@@ -0,0 +1,96 @@
+from __future__ import print_function
+
+import time
+
+import gdbremote_testcase
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class TestPlatformProcessConnect(gdbremote_testcase.GdbRemoteTestCaseBase):
+ mydir = TestBase.compute_mydir(__file__)
+
+ @llgs_test
+ @no_debug_info_test
+ @skipIf(remote=False)
+ @expectedFailureAll(hostoslist=["windows"], triple='.*-android')
+ def test_platform_process_connect(self):
+ self.build()
+ self.init_llgs_test(False)
+
+ working_dir = lldb.remote_platform.GetWorkingDirectory()
+ src = lldb.SBFileSpec(self.getBuildArtifact("a.out"))
+ dest = lldb.SBFileSpec(os.path.join(working_dir, "a.out"))
+ err = lldb.remote_platform.Put(src, dest)
+ if err.Fail():
+ raise RuntimeError(
+ "Unable copy '%s' to '%s'.\n>>> %s" %
+ (f, wd, err.GetCString()))
+
+ m = re.search("^(.*)://([^:/]*)", configuration.lldb_platform_url)
+ protocol = m.group(1)
+ hostname = m.group(2)
+ unix_protocol = protocol.startswith("unix-")
+ if unix_protocol:
+ p = re.search("^(.*)-connect", protocol)
+ path = lldbutil.join_remote_paths(configuration.lldb_platform_working_dir,
+ self.getBuildDirBasename(), "platform-%d.sock" % int(time.time()))
+ listen_url = "%s://%s" % (p.group(1), path)
+ else:
+ listen_url = "*:0"
+
+ port_file = "%s/port" % working_dir
+ commandline_args = [
+ "platform",
+ "--listen",
+ listen_url,
+ "--socket-file",
+ port_file,
+ "--",
+ "%s/a.out" %
+ working_dir,
+ "foo"]
+ self.spawnSubprocess(
+ self.debug_monitor_exe,
+ commandline_args,
+ install_remote=False)
+ self.addTearDownHook(self.cleanupSubprocesses)
+
+ socket_id = lldbutil.wait_for_file_on_target(self, port_file)
+
+ new_debugger = lldb.SBDebugger.Create()
+ new_debugger.SetAsync(False)
+
+ def del_debugger(new_debugger=new_debugger):
+ del new_debugger
+ self.addTearDownHook(del_debugger)
+
+ new_platform = lldb.SBPlatform(lldb.remote_platform.GetName())
+ new_debugger.SetSelectedPlatform(new_platform)
+ new_interpreter = new_debugger.GetCommandInterpreter()
+
+ if unix_protocol:
+ connect_url = "%s://%s%s" % (protocol, hostname, socket_id)
+ else:
+ connect_url = "%s://%s:%s" % (protocol, hostname, socket_id)
+
+ command = "platform connect %s" % (connect_url)
+ result = lldb.SBCommandReturnObject()
+ new_interpreter.HandleCommand(command, result)
+ self.assertTrue(
+ result.Succeeded(),
+ "platform process connect failed: %s" %
+ result.GetOutput())
+
+ target = new_debugger.GetSelectedTarget()
+ process = target.GetProcess()
+ thread = process.GetThreadAtIndex(0)
+
+ breakpoint = target.BreakpointCreateByName("main")
+ process.Continue()
+
+ frame = thread.GetFrameAtIndex(0)
+ self.assertEqual(frame.GetFunction().GetName(), "main")
+ self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
+ process.Continue()
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/main.cpp
new file mode 100644
index 00000000000..c7ebe0759a4
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/main.cpp
@@ -0,0 +1,6 @@
+#include <cstdio>
+
+int main(int argc, char **argv) {
+ printf("argc: %d\n", argc);
+ return argv[0][0];
+}
OpenPOWER on IntegriCloud