forked from OSchip/llvm-project
Always print the kernel UUID and load address if we are working with
a kernel binary - even if we can't find the symbol-rich binary or dSYM on the debugger-system. Print a warning if the symbol-rich binary cannot be located. This more closely emulates the gdb behavior when a kernel debug session failed to locate a kernel binary. <rdar://problem/13016095> llvm-svn: 175491
This commit is contained in:
parent
4ce8a909ba
commit
e575e7bce0
|
@ -734,6 +734,17 @@ DynamicLoaderDarwinKernel::KextImageInfo::LoadImageUsingMemoryModule (Process *p
|
||||||
|
|
||||||
bool uuid_is_valid = m_uuid.IsValid();
|
bool uuid_is_valid = m_uuid.IsValid();
|
||||||
|
|
||||||
|
if (IsKernel() && uuid_is_valid && m_memory_module_sp.get())
|
||||||
|
{
|
||||||
|
Stream *s = &target.GetDebugger().GetOutputStream();
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
char uuidbuf[64];
|
||||||
|
s->Printf ("Kernel UUID: %s\n", m_memory_module_sp->GetUUID().GetAsCString(uuidbuf, sizeof (uuidbuf)));
|
||||||
|
s->Printf ("Load Address: 0x%" PRIx64 "\n", m_load_address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_module_sp)
|
if (!m_module_sp)
|
||||||
{
|
{
|
||||||
// See if the kext has already been loaded into the target, probably by the user doing target modules add.
|
// See if the kext has already been loaded into the target, probably by the user doing target modules add.
|
||||||
|
@ -777,6 +788,15 @@ DynamicLoaderDarwinKernel::KextImageInfo::LoadImageUsingMemoryModule (Process *p
|
||||||
{
|
{
|
||||||
m_module_sp = target.GetSharedModule (module_spec);
|
m_module_sp = target.GetSharedModule (module_spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (force_symbols_search && !m_module_sp)
|
||||||
|
{
|
||||||
|
Stream *s = &target.GetDebugger().GetOutputStream();
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
s->Printf ("WARNING: Unable to locate symbol rich version of kernel binary.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we managed to find a module, append it to the target's list of images.
|
// If we managed to find a module, append it to the target's list of images.
|
||||||
|
@ -876,9 +896,6 @@ DynamicLoaderDarwinKernel::KextImageInfo::LoadImageUsingMemoryModule (Process *p
|
||||||
Stream *s = &target.GetDebugger().GetOutputStream();
|
Stream *s = &target.GetDebugger().GetOutputStream();
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
char uuidbuf[64];
|
|
||||||
s->Printf ("Kernel UUID: %s\n", m_module_sp->GetUUID().GetAsCString(uuidbuf, sizeof (uuidbuf)));
|
|
||||||
s->Printf ("Load Address: 0x%" PRIx64 "\n", m_load_address);
|
|
||||||
if (m_module_sp->GetFileSpec().GetDirectory().IsEmpty())
|
if (m_module_sp->GetFileSpec().GetDirectory().IsEmpty())
|
||||||
{
|
{
|
||||||
s->Printf ("Loaded kernel file %s\n", m_module_sp->GetFileSpec().GetFilename().AsCString());
|
s->Printf ("Loaded kernel file %s\n", m_module_sp->GetFileSpec().GetFilename().AsCString());
|
||||||
|
|
Loading…
Reference in New Issue