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.

llvm-svn: 150272
diff --git a/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp b/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
index 8225d3d..b82d686 100644
--- a/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
+++ b/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
@@ -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);
             }
         }
         
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
index d6094b4..f929ce1 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
@@ -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);
             }
         }
         
diff --git a/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp b/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
index 4d5ae55..a1d6442 100644
--- a/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
+++ b/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
@@ -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;