This revision was automatically updated to reflect the committed changes. Closed by commit rGca8faf8f4659: [lldb] Respect empty arguments in target.run-args (authored by bulbazord).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D145450/new/ https://reviews.llvm.org/D145450 Files: lldb/source/Host/common/ProcessLaunchInfo.cpp lldb/source/Interpreter/OptionValueArgs.cpp lldb/test/Shell/Driver/Inputs/dumpargs.c lldb/test/Shell/Driver/TestEmptyArgument.test Index: lldb/test/Shell/Driver/TestEmptyArgument.test =================================================================== --- /dev/null +++ lldb/test/Shell/Driver/TestEmptyArgument.test @@ -0,0 +1,7 @@ +# RUN: %clang_host %S/Inputs/dumpargs.c -o %t.out +# RUN: %lldb -b -o "r" %t.out -- "one" "two" "" "three" | FileCheck %s + +# CHECK: argv[1] = "one" +# CHECK: argv[2] = "two" +# CHECK: argv[3] = "" +# CHECK: argv[4] = "three" Index: lldb/test/Shell/Driver/Inputs/dumpargs.c =================================================================== --- /dev/null +++ lldb/test/Shell/Driver/Inputs/dumpargs.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main(int argc, char *argv[]) { + for (int i = 0; i < argc; i++) { + printf("argv[%d] = \"%s\"\n", i, argv[i]); + } + return 0; +} Index: lldb/source/Interpreter/OptionValueArgs.cpp =================================================================== --- lldb/source/Interpreter/OptionValueArgs.cpp +++ lldb/source/Interpreter/OptionValueArgs.cpp @@ -17,8 +17,7 @@ args.Clear(); for (const auto &value : m_values) { llvm::StringRef string_value = value->GetStringValue(); - if (!string_value.empty()) - args.AppendArgument(string_value); + args.AppendArgument(string_value); } return args.GetArgumentCount(); Index: lldb/source/Host/common/ProcessLaunchInfo.cpp =================================================================== --- lldb/source/Host/common/ProcessLaunchInfo.cpp +++ lldb/source/Host/common/ProcessLaunchInfo.cpp @@ -321,6 +321,8 @@ } else { for (size_t i = 0; argv[i] != nullptr; ++i) { std::string safe_arg = Args::GetShellSafeArgument(m_shell, argv[i]); + if (safe_arg.empty()) + safe_arg = "\"\""; // Add a space to separate this arg from the previous one. shell_command.PutCString(" "); shell_command.PutCString(safe_arg);
Index: lldb/test/Shell/Driver/TestEmptyArgument.test =================================================================== --- /dev/null +++ lldb/test/Shell/Driver/TestEmptyArgument.test @@ -0,0 +1,7 @@ +# RUN: %clang_host %S/Inputs/dumpargs.c -o %t.out +# RUN: %lldb -b -o "r" %t.out -- "one" "two" "" "three" | FileCheck %s + +# CHECK: argv[1] = "one" +# CHECK: argv[2] = "two" +# CHECK: argv[3] = "" +# CHECK: argv[4] = "three" Index: lldb/test/Shell/Driver/Inputs/dumpargs.c =================================================================== --- /dev/null +++ lldb/test/Shell/Driver/Inputs/dumpargs.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main(int argc, char *argv[]) { + for (int i = 0; i < argc; i++) { + printf("argv[%d] = \"%s\"\n", i, argv[i]); + } + return 0; +} Index: lldb/source/Interpreter/OptionValueArgs.cpp =================================================================== --- lldb/source/Interpreter/OptionValueArgs.cpp +++ lldb/source/Interpreter/OptionValueArgs.cpp @@ -17,8 +17,7 @@ args.Clear(); for (const auto &value : m_values) { llvm::StringRef string_value = value->GetStringValue(); - if (!string_value.empty()) - args.AppendArgument(string_value); + args.AppendArgument(string_value); } return args.GetArgumentCount(); Index: lldb/source/Host/common/ProcessLaunchInfo.cpp =================================================================== --- lldb/source/Host/common/ProcessLaunchInfo.cpp +++ lldb/source/Host/common/ProcessLaunchInfo.cpp @@ -321,6 +321,8 @@ } else { for (size_t i = 0; argv[i] != nullptr; ++i) { std::string safe_arg = Args::GetShellSafeArgument(m_shell, argv[i]); + if (safe_arg.empty()) + safe_arg = "\"\""; // Add a space to separate this arg from the previous one. shell_command.PutCString(" "); shell_command.PutCString(safe_arg);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits