Resolve the executable _before_ we try to get the module specifications.
authorGreg Clayton <gclayton@apple.com>
Tue, 29 Jul 2014 21:27:21 +0000 (21:27 +0000)
committerGreg Clayton <gclayton@apple.com>
Tue, 29 Jul 2014 21:27:21 +0000 (21:27 +0000)
Also fixed the host 32 and 64 bit arch to return "x86_64-apple-macosx" again instead of "x86_64-apple-" (unspecified OS) after recent changes.

<rdar://problem/17845078>

llvm-svn: 214223

lldb/source/Host/common/Host.cpp
lldb/source/Target/TargetList.cpp

index 32a1a08..df1c787 100644 (file)
@@ -379,6 +379,17 @@ Host::GetArchitecture (SystemDefaultArchitecture arch_kind)
                     cpusubtype32 = CPU_SUBTYPE_ARM_V7S;
 #endif
                 g_host_arch_32.SetArchitecture (eArchTypeMachO, cputype & ~(CPU_ARCH_MASK), cpusubtype32);
+                
+                if (cputype == CPU_TYPE_ARM || cputype == CPU_TYPE_ARM64)
+                {
+                    g_host_arch_32.GetTriple().setOS(llvm::Triple::IOS);
+                    g_host_arch_64.GetTriple().setOS(llvm::Triple::IOS);
+                }
+                else
+                {
+                    g_host_arch_32.GetTriple().setOS(llvm::Triple::MacOSX);
+                    g_host_arch_64.GetTriple().setOS(llvm::Triple::MacOSX);
+                }
             }
             else
             {
index fd58af9..091211d 100644 (file)
@@ -92,6 +92,11 @@ TargetList::CreateTarget (Debugger &debugger,
         ModuleSpecList module_specs;
         ModuleSpec module_spec;
         module_spec.GetFileSpec().SetFile(user_exe_path, true);
+        
+        // Resolve the executable in case we are given a path to a application bundle
+        // like a .app bundle on MacOSX
+        Host::ResolveExecutableInBundle (module_spec.GetFileSpec());
+
         lldb::offset_t file_offset = 0;
         lldb::offset_t file_size = 0;
         const size_t num_specs = ObjectFile::GetModuleSpecifications (module_spec.GetFileSpec(), file_offset, file_size, module_specs);