Add an explicit check for a darwin kernel KDP_VERSIONSTRING when starting a kdp communication se

Programming / Debugging / LLDB - Jason Molenda [apple.com] - 9 May 2013 18:52 UTC

Add an explicit check for a darwin kernel KDP_VERSIONSTRING when starting a kdp communication session, instead of assuming darwin kernel for any "non-EFI" kdp session.

###

diff --git a/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp b/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
index bbde8ed..8340990 100644
--- a/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
+++ b/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
@@ -544,6 +544,17 @@ CommunicationKDP::RemoteIsEFI ()
return false;
}

+bool
+CommunicationKDP::RemoteIsDarwinKernel ()
+{
+ if (GetKernelVersion() == NULL)
+ return false;
+ if (m_kernel_version.find("Darwin Kernel") != std::string::npos)
+ return true;
+ else
+ return false;
+}
+
lldb::addr_t
CommunicationKDP::GetLoadAddress ()
{
diff --git a/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h b/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
index 6b61f44..f53b190 100644
--- a/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
+++ b/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
@@ -233,6 +233,9 @@ public:
bool
RemoteIsEFI ();

+ bool
+ RemoteIsDarwinKernel ();
+
lldb::addr_t
GetLoadAddress ();

diff --git a/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp b/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
index c78aa42..1800736 100644
--- a/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
+++ b/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
@@ -242,13 +242,13 @@ ProcessKDP::DoConnectRemote (Stream *strm, const char *remote_url)
{
m_dyld_plugin_name = DynamicLoaderStatic::GetPluginNameStatic();
}
- else
+ else if (m_comm.RemoteIsDarwinKernel ())
{
+ m_dyld_plugin_name = DynamicLoaderDarwinKernel::GetPluginNameStatic();
if (kernel_load_addr != LLDB_INVALID_ADDRESS)
{
m_kernel_load_addr = kernel_load_addr;
}
- m_dyld_plugin_name = DynamicLoaderDarwinKernel::GetPluginNameStatic();
}

// Set the thread ID

6c32437 Add an explicit check for a darwin kernel KDP_VERSIONSTRING when starting a kdp communication session, instead of assuming darwin kernel for any "non-EFI" kdp session.
.../Process/MacOSX-Kernel/CommunicationKDP.cpp | 11 +++++++++++
.../Process/MacOSX-Kernel/CommunicationKDP.h | 3 +++
.../Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp | 4 ++--
3 files changed, 16 insertions(+), 2 deletions(-)

Upstream: github.com


  • Share