[Lldb-commits] [lldb] r150272 - in /lldb/trunk: include/lldb/Symbol/ObjectFile.h source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp
Sean Callanan
scallanan at apple.com
Fri Feb 10 12:22:35 PST 2012
Author: spyffe
Date: Fri Feb 10 14:22:35 2012
New Revision: 150272
URL: http://llvm.org/viewvc/llvm-project?rev=150272&view=rev
Log:
Improved detection of object file types, moving
detection of kernels into the object file and
adding a new category for raw binary images.
Fixed all clients who previously searched for
sections manually, making them use the object
file's facilities instead.
Modified:
lldb/trunk/include/lldb/Symbol/ObjectFile.h
lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
lldb/trunk/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp
Modified: lldb/trunk/include/lldb/Symbol/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ObjectFile.h?rev=150272&r1=150271&r2=150272&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/ObjectFile.h (original)
+++ lldb/trunk/include/lldb/Symbol/ObjectFile.h Fri Feb 10 14:22:35 2012
@@ -75,7 +75,8 @@
eStrataInvalid = 0,
eStrataUnknown,
eStrataUser,
- eStrataKernel
+ eStrataKernel,
+ eStrataRawImage
} Strata;
//------------------------------------------------------------------
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=150272&r1=150271&r2=150272&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp (original)
+++ lldb/trunk/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp Fri Feb 10 14:22:35 2012
@@ -58,15 +58,7 @@
ObjectFile *object_file = exe_module->GetObjectFile();
if (object_file)
{
- SectionList *section_list = object_file->GetSectionList();
- if (section_list)
- {
- static ConstString g_kld_section_name ("__KLD");
- if (section_list->FindSectionByName (g_kld_section_name))
- {
- create = true;
- }
- }
+ create = (object_file->GetStrata() == ObjectFile::eStrataKernel);
}
}
Modified: lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp?rev=150272&r1=150271&r2=150272&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp (original)
+++ lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp Fri Feb 10 14:22:35 2012
@@ -98,15 +98,7 @@
ObjectFile *object_file = exe_module->GetObjectFile();
if (object_file)
{
- SectionList *section_list = object_file->GetSectionList();
- if (section_list)
- {
- static ConstString g_kld_section_name ("__KLD");
- if (section_list->FindSectionByName (g_kld_section_name))
- {
- create = false;
- }
- }
+ create = (object_file->GetStrata() == ObjectFile::eStrataUser);
}
}
Modified: lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp?rev=150272&r1=150271&r2=150272&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp (original)
+++ lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp Fri Feb 10 14:22:35 2012
@@ -33,6 +33,19 @@
create = true;
}
+ if (!create)
+ {
+ Module *exe_module = process->GetTarget().GetExecutableModulePointer();
+ if (exe_module)
+ {
+ ObjectFile *object_file = exe_module->GetObjectFile();
+ if (object_file)
+ {
+ create = (object_file->GetStrata() == ObjectFile::eStrataRawImage);
+ }
+ }
+ }
+
if (create)
return new DynamicLoaderStatic (process);
return NULL;
Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=150272&r1=150271&r2=150272&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (original)
+++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Fri Feb 10 14:22:35 2012
@@ -2180,12 +2180,24 @@
case HeaderFileTypeExecutable: // 0x2u MH_EXECUTE
// Check for the MH_DYLDLINK bit in the flags
if (m_header.flags & HeaderFlagBitIsDynamicLinkObject)
+ {
return eStrataUser;
- return eStrataKernel;
+ }
+ else
+ {
+ SectionList *section_list = GetSectionList();
+ if (section_list)
+ {
+ static ConstString g_kld_section_name ("__KLD");
+ if (section_list->FindSectionByName(g_kld_section_name))
+ return eStrataKernel;
+ }
+ }
+ return eStrataRawImage;
case HeaderFileTypeFixedVMShlib: return eStrataUser; // 0x3u MH_FVMLIB
case HeaderFileTypeCore: return eStrataUnknown; // 0x4u MH_CORE
- case HeaderFileTypePreloadedExecutable: return eStrataUser; // 0x5u MH_PRELOAD
+ case HeaderFileTypePreloadedExecutable: return eStrataRawImage; // 0x5u MH_PRELOAD
case HeaderFileTypeDynamicShlib: return eStrataUser; // 0x6u MH_DYLIB
case HeaderFileTypeDynamicLinkEditor: return eStrataUser; // 0x7u MH_DYLINKER
case HeaderFileTypeBundle: return eStrataUser; // 0x8u MH_BUNDLE
Modified: lldb/trunk/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp?rev=150272&r1=150271&r2=150272&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp (original)
+++ lldb/trunk/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp Fri Feb 10 14:22:35 2012
@@ -68,14 +68,9 @@
ObjectFile *object_file = exe_module->GetObjectFile();
if (object_file)
{
- SectionList *section_list = object_file->GetSectionList();
- if (section_list)
+ if (object_file->GetStrata() != ObjectFile::eStrataKernel)
{
- static ConstString g_kld_section_name ("__KLD");
- if (section_list->FindSectionByName (g_kld_section_name))
- {
- create = true;
- }
+ return NULL;
}
}
}
More information about the lldb-commits
mailing list