<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Quoted strings in target.run-args aren’t handled correctly.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>(lldb) settings set target.run-args "foo bar"<o:p></o:p></p><p class=MsoNormal>(lldb) settings show target.run-args<o:p></o:p></p><p class=MsoNormal>target.run-args (array of strings) =<o:p></o:p></p><p class=MsoNormal>  [0]: "foo bar"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This looks correct, but the Args in the ProcessLaunchInfo passed to the Platform doesn’t have m_args_quote_char set, so if the Args is later pulled out with GetQuotedCommandString() it won’t get “foo bar”, but will instead get foo and bar unquoted. This is masked when talking to debugserver or lldb_server because run-args are sent to the server using an RSP packet, but on systems like Windows or the Hexagon Simulator, where run-args are on the command line, you get 2 args, foo and bar, instead of 1 arg “foo bar”.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The first problem is in OptionValueArray::SetArgs(), in the <span style='background:white;mso-highlight:white'>eVarSetOperationAppend</span> case. It calls Args::GetArgumentAtIndex(), which doesn’t return a quoted argument. I added a function GetQuotedArgumentAtIndex() and called that, which revealed the second problem. The string is passed into OptionValue::CreateValueFromCStringForTypeMask(), which calls OptionValueString::SetValueFromString(). In that function it explicitly strips quotes. Changing it to not strip quotes leads to the third problem – when TargetProperties::RunArgsValueChangedCallback() pulls the data from the OptionValueArray to make a new Args, it calls OptionValueArray::GetArgs(), which doesn’t handle quoting like the Args ctor does.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think changing the OptionValue classes to handle quoting could lead to problems with other use cases. So that leaves me with the option of going through the Args before launch and adding quotes around anything with spaces, which seems hackish. Any thoughts on how to solve this issue?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>--<o:p></o:p></p><p class=MsoNormal>Qualcomm Innovation Center, Inc.<o:p></o:p></p><p class=MsoNormal>The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>