JDevlieghere updated this revision to Diff 264745. JDevlieghere edited the summary of this revision. JDevlieghere added a comment.
Apparently I misremembered the old behavior. Jim refreshed my memory about what he expects the behavior to be link. I've reworked the patch to match that. The result is actually less complex than it was before. Please ignore the old patch & description. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80165/new/ https://reviews.llvm.org/D80165 Files: lldb/test/Shell/Driver/TestNoUseColor.test lldb/test/Shell/Driver/TestPositionalArgs.test lldb/tools/driver/Driver.cpp Index: lldb/tools/driver/Driver.cpp =================================================================== --- lldb/tools/driver/Driver.cpp +++ lldb/tools/driver/Driver.cpp @@ -361,13 +361,8 @@ if (m_option_data.m_process_name.empty() && m_option_data.m_process_pid == LLDB_INVALID_PROCESS_ID) { - // If the option data args array is empty that means the file was not - // specified with -f and we need to get it from the input args. - if (m_option_data.m_args.empty()) { - if (auto *arg = args.getLastArgNoClaim(OPT_INPUT)) { - m_option_data.m_args.push_back(arg->getAsString((args))); - } - } + for (auto *arg : args.filtered(OPT_INPUT)) + m_option_data.m_args.push_back(arg->getAsString((args))); // Any argument following -- is an argument for the inferior. if (auto *arg = args.getLastArgNoClaim(OPT_REM)) { @@ -857,8 +852,9 @@ } for (auto *arg : input_args.filtered(OPT_UNKNOWN)) { - WithColor::warning() << "ignoring unknown option: " << arg->getSpelling() - << '\n'; + if (!arg->isClaimed()) + WithColor::warning() << "ignoring unknown option: " << arg->getSpelling() + << '\n'; } if (auto exit_code = InitializeReproducer(input_args)) { Index: lldb/test/Shell/Driver/TestPositionalArgs.test =================================================================== --- /dev/null +++ lldb/test/Shell/Driver/TestPositionalArgs.test @@ -0,0 +1,29 @@ +RUN: echo "int main() { return 0; }" | %clang_host -x c - -o %t.foo + +RUN: %lldb -x -b %t.foo bar baz quux | FileCheck %s +RUN: %lldb -x -b -- %t.foo bar baz quux | FileCheck %s +RUN: %lldb -x -b %t.foo -- bar baz quux | FileCheck %s +RUN: %lldb -x -b %t.foo bar -- baz quux | FileCheck %s +RUN: %lldb -x -b %t.foo bar baz -- quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo bar baz quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo -- bar baz quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo bar -- baz quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo bar baz -- quux | FileCheck %s + +CHECK: Current executable set to {{.*}}foo +CHECK: target.run-args "bar" "baz" "quux" + +RUN: %lldb -x -b %t.foo -- bar -baz --quux | FileCheck %s --check-prefix DASH +RUN: %lldb -x -b -- %t.foo bar -baz --quux | FileCheck %s --check-prefix DASH +RUN: %lldb -x -b -f %t.foo -- bar -baz --quux | FileCheck %s --check-prefix DASH + +DASH: Current executable set to {{.*}}foo +DASH: target.run-args "bar" "-baz" "--quux" + +RUN: %lldb -x -b %t.foo bar -baz --quux 2>&1 | FileCheck %s --check-prefix UNKNOWN +RUN: %lldb -x -b -f %t.foo bar -baz --quux 2>&1 | FileCheck %s --check-prefix UNKNOWN + +UNKNOWN: warning: ignoring unknown option: -baz +UNKNOWN: warning: ignoring unknown option: --quux +UNKNOWN: Current executable set to {{.*}}foo +UNKNOWN: target.run-args "bar" Index: lldb/test/Shell/Driver/TestNoUseColor.test =================================================================== --- lldb/test/Shell/Driver/TestNoUseColor.test +++ lldb/test/Shell/Driver/TestNoUseColor.test @@ -1,4 +1,4 @@ -# RUN: %lldb --no-use-color -s %s | FileCheck %s +# RUN: %lldb --no-use-colors -s %s | FileCheck %s settings show use-color # CHECK: use-color (boolean) = false q
Index: lldb/tools/driver/Driver.cpp =================================================================== --- lldb/tools/driver/Driver.cpp +++ lldb/tools/driver/Driver.cpp @@ -361,13 +361,8 @@ if (m_option_data.m_process_name.empty() && m_option_data.m_process_pid == LLDB_INVALID_PROCESS_ID) { - // If the option data args array is empty that means the file was not - // specified with -f and we need to get it from the input args. - if (m_option_data.m_args.empty()) { - if (auto *arg = args.getLastArgNoClaim(OPT_INPUT)) { - m_option_data.m_args.push_back(arg->getAsString((args))); - } - } + for (auto *arg : args.filtered(OPT_INPUT)) + m_option_data.m_args.push_back(arg->getAsString((args))); // Any argument following -- is an argument for the inferior. if (auto *arg = args.getLastArgNoClaim(OPT_REM)) { @@ -857,8 +852,9 @@ } for (auto *arg : input_args.filtered(OPT_UNKNOWN)) { - WithColor::warning() << "ignoring unknown option: " << arg->getSpelling() - << '\n'; + if (!arg->isClaimed()) + WithColor::warning() << "ignoring unknown option: " << arg->getSpelling() + << '\n'; } if (auto exit_code = InitializeReproducer(input_args)) { Index: lldb/test/Shell/Driver/TestPositionalArgs.test =================================================================== --- /dev/null +++ lldb/test/Shell/Driver/TestPositionalArgs.test @@ -0,0 +1,29 @@ +RUN: echo "int main() { return 0; }" | %clang_host -x c - -o %t.foo + +RUN: %lldb -x -b %t.foo bar baz quux | FileCheck %s +RUN: %lldb -x -b -- %t.foo bar baz quux | FileCheck %s +RUN: %lldb -x -b %t.foo -- bar baz quux | FileCheck %s +RUN: %lldb -x -b %t.foo bar -- baz quux | FileCheck %s +RUN: %lldb -x -b %t.foo bar baz -- quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo bar baz quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo -- bar baz quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo bar -- baz quux | FileCheck %s +RUN: %lldb -x -b -f %t.foo bar baz -- quux | FileCheck %s + +CHECK: Current executable set to {{.*}}foo +CHECK: target.run-args "bar" "baz" "quux" + +RUN: %lldb -x -b %t.foo -- bar -baz --quux | FileCheck %s --check-prefix DASH +RUN: %lldb -x -b -- %t.foo bar -baz --quux | FileCheck %s --check-prefix DASH +RUN: %lldb -x -b -f %t.foo -- bar -baz --quux | FileCheck %s --check-prefix DASH + +DASH: Current executable set to {{.*}}foo +DASH: target.run-args "bar" "-baz" "--quux" + +RUN: %lldb -x -b %t.foo bar -baz --quux 2>&1 | FileCheck %s --check-prefix UNKNOWN +RUN: %lldb -x -b -f %t.foo bar -baz --quux 2>&1 | FileCheck %s --check-prefix UNKNOWN + +UNKNOWN: warning: ignoring unknown option: -baz +UNKNOWN: warning: ignoring unknown option: --quux +UNKNOWN: Current executable set to {{.*}}foo +UNKNOWN: target.run-args "bar" Index: lldb/test/Shell/Driver/TestNoUseColor.test =================================================================== --- lldb/test/Shell/Driver/TestNoUseColor.test +++ lldb/test/Shell/Driver/TestNoUseColor.test @@ -1,4 +1,4 @@ -# RUN: %lldb --no-use-color -s %s | FileCheck %s +# RUN: %lldb --no-use-colors -s %s | FileCheck %s settings show use-color # CHECK: use-color (boolean) = false q
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits