Manually call ModulesDidLoad when the executable is loaded.
This is a temporary workaround to get deferred breakpoint resolution working until Bug 21720 is addressed. Even with this workaround, it will only resolve deferred breakpoints in the executable module, and not in a shared library. llvm-svn: 223273
This commit is contained in:
parent
c6a6653ebb
commit
b3ff719b04
|
@ -418,6 +418,11 @@ ProcessWindows::CanDebug(Target &target, bool plugin_specified_by_name)
|
|||
void
|
||||
ProcessWindows::OnExitProcess(uint32_t exit_code)
|
||||
{
|
||||
ModuleSP executable_module = GetTarget().GetExecutableModule();
|
||||
ModuleList unloaded_modules;
|
||||
unloaded_modules.Append(executable_module);
|
||||
GetTarget().ModulesDidUnload(unloaded_modules, true);
|
||||
|
||||
SetProcessExitStatus(nullptr, GetID(), true, 0, exit_code);
|
||||
SetPrivateState(eStateExited);
|
||||
}
|
||||
|
@ -431,6 +436,12 @@ ProcessWindows::OnDebuggerConnected(lldb::addr_t image_base)
|
|||
bool load_addr_changed;
|
||||
module->SetLoadAddress(GetTarget(), image_base, false, load_addr_changed);
|
||||
|
||||
// Notify the target that the executable module has loaded. This will cause any pending
|
||||
// breakpoints to be resolved to explicit brekapoint sites.
|
||||
ModuleList loaded_modules;
|
||||
loaded_modules.Append(module);
|
||||
GetTarget().ModulesDidLoad(loaded_modules);
|
||||
|
||||
DebuggerThreadSP debugger = m_session_data->m_debugger;
|
||||
const HostThreadWindows &wmain_thread = debugger->GetMainThread().GetNativeThread();
|
||||
m_session_data->m_new_threads[wmain_thread.GetThreadId()] = debugger->GetMainThread();
|
||||
|
|
Loading…
Reference in New Issue