Fixed launching in shell on haswell enabled Macs to work more than once when you do:

% lldb -x /bin/ls
(lldb) r
(lldb) r

Prior to this fix the first time it would run /usr/bin/arch with "-arch x86_64" the first time and succeed, and fail the second when the target had updated its architecture to x86_64h. We can't specify x86_64h to /usr/bin/arch, it doesn't handle it.

Also fixed it so /usr/bin/arch is only used for Apple triples.

<rdar://problem/17951312>

llvm-svn: 215475
This commit is contained in:
Greg Clayton 2014-08-12 21:38:59 +00:00
parent d7349439d5
commit bc76668142
1 changed files with 3 additions and 1 deletions

View File

@ -438,7 +438,9 @@ ProcessLaunchInfo::ConvertArgumentsForLaunchingInShell (Error &error,
shell_command.PutCString ("exec"); shell_command.PutCString ("exec");
// Only Apple supports /usr/bin/arch being able to specify the architecture // Only Apple supports /usr/bin/arch being able to specify the architecture
if (GetArchitecture().IsValid()) if (GetArchitecture().IsValid() && // Valid architecture
GetArchitecture().GetTriple().getVendor() == llvm::Triple::Apple && // Apple only
GetArchitecture().GetCore() != ArchSpec::eCore_x86_64_x86_64h) // Don't do this for x86_64h
{ {
shell_command.Printf(" /usr/bin/arch -arch %s", GetArchitecture().GetArchitectureName()); shell_command.Printf(" /usr/bin/arch -arch %s", GetArchitecture().GetArchitectureName());
// Set the resume count to 2: // Set the resume count to 2: