Author: Raphael Isemann Date: 2022-11-18T16:48:56+01:00 New Revision: a8bec6117998cd4a9ff6798381cd0df9c9edb982
URL: https://github.com/llvm/llvm-project/commit/a8bec6117998cd4a9ff6798381cd0df9c9edb982 DIFF: https://github.com/llvm/llvm-project/commit/a8bec6117998cd4a9ff6798381cd0df9c9edb982.diff LOG: [lldb] Fix that empty target.run-args are not actually used when launching process `GetPropertyAtIndexAsArgs` returns true on success and false on failure. Right now it returns the converted `size_t` returned from `GetArgs` which describes the number of arguments in the argument list. So for empty argument lists (`(size_t)0` -> `(bool)false`) this function always fails. The only observable effect of this seems to be that empty arguments are never propagated to the internal LaunchInfo for a process. This causes that once any argument has been added to `target.run-args`, clearing `target.run-args` doesn't have any effect. Fixes issue #55568 Reviewed By: JDevlieghere, jingham Differential Revision: https://reviews.llvm.org/D126057 Added: Modified: lldb/source/Interpreter/OptionValueProperties.cpp lldb/test/API/python_api/target/TestTargetAPI.py Removed: ################################################################################ diff --git a/lldb/source/Interpreter/OptionValueProperties.cpp b/lldb/source/Interpreter/OptionValueProperties.cpp index c2c13ba97baa..62590bb18869 100644 --- a/lldb/source/Interpreter/OptionValueProperties.cpp +++ b/lldb/source/Interpreter/OptionValueProperties.cpp @@ -248,16 +248,22 @@ bool OptionValueProperties::GetPropertyAtIndexAsArgs( return false; const OptionValueArgs *arguments = value->GetAsArgs(); - if (arguments) - return arguments->GetArgs(args); + if (arguments) { + arguments->GetArgs(args); + return true; + } const OptionValueArray *array = value->GetAsArray(); - if (array) - return array->GetArgs(args); + if (array) { + array->GetArgs(args); + return true; + } const OptionValueDictionary *dict = value->GetAsDictionary(); - if (dict) - return dict->GetArgs(args); + if (dict) { + dict->GetArgs(args); + return true; + } return false; } diff --git a/lldb/test/API/python_api/target/TestTargetAPI.py b/lldb/test/API/python_api/target/TestTargetAPI.py index 0b2514416bed..f1a379bc2f30 100644 --- a/lldb/test/API/python_api/target/TestTargetAPI.py +++ b/lldb/test/API/python_api/target/TestTargetAPI.py @@ -191,6 +191,15 @@ def test_launch_simple(self): self.assertIn('arg: foo', output) self.assertIn('env: bar=baz', output) + # Clear all the run args set above. + self.runCmd("setting clear target.run-args") + process = target.LaunchSimple(None, None, + self.get_process_working_directory()) + process.Continue() + self.assertEqual(process.GetState(), lldb.eStateExited) + output = process.GetSTDOUT(9999) + self.assertNotIn('arg: foo', output) + self.runCmd("settings set target.disable-stdio true") process = target.LaunchSimple( None, None, self.get_process_working_directory()) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits