<div dir="ltr">I guess approaching the question from a different angle. Consider two scenarios: 1) You run "platform process list" while connected to a target. 2) You run "platform process list" while not connected to a target. In scenario #2, the only option is to display processes on the host. In scenario #1, does lldb currently display the processes on the host or the target? I suspect the host (I can't check because I only have a Windows box, so I have no way to debug any kind of actual target yet). So if this is correct, then this entire command is basically a host only command. So maybe the validator could take one argument representing the host platform, and one argument for the execution context. It would then be up to each validator's implementation to decide whether it cares about checking the host, the execution context, or some combination of the two depending on the command.</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 7, 2014 at 10:51 AM, <span dir="ltr"><<a href="mailto:jingham@apple.com" target="_blank">jingham@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If there's no target, then we should consult the current platform - if nobody set a platform then that will default to the host platform. Usually you get that from the target, so it would seem odd to pass that in separately, but maybe in this case that's okay to do. Otherwise whoever would be passing an ExecutionContext to the validators could, in the case where there was no selected target, make up an empty target, set it to the current platform and pass that in to the validator.<br>
<span class="HOEnZb"><font color="#888888"><br>
Jim<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
> On Jul 3, 2014, at 10:00 PM, Zachary Turner <<a href="mailto:zturner@google.com">zturner@google.com</a>> wrote:<br>
><br>
> So, with an ExecutionContext, everything is null if there's no target. For example, I might not be attached to anything, but trying to list processes on the host in order to know what process to attach to.<br>
><br>
> How to cleanly support all of these use cases?<br>
><br>
><br>
> On Thu, Jul 3, 2014 at 11:14 AM, <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:<br>
> Again, the validator should take an execution context not an interpreter. Some uses of commands, particularly HandleCommands used by breakpoint callbacks and the like, don't use the Command Interpreter's execution context, rather they are passed in the appropriate environment.<br>
><br>
> Jim<br>
><br>
> > On Jul 3, 2014, at 2:24 AM, Zachary Turner <<a href="mailto:zturner@google.com">zturner@google.com</a>> wrote:<br>
> ><br>
> > This patch implements the core logic to invalidate command options based on the interpreter state, and uses this to invalidate uid/gid related options of the "platform process list" command on Windows.<br>
> ><br>
> > When an invalid option is specified for a command, an error message is printed that explains the reason that the option is invalid, and furthermore when the help of a command is printed, options which have runtime validity conditions display an abbreviated-condition string in square braces prior to the long description of the option.<br>
> ><br>
> > <a href="http://reviews.llvm.org/D4373" target="_blank">http://reviews.llvm.org/D4373</a><br>
> ><br>
> > Files:<br>
> > include/lldb/Host/OptionParser.h<br>
> > include/lldb/Interpreter/CommandInterpreter.h<br>
> > include/lldb/Interpreter/CommandOptionValidators.h<br>
> > include/lldb/Interpreter/Options.h<br>
> > include/lldb/Target/TargetList.h<br>
> > include/lldb/lldb-private-types.h<br>
> > source/Commands/CommandObjectPlatform.cpp<br>
> > source/Interpreter/Args.cpp<br>
> > source/Interpreter/CMakeLists.txt<br>
> > source/Interpreter/CommandOptionValidators.cpp<br>
> > source/Interpreter/Options.cpp<br>
> > <D4373.11047.patch>_______________________________________________<br>
> > lldb-commits mailing list<br>
> > <a href="mailto:lldb-commits@cs.uiuc.edu">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/mailman/listinfo/lldb-commits</a><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div>