[Lldb-commits] [lldb] r328020 - [lldb-dotest] Wrap arguments in single quotes

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 21 03:21:37 PDT 2018


You are absolutely right.

https://reviews.llvm.org/D44728

On Wed, Mar 21, 2018 at 10:01 AM, Pavel Labath <labath at google.com> wrote:

> Instead of trying to guess how the shell will interpret your command line,
> it would be better to just use a primitive which bypasses the shell
> altogether. For example you can use subprocess.call(), and just forward it
> the list of arguments verbatim.
>
> You'd need to do some special processing on the args you got from cmake,
> as these are already a string, but this could be handled by forwarding them
> as a list (separated by semicolon) and then just breaking it up around
> semicolons. This will still not be perfect forwarding, but it will already
> be a big improvement over how it's handled right now.
>
>
> On Tue, 20 Mar 2018 at 19:20, Jonas Devlieghere via lldb-commits <
> lldb-commits at lists.llvm.org> wrote:
>
>> Author: jdevlieghere
>> Date: Tue Mar 20 12:18:11 2018
>> New Revision: 328020
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=328020&view=rev
>> Log:
>> [lldb-dotest] Wrap arguments in single quotes
>>
>> If we don't wrap arguments to the wrapper in single quotes, combined
>> arguments, for example for -E, don't reach dotest.py as a unit but as
>> separate arguments, causing the latter to fail.
>>
>> Modified:
>>     lldb/trunk/test/lldb-dotest.in
>>
>> Modified: lldb/trunk/test/lldb-dotest.in
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/lldb-
>> dotest.in?rev=328020&r1=328019&r2=328020&view=diff
>> ============================================================
>> ==================
>> --- lldb/trunk/test/lldb-dotest.in (original)
>> +++ lldb/trunk/test/lldb-dotest.in Tue Mar 20 12:18:11 2018
>> @@ -6,9 +6,13 @@ dotest_path = '@LLDB_SOURCE_DIR@/test/do
>>  dotest_args = '@LLDB_DOTEST_ARGS_STR@'
>>
>>  if __name__ == '__main__':
>> +    # Wrap arguments in single quotes. This is necessary because we want
>> to
>> +    # forward the arguments and otherwise we might split up arguments
>> that were
>> +    # originally wrapped in single quotes.
>> +    wrapper_args = list("'" + i + "'" for i in sys.argv[1:])
>>      # FIXME: It would be nice if we can mimic the approach taken by
>> llvm-lit
>>      # and pass a python configuration straight to dotest, rather than
>> going
>>      # through the operating system.
>> -    command = '{} -q {} {}'.format(dotest_path, dotest_args, ' '.join(
>> -        sys.argv[1:]))
>> +    command = '{} -q {} {}'.format(dotest_path, dotest_args,
>> +                                   ' '.join(wrapper_args))
>>      os.system(command)
>>
>>
>> _______________________________________________
>> lldb-commits mailing list
>> lldb-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180321/2793d39d/attachment.html>


More information about the lldb-commits mailing list