[Lldb-commits] [lldb] Minor fix to connect-url to support unix-connect sockets on localhost (PR #142875)
via lldb-commits
lldb-commits at lists.llvm.org
Thu Jun 5 17:11:02 PDT 2025
https://github.com/satyajanga updated https://github.com/llvm/llvm-project/pull/142875
>From 196837389c032a59f47dd0acf98bfd18bbaa0ae3 Mon Sep 17 00:00:00 2001
From: satya janga <satyajanga at fb.com>
Date: Wed, 4 Jun 2025 09:40:51 -0700
Subject: [PATCH] Minor fix to connect-url to support unix-connect sockets on
localhost Summary:
Test Plan:
Reviewers:
Subscribers:
Tasks:
Tags:
---
.../gdb-server/PlatformRemoteGDBServer.cpp | 5 ++-
.../platform/connect/TestPlatformConnect.py | 45 +++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp b/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
index 26ca6ed128972..4a77423bac526 100644
--- a/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
+++ b/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
@@ -800,7 +800,10 @@ std::string PlatformRemoteGDBServer::MakeUrl(const char *scheme,
const char *hostname,
uint16_t port, const char *path) {
StreamString result;
- result.Printf("%s://[%s]", scheme, hostname);
+ result.Printf("%s://", scheme);
+ if (strlen(hostname) > 0)
+ result.Printf("[%s]", hostname);
+
if (port != 0)
result.Printf(":%u", port);
if (path)
diff --git a/lldb/test/API/commands/platform/connect/TestPlatformConnect.py b/lldb/test/API/commands/platform/connect/TestPlatformConnect.py
index fc6c2ee98df44..5df0c16fbd1f7 100644
--- a/lldb/test/API/commands/platform/connect/TestPlatformConnect.py
+++ b/lldb/test/API/commands/platform/connect/TestPlatformConnect.py
@@ -57,3 +57,48 @@ def test_platform_process_connect(self):
self.assertEqual(frame.GetFunction().GetName(), "main")
self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
process.Continue()
+
+ @skipIfRemote
+ @expectedFailureAll(hostoslist=["windows"], triple=".*-android")
+ @skipIfDarwin # lldb-server not found correctly
+ @expectedFailureAll(oslist=["windows"]) # process modules not loaded
+ # lldb-server platform times out waiting for the gdbserver port number to be
+ # written to the pipe, yet it seems the gdbserver already has written it.
+ @expectedFailureAll(
+ archs=["aarch64"],
+ oslist=["freebsd"],
+ bugnumber="https://github.com/llvm/llvm-project/issues/84327",
+ )
+ @add_test_categories(["lldb-server"])
+ def test_platform_process_connect_with_unix_connect(self):
+ self.build()
+ lldb_temp_dir = lldb.SBHostOS.GetLLDBPath(lldb.ePathTypeLLDBTempSystemDir)
+ named_pipe = "%s/platform_server.sock" % lldb_temp_dir
+ port_file = self.getBuildArtifact("port")
+ commandline_args = [
+ "platform",
+ "--listen",
+ named_pipe,
+ "--socket-file",
+ port_file,
+ "--",
+ self.getBuildArtifact("a.out"),
+ "foo",
+ ]
+ self.spawnSubprocess(lldbgdbserverutils.get_lldb_server_exe(), commandline_args)
+
+ socket_file = lldbutil.wait_for_file_on_target(self, port_file)
+ new_platform = lldb.SBPlatform("remote-" + self.getPlatform())
+ self.dbg.SetSelectedPlatform(new_platform)
+ connect_url = "unix-connect://%s" % socket_file
+ self.runCmd("platform connect %s" % connect_url)
+
+ lldbutil.run_break_set_by_symbol(self, "main")
+ process = self.process()
+
+ process.Continue()
+
+ frame = self.frame()
+ self.assertEqual(frame.GetFunction().GetName(), "main")
+ self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
+ process.Continue()
More information about the lldb-commits
mailing list