Index: lldb/lit/Driver/TestTarget.test =================================================================== --- /dev/null +++ lldb/lit/Driver/TestTarget.test @@ -0,0 +1,7 @@ +# Make sure lldb resolves the target path. +# RUN: mkdir -p %t/foo +# RUN: cd %t/foo +# RUN: %clang %p/Inputs/hello.c -g -o a.out +# RUN: %lldb -b a.out | FileCheck %s + +# CHECK: target create "{{.*}}foo{{[/\\\\]+}}a.out" Index: lldb/tools/driver/Driver.cpp =================================================================== --- lldb/tools/driver/Driver.cpp +++ lldb/tools/driver/Driver.cpp @@ -533,14 +533,19 @@ if (!m_option_data.m_repl) { const size_t num_args = m_option_data.m_args.size(); if (num_args > 0) { + char target_path[256]; + SBFileSpec::ResolvePath(m_option_data.m_args[0].c_str(), target_path, + sizeof(target_path)); + char arch_name[64]; if (lldb::SBDebugger::GetDefaultArchitecture(arch_name, - sizeof(arch_name))) + sizeof(arch_name))) { commands_stream.Printf("target create --arch=%s %s", arch_name, - EscapeString(m_option_data.m_args[0]).c_str()); - else + EscapeString(target_path).c_str()); + } else { commands_stream.Printf("target create %s", - EscapeString(m_option_data.m_args[0]).c_str()); + EscapeString(target_path).c_str()); + } if (!m_option_data.m_core_file.empty()) { commands_stream.Printf(" --core %s",