Skip to content

Commit 1968373

Browse files
committed
Minor fix to connect-url to support unix-connect sockets on localhost
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
1 parent 479f992 commit 1968373

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,10 @@ std::string PlatformRemoteGDBServer::MakeUrl(const char *scheme,
800800
const char *hostname,
801801
uint16_t port, const char *path) {
802802
StreamString result;
803-
result.Printf("%s://[%s]", scheme, hostname);
803+
result.Printf("%s://", scheme);
804+
if (strlen(hostname) > 0)
805+
result.Printf("[%s]", hostname);
806+
804807
if (port != 0)
805808
result.Printf(":%u", port);
806809
if (path)

lldb/test/API/commands/platform/connect/TestPlatformConnect.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,48 @@ def test_platform_process_connect(self):
5757
self.assertEqual(frame.GetFunction().GetName(), "main")
5858
self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
5959
process.Continue()
60+
61+
@skipIfRemote
62+
@expectedFailureAll(hostoslist=["windows"], triple=".*-android")
63+
@skipIfDarwin # lldb-server not found correctly
64+
@expectedFailureAll(oslist=["windows"]) # process modules not loaded
65+
# lldb-server platform times out waiting for the gdbserver port number to be
66+
# written to the pipe, yet it seems the gdbserver already has written it.
67+
@expectedFailureAll(
68+
archs=["aarch64"],
69+
oslist=["freebsd"],
70+
bugnumber="https://github.com/llvm/llvm-project/issues/84327",
71+
)
72+
@add_test_categories(["lldb-server"])
73+
def test_platform_process_connect_with_unix_connect(self):
74+
self.build()
75+
lldb_temp_dir = lldb.SBHostOS.GetLLDBPath(lldb.ePathTypeLLDBTempSystemDir)
76+
named_pipe = "%s/platform_server.sock" % lldb_temp_dir
77+
port_file = self.getBuildArtifact("port")
78+
commandline_args = [
79+
"platform",
80+
"--listen",
81+
named_pipe,
82+
"--socket-file",
83+
port_file,
84+
"--",
85+
self.getBuildArtifact("a.out"),
86+
"foo",
87+
]
88+
self.spawnSubprocess(lldbgdbserverutils.get_lldb_server_exe(), commandline_args)
89+
90+
socket_file = lldbutil.wait_for_file_on_target(self, port_file)
91+
new_platform = lldb.SBPlatform("remote-" + self.getPlatform())
92+
self.dbg.SetSelectedPlatform(new_platform)
93+
connect_url = "unix-connect://%s" % socket_file
94+
self.runCmd("platform connect %s" % connect_url)
95+
96+
lldbutil.run_break_set_by_symbol(self, "main")
97+
process = self.process()
98+
99+
process.Continue()
100+
101+
frame = self.frame()
102+
self.assertEqual(frame.GetFunction().GetName(), "main")
103+
self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
104+
process.Continue()

0 commit comments

Comments
 (0)