forked from OSchip/llvm-project
Patch from Andrew Kaylor for linux:
The attached patch fixes a problem with performing an attach from the SBTarget API on Linux (and other systems that use ProcessPOSIX). When Process::Attach was called from SBTarget, it resulted in a call to a form of the DoAttachWithID function that wasn't implemented in ProcessPOSIX, and so it fell back to the default implementation (which just returns an error). It didn't seem necessary to use the attach_info parameter for this case, so I just implemented it as a call to the simpler version of the function. In debugging this problem, I also found that SBTarget wasn't checking the return value from the Attach call, causing it to hang when the attach fails. llvm-svn: 163399
This commit is contained in:
parent
542e407581
commit
e2186ed6d9
|
@ -957,10 +957,13 @@ SBTarget::AttachToProcessWithID
|
|||
attach_info.SetUserID(instance_info.GetEffectiveUserID());
|
||||
}
|
||||
error.SetError (process_sp->Attach (attach_info));
|
||||
// If we are doing synchronous mode, then wait for the
|
||||
// process to stop!
|
||||
if (target_sp->GetDebugger().GetAsyncExecution () == false)
|
||||
if (error.Success())
|
||||
{
|
||||
// If we are doing synchronous mode, then wait for the
|
||||
// process to stop!
|
||||
if (target_sp->GetDebugger().GetAsyncExecution () == false)
|
||||
process_sp->WaitForProcessToStop (NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -117,6 +117,12 @@ ProcessPOSIX::DoAttachToProcessWithID(lldb::pid_t pid)
|
|||
return error;
|
||||
}
|
||||
|
||||
Error
|
||||
ProcessPOSIX::DoAttachToProcessWithID (lldb::pid_t pid, const ProcessAttachInfo &attach_info)
|
||||
{
|
||||
return DoAttachToProcessWithID(pid);
|
||||
}
|
||||
|
||||
Error
|
||||
ProcessPOSIX::WillLaunch(Module* module)
|
||||
{
|
||||
|
|
|
@ -48,6 +48,9 @@ public:
|
|||
virtual lldb_private::Error
|
||||
DoAttachToProcessWithID(lldb::pid_t pid);
|
||||
|
||||
virtual lldb_private::Error
|
||||
DoAttachToProcessWithID (lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info);
|
||||
|
||||
virtual lldb_private::Error
|
||||
DoLaunch (lldb_private::Module *exe_module,
|
||||
const lldb_private::ProcessLaunchInfo &launch_info);
|
||||
|
|
Loading…
Reference in New Issue