Love this change in principle.  I will look over it on the windows side to make sure nothing breaks.<br><br>One question: we are using getopt still for parsing interactive command lines right?<br><div class="gmail_quote"><div dir="ltr">On Mon, Feb 29, 2016 at 9:26 AM Pavel Labath <<a href="mailto:labath@google.com">labath@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">labath created this revision.<br>
labath added reviewers: clayborg, zturner.<br>
labath added a subscriber: lldb-commits.<br>
<br>
This replaces the hand-rolled getopt option parser in lldb driver with the one in llvm. This<br>
results in a lot less code, as the llvm's parser does much of the work (e.g., formatting of<br>
--help output) for us, and side-steps the problem of using the internal getopt implementation in<br>
liblldb on platforms which don't have a system getopt (windows, netbsd).<br>
<br>
This change has tiny behaviour changes, which I try to enumerate here:<br>
- boolean arguments can no longer be specified twice (e.g., --no-lldbinit --no-lldbinit will<br>
  result in an error). I needed to tweak TestFormats to account for this. Can be changed, but I'm<br>
  not sure if there is any need for it.<br>
- I have removed the --script-language option, as it seemed to be ignored anyway.<br>
- --help output has changed a bit and now reads (note one has to pass --help-hidden to see<br>
  short option letters. again can be changed, but i think it makes the initial help more<br>
  readable):<br>
<br>
USAGE: lldb [options] <program-and-arguments><br>
<br>
OPTIONS:<br>
<br>
General options:<br>
<br>
  -arch=<string>                 - Tells the debugger to use the specified architecture when starting and running the program.  <string> must be one of the architectures for which the program was compiled.<br>
  -attach-name=<string>          - Tells the debugger to attach to a process with the given name.<br>
  -attach-pid=<uint>             - Tells the debugger to attach to a process with the given pid<br>
  -batch                         - Tells the debugger to running the commands from -s, -S, -o & -O, and then quit.  However if any run command stopped due to a signal or crash, the debugger will return to the interactive prompt at the place of the crash.<br>
  -core=<string>                 - Tells the debugger to use the file <string> as the core file.<br>
  -debug                         - Tells the debugger to print out extra information for debugging itself.<br>
  -editor                        - Tells the debugger to open source files using the host's "external editor" mechanism.<br>
  -file=<string>                 - Tells the debugger to use the file <string> as the program to be debugged.<br>
  -no-lldbinit                   - Do not automatically parse any '.lldbinit' files.<br>
  -no-use-colors                 - Do not use colors.<br>
  -one-line=<string>             - Tells the debugger to execute this one-line lldb command after any file provided on the command line has been loaded.<br>
  -one-line-before-file=<string> - Tells the debugger to execute this one-line lldb command before any file provided on the command line has been loaded.<br>
  -one-line-on-crash=<string>    - When in batch mode, tells the debugger to execute this one-line lldb command if the target crashes.<br>
  -repl=<string>                 - Runs lldb in REPL mode with a stub process.<br>
  -repl-langauge=<string>        - Chooses the language for the REPL.<br>
  -source=<string>               - Tells the debugger to read in and execute the lldb commands in the given file, after any file provided on the command line has been loaded.<br>
  -source-before-file=<string>   - Tells the debugger to read in and execute the lldb commands in the given file, before any file provided on the command line has been loaded.<br>
  -source-on-crash=<string>      - When in batch mode, tells the debugger to source this file of lldb commands if the target crashes.<br>
  -source-quietly                - Don't echo the commands when executing them.<br>
  -wait-for                      - Tells the debugger to wait for a process with the given pid or name to launch before attaching.<br>
<br>
Generic Options:<br>
<br>
  -help                          - Display available options (-help-hidden for more)<br>
  -help-list                     - Display list of available options (-help-list-hidden for more)<br>
  -version                       - Display the version of this program<br>
<br>
If you don't provide -file then the first argument will be the file to be<br>
debugged which means that 'lldb -- <filename> [<ARG1> [<ARG2>]]' also<br>
works.  But remember to end the options with "--" if any of your<br>
arguments begin with "-".<br>
<br>
Multiple "-source" and "-one-line" options can be provided.  They will be<br>
processed from left to right in order, with the source files and commands<br>
interleaved.<br>
<br>
<a href="http://reviews.llvm.org/D17724" rel="noreferrer" target="_blank">http://reviews.llvm.org/D17724</a><br>
<br>
Files:<br>
  packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py<br>
  packages/Python/lldbsuite/test/driver/batch_mode/source.file<br>
  packages/Python/lldbsuite/test/functionalities/format/TestFormats.py<br>
  tools/driver/Driver.cpp<br>
  tools/driver/Driver.h<br>
  tools/driver/Platform.h<br>
<br>
</blockquote></div>