You are absolutely right. https://reviews.llvm.org/D44728
On Wed, Mar 21, 2018 at 10:01 AM, Pavel Labath <lab...@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@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@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >> >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits