Added to the public API to allow symbolication:
- New SBSection objects that are object file sections which can be accessed
  through the SBModule classes. You can get the number of sections, get a 
  section at index, and find a section by name.
- SBSections can contain subsections (first find "__TEXT" on darwin, then
  us the resulting SBSection to find "__text" sub section).
- Set load addresses for a SBSection in the SBTarget interface
- Set the load addresses of all SBSection in a SBModule in the SBTarget interface
- Add a new module the an existing target in the SBTarget interface
- Get a SBSection from a SBAddress object

This should get us a lot closer to being able to symbolicate using LLDB through
the public API.

llvm-svn: 140437
diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp
index 980f9d2..72aba1c 100644
--- a/lldb/source/Commands/CommandObjectProcess.cpp
+++ b/lldb/source/Commands/CommandObjectProcess.cpp
@@ -585,13 +585,13 @@
             // If there isn't a current target create one.
             TargetSP new_target_sp;
             FileSpec emptyFileSpec;
-            ArchSpec emptyArchSpec;
             Error error;
             
             error = m_interpreter.GetDebugger().GetTargetList().CreateTarget (m_interpreter.GetDebugger(), 
                                                                               emptyFileSpec,
-                                                                              emptyArchSpec, 
+                                                                              NULL, 
                                                                               false,
+                                                                              NULL, // No platform options
                                                                               new_target_sp);
             target = new_target_sp.get();
             if (target == NULL || error.Fail())
@@ -1041,12 +1041,12 @@
         {
             // If there isn't a current target create one.
             FileSpec emptyFileSpec;
-            ArchSpec emptyArchSpec;
             
             error = m_interpreter.GetDebugger().GetTargetList().CreateTarget (m_interpreter.GetDebugger(), 
                                                                               emptyFileSpec,
-                                                                              emptyArchSpec, 
+                                                                              NULL, 
                                                                               false,
+                                                                              NULL, // No platform options
                                                                               target_sp);
             if (!target_sp || error.Fail())
             {
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index eb2ef07..4ff540d 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -186,48 +186,18 @@
             const char *file_path = command.GetArgumentAtIndex(0);
             Timer scoped_timer(__PRETTY_FUNCTION__, "(lldb) target create '%s'", file_path);
             FileSpec file_spec (file_path, true);
-            
-            bool select = true;
-            PlatformSP platform_sp;
-            
-            Error error;
-            
-            if (m_platform_options.PlatformWasSpecified ())
-            {
-                platform_sp = m_platform_options.CreatePlatformWithOptions(m_interpreter, select, error);
-                if (!platform_sp)
-                {
-                    result.AppendError(error.AsCString());
-                    result.SetStatus (eReturnStatusFailed);
-                    return false;
-                }
-            }
-            ArchSpec file_arch;
-            
-            const char *arch_cstr = m_arch_option.GetArchitectureName();
-            if (arch_cstr)
-            {        
-                if (!platform_sp)
-                    platform_sp = m_interpreter.GetDebugger().GetPlatformList().GetSelectedPlatform();
-                if (!m_arch_option.GetArchitecture(platform_sp.get(), file_arch))
-                {
-                    result.AppendErrorWithFormat("invalid architecture '%s'\n", arch_cstr);
-                    result.SetStatus (eReturnStatusFailed);
-                    return false;
-                }
-            }
-            
-            if (! file_spec.Exists() && !file_spec.ResolveExecutableLocation())
-            {
-                result.AppendErrorWithFormat ("File '%s' does not exist.\n", file_path);
-                result.SetStatus (eReturnStatusFailed);
-                return false;
-            }
-            
+
             TargetSP target_sp;
             Debugger &debugger = m_interpreter.GetDebugger();
-            error = debugger.GetTargetList().CreateTarget (debugger, file_spec, file_arch, true, target_sp);
-            
+            const char *arch_cstr = m_arch_option.GetArchitectureName();
+            const bool get_dependent_files = true;
+            Error error (debugger.GetTargetList().CreateTarget (debugger,
+                                                                file_spec,
+                                                                arch_cstr,
+                                                                get_dependent_files,
+                                                                &m_platform_options,
+                                                                target_sp));
+
             if (target_sp)
             {
                 debugger.GetTargetList().SetSelectedTarget(target_sp.get());