@@ -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