[Lldb-commits] [lldb] r231885 - If the user specifies a kernel binary that isn't correct for the current
Jason Molenda
jmolenda at apple.com
Tue Mar 10 16:34:53 PDT 2015
Author: jmolenda
Date: Tue Mar 10 18:34:52 2015
New Revision: 231885
URL: http://llvm.org/viewvc/llvm-project?rev=231885&view=rev
Log:
If the user specifies a kernel binary that isn't correct for the current
kernel debug session, instead of issuing a warning (which on one ever
sees), drop the user-specified kernel binary Module from the target and
try to discover the correct one dynamically.
<rdar://problem/19450329>
Modified:
lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
Modified: lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp?rev=231885&r1=231884&r2=231885&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp (original)
+++ lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp Tue Mar 10 18:34:52 2015
@@ -724,19 +724,20 @@ DynamicLoaderDarwinKernel::KextImageInfo
}
if (m_uuid.IsValid())
{
- Module* exe_module = process->GetTarget().GetExecutableModulePointer();
- if (exe_module && exe_module->GetUUID().IsValid())
+ ModuleSP exe_module_sp = process->GetTarget().GetExecutableModule();
+ if (exe_module_sp.get() && exe_module_sp->GetUUID().IsValid())
{
- if (m_uuid != exe_module->GetUUID())
+ if (m_uuid != exe_module_sp->GetUUID())
{
- Stream *s = process->GetTarget().GetDebugger().GetOutputFile().get();
- if (s)
- {
- s->Printf ("warning: Host-side kernel file has Mach-O UUID of %s but remote kernel has a UUID of %s -- a mismatched kernel file will result in a poor debugger experience.\n",
- exe_module->GetUUID().GetAsString().c_str(),
- m_uuid.GetAsString().c_str());
- s->Flush ();
- }
+ // The user specified a kernel binary that has a different UUID than
+ // the kernel actually running in memory. This never ends well;
+ // clear the user specified kernel binary from the Target.
+
+ m_module_sp.reset();
+
+ ModuleList user_specified_kernel_list;
+ user_specified_kernel_list.Append (exe_module_sp);
+ process->GetTarget().GetImages().Remove (user_specified_kernel_list);
}
}
}
More information about the lldb-commits
mailing list