The problem was that the static DynamicLoaderDarwinKernel::Initialize() was recently changed to come before DynamicLoaderMacOSXDYLD::Initialize() which caused the DynamicLoaderDarwinKernel::CreateInstance(...) to be called before DynamicLoaderMacOSXDYLD::CreateInstance(...) and DynamicLoaderDarwinKernel would claim it could be the dynamic loader for a user space MacOSX process. The fix is to make DynamicLoaderDarwinKernel::CreateInstance() a bit more thourough when vetting the process so that it doesn't claim MacOSX user space processes.
<rdar://problem/
25425373>
llvm-svn: 264794
// At this point if there is an ExecutableModule, it is a kernel and the Target is some variant of an Apple system.
// If the Process hasn't provided the kernel load address, we need to look around in memory to find it.
- addr_t kernel_load_address = SearchForDarwinKernel (process);
- if (kernel_load_address != LLDB_INVALID_ADDRESS)
+ const addr_t kernel_load_address = SearchForDarwinKernel (process);
+ if (CheckForKernelImageAtAddress (kernel_load_address, process).IsValid())
{
process->SetCanRunCode(false);
return new DynamicLoaderDarwinKernel (process, kernel_load_address);