<div dir="ltr">If this doesn't fix it I'll take a look.  My repo is in a funny state right now so it's a little difficult.<br></div><br><div class="gmail_quote">On Fri Feb 20 2015 at 2:46:26 PM Enrico Granata <<a href="mailto:egranata@apple.com">egranata@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>My best guess is a missing include, which I added in 230080. If that doesn’t fix it, I am going to need somebody who knows their way around Windows to help out</div></div><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On Feb 20, 2015, at 2:41 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:</div><br><div><div dir="ltr">You probably already saw the bot failure email, but you can take a look at this:<br><br><a href="http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc/builds/2222/steps/build/logs/stdio" target="_blank">http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc/builds/2222/steps/build/logs/stdio</a><br><div><br></div><div>It looks like probably a missing #include, let me know if it's more difficult though.</div></div><br><div class="gmail_quote">On Fri Feb 20 2015 at 2:26:38 PM Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Might it ever be possible to expand a string for purposes other than forwarding those arguments on to another executable?  For example, maybe we want shell expansion to specify the name of the executable in the first place.  Like imagine you're trying to debug "foo", and the path of foo is $FOODIR/foo.  In this case the expansion doesn't happen on the argument to the command but the command itself.  <br><div><br></div><div>And...  I just saw your other email come through.  ShellExpandArguments() sounds fine.</div></div><br><div class="gmail_quote">On Fri Feb 20 2015 at 2:00:36 PM Enrico Granata <<a href="mailto:egranata@apple.com" target="_blank">egranata@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Fair enough - ShellExpand is not bad, but I feel like Arguments should be in there somewhere</div><div><br></div><div>Collective hivemind, something less verbose than ShellStyleExpandArguments maybe?</div></div><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On Feb 20, 2015, at 1:57 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:</div><br><div><div dir="ltr">In a followup patch, would you mind changing the terminology from GlobArguments to something more descriptive, like ShellExpand?  When I think glob I only think of wildcards, not full shell exnapsion.  So I think it would be better if it were more explicit.<br></div><br><div class="gmail_quote">On Fri Feb 20 2015 at 1:51:26 PM Enrico Granata <<a href="mailto:egranata@apple.com" target="_blank">egranata@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: enrico<br>
Date: Fri Feb 20 15:48:38 2015<br>
New Revision: 230065<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=230065&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject?rev=230065&view=rev</a><br>
Log:<br>
Start the refactoring of globbing<br>
<br>
- Add Host::GlobArguments() to perform local-globbing<br>
I implemented this on OSX and Windows in terms of argdumper (Windows implementation is essentially the same as the OSX version + a change in binary name and some string magic)<br>
Other platforms did not specifically chime in, so I left it unimplemented for them for the time being. Please feel free to fill in the blanks<br>
<br>
- Add Platform::GlobArguments() to support remote-globbing<br>
For now, no feature change here - but now we have infrastructure to help GDBRemote targets to support globbing - and patches to that effect will follow<br>
<br>
No visible feature change<br>
<br>
<br>
Modified:<br>
    lldb/trunk/include/lldb/Host/<u></u>H<u></u>ost.h<br>
    lldb/trunk/include/lldb/<u></u>Target<u></u>/Platform.h<br>
    lldb/trunk/source/Host/<u></u>freebsd<u></u>/Host.cpp<br>
    lldb/trunk/source/Host/linux/<u></u>H<u></u>ost.cpp<br>
    lldb/trunk/source/Host/macosx/<u></u><u></u>Host.mm<br>
    lldb/trunk/source/Host/<u></u>windows<u></u>/Host.cpp<br>
    lldb/trunk/source/Target/<u></u>Platf<u></u>orm.cpp<br>
<br>
Modified: lldb/trunk/include/lldb/Host/<u></u>H<u></u>ost.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Host.h?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/include/<u></u>lldb/<u></u>Host/Host.h?rev=230065&<u></u>r1=<u></u>230064&r2=230065&view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/include/lldb/Host/<u></u>H<u></u>ost.h (original)<br>
+++ lldb/trunk/include/lldb/Host/<u></u>H<u></u>ost.h Fri Feb 20 15:48:38 2015<br>
@@ -253,6 +253,16 @@ public:<br>
     static Error<br>
     LaunchProcess (ProcessLaunchInfo &launch_info);<br>
<br>
+    //----------------------------<u></u><u></u>------------------------------<u></u><u></u>--------<br>
+    /// Perform globbing of the command-line for this launch info<br>
+    /// This can potentially involve wildcard expansion<br>
+    //  environment variable replacement, and whatever other<br>
+    //  argument magic the platform defines as part of its typical<br>
+    //  user experience<br>
+    //----------------------------<u></u><u></u>------------------------------<u></u><u></u>--------<br>
+    static Error<br>
+    GlobArguments (ProcessLaunchInfo &launch_info);<br>
+<br>
     static Error<br>
     RunShellCommand (const char *command,           // Shouldn't be NULL<br>
                      const char *working_dir,       // Pass NULL to use the current working directory<br>
<br>
Modified: lldb/trunk/include/lldb/<u></u>Target<u></u>/Platform.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Platform.h?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/include/<u></u>lldb/<u></u>Target/Platform.h?rev=<u></u>230065&<u></u>r1=230064&r2=230065&<u></u>view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/include/lldb/<u></u>Target<u></u>/Platform.h (original)<br>
+++ lldb/trunk/include/lldb/<u></u>Target<u></u>/Platform.h Fri Feb 20 15:48:38 2015<br>
@@ -386,6 +386,16 @@ namespace lldb_private {<br>
         LaunchProcess (ProcessLaunchInfo &launch_info);<br>
<br>
         //---------------------------<u></u>-<u></u>-----------------------------<u></u>-<u></u>--------<br>
+        /// Perform globbing of the command-line for this launch info<br>
+        /// This can potentially involve wildcard expansion<br>
+        //  environment variable replacement, and whatever other<br>
+        //  argument magic the platform defines as part of its typical<br>
+        //  user experience<br>
+        //----------------------------<u></u><u></u>------------------------------<u></u><u></u>--------<br>
+        virtual Error<br>
+        GlobArguments (ProcessLaunchInfo &launch_info);<br>
+<br>
+        //----------------------------<u></u><u></u>------------------------------<u></u><u></u>--------<br>
         /// Kill process on a platform.<br>
         //---------------------------<u></u>-<u></u>-----------------------------<u></u>-<u></u>--------<br>
         virtual Error<br>
<br>
Modified: lldb/trunk/source/Host/<u></u>freebsd<u></u>/Host.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/freebsd/Host.cpp?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/source/<u></u>Host/<u></u>freebsd/Host.cpp?rev=<u></u>230065&<u></u>r1=230064&r2=230065&<u></u>view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/source/Host/<u></u>freebsd<u></u>/Host.cpp (original)<br>
+++ lldb/trunk/source/Host/<u></u>freebsd<u></u>/Host.cpp Fri Feb 20 15:48:38 2015<br>
@@ -312,3 +312,9 @@ Host::GetUnixSignals ()<br>
     return s_unix_signals_sp;<br>
 }<br>
<br>
+Error<br>
+Host::GlobArguments (ProcessLaunchInfo &launch_info)<br>
+{<br>
+    return Error("unimplemented");<br>
+}<br>
+<br>
<br>
Modified: lldb/trunk/source/Host/linux/<u></u>H<u></u>ost.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/linux/Host.cpp?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/source/<u></u>Host/<u></u>linux/Host.cpp?rev=<u></u>230065&r1=<u></u>230064&r2=230065&<u></u>view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/source/Host/linux/<u></u>H<u></u>ost.cpp (original)<br>
+++ lldb/trunk/source/Host/linux/<u></u>H<u></u>ost.cpp Fri Feb 20 15:48:38 2015<br>
@@ -417,3 +417,8 @@ Host::GetUnixSignals ()<br>
     return s_unix_signals_sp;<br>
 }<br>
<br>
+Error<br>
+Host::GlobArguments (ProcessLaunchInfo &launch_info)<br>
+{<br>
+    return Error("unimplemented");<br>
+}<br>
<br>
Modified: lldb/trunk/source/Host/macosx/<u></u><u></u>Host.mm<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Host.mm?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/source/<u></u>Host/<u></u>macosx/Host.mm?rev=<u></u>230065&r1=<u></u>230064&r2=230065&<u></u>view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/source/Host/macosx/<u></u><u></u>Host.mm (original)<br>
+++ lldb/trunk/source/Host/macosx/<u></u><u></u>Host.mm Fri Feb 20 15:48:38 2015<br>
@@ -45,6 +45,7 @@<br>
 #include "lldb/Core/ModuleSpec.h"<br>
 #include "lldb/Core/StreamFile.h"<br>
 #include "lldb/Core/StreamString.h"<br>
+#include "lldb/Core/StructuredData.h"<br>
 #include "lldb/Host/<u></u>ConnectionFileDescr<u></u>iptor.h"<br>
 #include "lldb/Host/Endian.h"<br>
 #include "lldb/Host/FileSpec.h"<br>
@@ -1351,6 +1352,91 @@ Host::LaunchProcess (ProcessLaunchInfo &<br>
     return error;<br>
 }<br>
<br>
+Error<br>
+Host::GlobArguments (ProcessLaunchInfo &launch_info)<br>
+{<br>
+    Error error;<br>
+    if (launch_info.GetFlags().Test(<u></u>e<u></u>LaunchFlagGlobArguments))<br>
+    {<br>
+        FileSpec glob_tool_spec;<br>
+        if (!HostInfo::GetLLDBPath(lldb::<u></u><u></u>ePathTypeSupportExecutableDir, glob_tool_spec))<br>
+        {<br>
+            error.SetErrorString("could not find argdumper tool");<br>
+            return error;<br>
+        }<br>
+        glob_tool_spec.<u></u>AppendPathCompo<u></u>nent("<u></u>argdumper");<br>
+        if (!glob_tool_spec.Exists())<br>
+        {<br>
+            error.SetErrorString("could not find argdumper tool");<br>
+            return error;<br>
+        }<br>
+<br>
+        std::string quoted_cmd_string;<br>
+        launch_info.GetArguments().<u></u>Get<u></u>QuotedCommandString(quoted_<u></u>cmd<u></u>_string);<br>
+        StreamString glob_command;<br>
+<br>
+        glob_command.Printf("%s %s",<br>
+                            glob_tool_spec.GetPath().c_<u></u>str<u></u>(),<br>
+                            quoted_cmd_string.c_str());<br>
+<br>
+        int status;<br>
+        std::string output;<br>
+        RunShellCommand(glob_command.<u></u>G<u></u>etData(), launch_info.<u></u>GetWorkingDirector<u></u>y(), &status, nullptr, &output, 10);<br>
+<br>
+        if (status != 0)<br>
+        {<br>
+            error.<u></u>SetErrorStringWithFormat<u></u>("<u></u>argdumper exited with error %d", status);<br>
+            return error;<br>
+        }<br>
+<br>
+        auto data_sp = StructuredData::ParseJSON(<u></u>outp<u></u>ut);<br>
+        if (!data_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        auto dict_sp = data_sp->GetAsDictionary();<br>
+        if (!data_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        auto args_sp = dict_sp-><u></u>GetObjectForDotSepara<u></u>tedPath("<u></u>arguments");<br>
+        if (!args_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        auto args_array_sp = args_sp->GetAsArray();<br>
+        if (!args_array_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        launch_info.GetArguments().<u></u>Cle<u></u>ar();<br>
+<br>
+        for (size_t i = 0;<br>
+             i < args_array_sp->GetSize();<br>
+             i++)<br>
+        {<br>
+            auto item_sp = args_array_sp->GetItemAtIndex(<u></u><u></u>i);<br>
+            if (!item_sp)<br>
+                continue;<br>
+            auto str_sp = item_sp->GetAsString();<br>
+            if (!str_sp)<br>
+                continue;<br>
+<br>
+            launch_info.GetArguments().<u></u>App<u></u>endArgument(str_sp-><u></u>GetValue()<u></u>.c_str());<br>
+        }<br>
+    }<br>
+<br>
+    return error;<br>
+}<br>
+<br>
 HostThread<br>
 Host::<u></u>StartMonitoringChildPro<u></u>cess(<u></u>Host::<u></u>MonitorChildProcess<u></u>Callback callback, void *callback_baton, lldb::pid_t pid, bool monitor_signals)<br>
 {<br>
<br>
Modified: lldb/trunk/source/Host/<u></u>windows<u></u>/Host.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/Host.cpp?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/source/<u></u>Host/<u></u>windows/Host.cpp?rev=<u></u>230065&<u></u>r1=230064&r2=230065&<u></u>view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/source/Host/<u></u>windows<u></u>/Host.cpp (original)<br>
+++ lldb/trunk/source/Host/<u></u>windows<u></u>/Host.cpp Fri Feb 20 15:48:38 2015<br>
@@ -217,4 +217,90 @@ HostThread<br>
 Host::<u></u>StartMonitoringChildPro<u></u>cess(<u></u>Host::<u></u>MonitorChildProcess<u></u>Callback callback, void *callback_baton, lldb::pid_t pid, bool monitor_signals)<br>
 {<br>
     return HostThread();<br>
-}<br>
\ No newline at end of file<br>
+}<br>
+<br>
+Error<br>
+Host::GlobArguments (ProcessLaunchInfo &launch_info)<br>
+{<br>
+    Error error;<br>
+    if (launch_info.GetFlags().Test(<u></u>e<u></u>LaunchFlagGlobArguments))<br>
+    {<br>
+        FileSpec glob_tool_spec;<br>
+        if (!HostInfo::GetLLDBPath(lldb::<u></u><u></u>ePathTypeSupportExecutableDir, glob_tool_spec))<br>
+        {<br>
+            error.SetErrorString("could not find argdumper tool");<br>
+            return error;<br>
+        }<br>
+        glob_tool_spec.<u></u>AppendPathCompo<u></u>nent("<u></u>argdumper.exe");<br>
+        if (!glob_tool_spec.Exists())<br>
+        {<br>
+            error.SetErrorString("could not find argdumper tool");<br>
+            return error;<br>
+        }<br>
+<br>
+        std::string quoted_cmd_string;<br>
+        launch_info.GetArguments().<u></u>Get<u></u>QuotedCommandString(quoted_<u></u>cmd<u></u>_string);<br>
+        std::replace(quoted_cmd_<u></u>string<u></u>.begin(), quoted_cmd_string.end(), '<a>\\'</a>, '/');<br>
+        StreamString glob_command;<br>
+<br>
+        glob_command.Printf("%s %s",<br>
+                            glob_tool_spec.GetPath().c_<u></u>str<u></u>(),<br>
+                            quoted_cmd_string.c_str());<br>
+<br>
+        int status;<br>
+        std::string output;<br>
+        RunShellCommand(glob_command.<u></u>G<u></u>etData(), launch_info.<u></u>GetWorkingDirector<u></u>y(), &status, nullptr, &output, 10);<br>
+<br>
+        if (status != 0)<br>
+        {<br>
+            error.<u></u>SetErrorStringWithFormat<u></u>("<u></u>argdumper exited with error %d", status);<br>
+            return error;<br>
+        }<br>
+<br>
+        auto data_sp = StructuredData::ParseJSON(<u></u>outp<u></u>ut);<br>
+        if (!data_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        auto dict_sp = data_sp->GetAsDictionary();<br>
+        if (!data_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        auto args_sp = dict_sp-><u></u>GetObjectForDotSepara<u></u>tedPath("<u></u>arguments");<br>
+        if (!args_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        auto args_array_sp = args_sp->GetAsArray();<br>
+        if (!args_array_sp)<br>
+        {<br>
+            error.SetErrorString("invalid JSON");<br>
+            return error;<br>
+        }<br>
+<br>
+        launch_info.GetArguments().<u></u>Cle<u></u>ar();<br>
+<br>
+        for (size_t i = 0;<br>
+             i < args_array_sp->GetSize();<br>
+             i++)<br>
+        {<br>
+            auto item_sp = args_array_sp->GetItemAtIndex(<u></u><u></u>i);<br>
+            if (!item_sp)<br>
+                continue;<br>
+            auto str_sp = item_sp->GetAsString();<br>
+            if (!str_sp)<br>
+                continue;<br>
+<br>
+            launch_info.GetArguments().<u></u>App<u></u>endArgument(str_sp-><u></u>GetValue()<u></u>.c_str());<br>
+        }<br>
+    }<br>
+<br>
+    return error;<br>
+}<br>
<br>
Modified: lldb/trunk/source/Target/<u></u>Platf<u></u>orm.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=230065&r1=230064&r2=230065&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>pr<u></u>oject/lldb/trunk/source/<u></u>Target<u></u>/Platform.cpp?rev=<u></u>230065&r1=<u></u>230064&r2=230065&<u></u>view=diff</a><br>
==============================<u></u><u></u>==============================<u></u><u></u>==================<br>
--- lldb/trunk/source/Target/<u></u>Platf<u></u>orm.cpp (original)<br>
+++ lldb/trunk/source/Target/<u></u>Platf<u></u>orm.cpp Fri Feb 20 15:48:38 2015<br>
@@ -1116,87 +1116,9 @@ Platform::LaunchProcess (ProcessLaunchIn<br>
         }<br>
         else if (launch_info.GetFlags().Test(<u></u>e<u></u>LaunchFlagGlobArguments))<br>
         {<br>
-            FileSpec glob_tool_spec;<br>
-            if (!HostInfo::GetLLDBPath(lldb::<u></u><u></u>ePathTypeSupportExecutableDir, glob_tool_spec))<br>
-            {<br>
-                error.SetErrorString("could not find argdumper tool");<br>
+            error = GlobArguments(launch_info);<br>
+            if (error.Fail())<br>
                 return error;<br>
-            }<br>
-#if defined(_WIN32)<br>
-            glob_tool_spec.<u></u>AppendPathCompo<u></u>nent("<u></u>argdumper.exe");<br>
-#else<br>
-            glob_tool_spec.<u></u>AppendPathCompo<u></u>nent("<u></u>argdumper");<br>
-#endif<br>
-            if (!glob_tool_spec.Exists())<br>
-            {<br>
-                error.SetErrorString("could not find argdumper tool");<br>
-                return error;<br>
-            }<br>
-<br>
-            std::string quoted_cmd_string;<br>
-            launch_info.GetArguments().<u></u>Get<u></u>QuotedCommandString(quoted_<u></u>cmd<u></u>_string);<br>
-#if defined(_WIN32)<br>
-            std::replace(quoted_cmd_<u></u>string<u></u>.begin(), quoted_cmd_string.end(), '<a>\\'</a>, '/');<br>
-#endif<br>
-            StreamString glob_command;<br>
-<br>
-            glob_command.Printf("%s %s",<br>
-                                glob_tool_spec.GetPath().c_<u></u>str<u></u>(),<br>
-                                quoted_cmd_string.c_str());<br>
-<br>
-            int status;<br>
-            std::string output;<br>
-            RunShellCommand(glob_command.<u></u>G<u></u>etData(), launch_info.<u></u>GetWorkingDirector<u></u>y(), &status, nullptr, &output, 10);<br>
-<br>
-            if (status != 0)<br>
-            {<br>
-                error.<u></u>SetErrorStringWithFormat<u></u>("<u></u>argdumper exited with error %d", status);<br>
-                return error;<br>
-            }<br>
-<br>
-            auto data_sp = StructuredData::ParseJSON(<u></u>outp<u></u>ut);<br>
-            if (!data_sp)<br>
-            {<br>
-                error.SetErrorString("invalid JSON");<br>
-                return error;<br>
-            }<br>
-<br>
-            auto dict_sp = data_sp->GetAsDictionary();<br>
-            if (!data_sp)<br>
-            {<br>
-                error.SetErrorString("invalid JSON");<br>
-                return error;<br>
-            }<br>
-<br>
-            auto args_sp = dict_sp-><u></u>GetObjectForDotSepara<u></u>tedPath("<u></u>arguments");<br>
-            if (!args_sp)<br>
-            {<br>
-                error.SetErrorString("invalid JSON");<br>
-                return error;<br>
-            }<br>
-<br>
-            auto args_array_sp = args_sp->GetAsArray();<br>
-            if (!args_array_sp)<br>
-            {<br>
-                error.SetErrorString("invalid JSON");<br>
-                return error;<br>
-            }<br>
-<br>
-            launch_info.GetArguments().<u></u>Cle<u></u>ar();<br>
-<br>
-            for (size_t i = 0;<br>
-                 i < args_array_sp->GetSize();<br>
-                 i++)<br>
-            {<br>
-                auto item_sp = args_array_sp->GetItemAtIndex(<u></u><u></u>i);<br>
-                if (!item_sp)<br>
-                    continue;<br>
-                auto str_sp = item_sp->GetAsString();<br>
-                if (!str_sp)<br>
-                    continue;<br>
-<br>
-                launch_info.GetArguments().<u></u>App<u></u>endArgument(str_sp-><u></u>GetValue()<u></u>.c_str());<br>
-            }<br>
         }<br>
<br>
         if (log)<br>
@@ -1210,6 +1132,14 @@ Platform::LaunchProcess (ProcessLaunchIn<br>
 }<br>
<br>
 Error<br>
+Platform::GlobArguments (ProcessLaunchInfo &launch_info)<br>
+{<br>
+    if (IsHost())<br>
+        return Host::GlobArguments(launch_<u></u>inf<u></u>o);<br>
+    return Error("base lldb_private::Platform class can't glob arguments");<br>
+}<br>
+<br>
+Error<br>
 Platform::KillProcess (const lldb::pid_t pid)<br>
 {<br>
     Log *log(lldb_private::<u></u>GetLogIfAll<u></u>CategoriesSet (LIBLLDB_LOG_PLATFORM));<br>
<br>
<br>
______________________________<u></u><u></u>_________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@cs.uiuc.edu" target="_blank">lldb-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailm<u></u>an/listinfo/lldb-commits</a><br>
</blockquote></div>
</div></blockquote></div><br></div><div style="word-wrap:break-word"><div>
<div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div>Thanks,</div><div><i>- Enrico</i><br>📩 egranata@<font color="#ff2600"></font>.com ☎️ 27683</div><div><br></div></div></div></div></div></div><br><br>
</div>
<br></div></blockquote></div></blockquote></div>
</div></blockquote></div><br><div>
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div>Thanks,</div><div><i>- Enrico</i><br>📩 egranata@<font color="#ff2600"></font>.com ☎️ 27683</div><div><br></div></div></div></div></div></div><br><br>
</div>
<br></div></blockquote></div>