[RFAV2] Fix/complete option list/description in manual and in gdb --help.

Message ID 20210620210030.10915-1-philippe.waroquiers@skynet.be
State New
Headers show
Series
  • [RFAV2] Fix/complete option list/description in manual and in gdb --help.
Related show

Commit Message

Rustam Kovhaev via Gdb-patches June 20, 2021, 9 p.m.
The GDB option list given in gdb --help was incomplete.
This fixes it.  Some fixes are also done in the user manual.

This is the RFA V2, handling the comments of Pedro and Eli.
The main changes compared to V1 are:
  * use 'GUI or TUI' when relevant in the manual and --help
  * reworked the description of the GDB long and short options to
    clarify the way they work.  In particular, the manual now tells
    explicitly that 'short form' options are not 'one letter options'
    that can be combined.

Changes in main.c are:
* the -w option was since 2003 commented as 'not sure actually useful'.
  As -nw is disabling tui, and -w was activating an optional TK based
  GUI, I changed the behaviour of -w to activate the TUI interface if
  configured.  In case both TK and TUI are configured, for backward
  compatibility reasons, -w starts the TK interface.
  So, now, -w is actually useful :).

  Note that for reason of backward compatibility, when -w is given and
  no GUI or TUI is configured, GDB just ignores the option.

* For some options, the addition of the short option letter needs more room.
  So, the option description indentation is increased by 3 spaces,
  still keeping the help output <= 80 characters.

* addition of short options for various long options
  (--core, --exec, --pid; --symbols, --readnow, --fullname,
   --interpreter, --cd)

* Addition of the long option for -w, --nw, -b.

* addition of the short and long options
   --early--init-command=FILE, -eix
   --early-init-eval-command=COMMAND, -eiex
   --annotate=LEVEL
  Note that --annotate is deprecated (front ends should use GDB/MI)
  but --help is not modified to indicate this deprecation.

* addition of GDBTK options (--tclcommand, --enable-external-editor,
  --editor-command).
  Note that --enable-external-editor is a noop kept for backward compatibility,
  but I have not modified the --help to indicate that.

Changes in the user manual are:
* Remove the -t TTY description.  This short letter option is not defined
  (and is already currently ambiguous between -tty and -tui).
* Added various synonyms
  --ui=INTERPRET and -i INTERPRET = --interpreter=INTERPRET
* Added description of --dbx

* For an option such as "--eval-command=COMMAND, -ex", GDB accepts all of:
      --eval-command=quit
      -eval-command=quit
      --eval-command quit
      -eval-command quit
      --ex=quit
      -ex=quit
      --ex quit
      -ex quit
  The gdb --help output uses quite systematically --XXXXX
  for the "long option" XXXXX and -Y for the "short option" Y.

  The user manual was using a mixture of notations, sometimes -XXXXXX,
  sometimes --XXXXXX, sometimes both.
  Manual changed to systematically use the same notation as the --help
  output.
  The manual now only describes that options can be quite freely accepted
  with all the above different formats, but now uses in examples and index
  the classical --XXXXXXX or -Y formats.

gdb/ChangeLog
2021-MM-DD  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* main.c (captured_main_1): Have -w starting TUI to TK,
	use consistently -o or --option convention.
	(print_gdb_help): fix/complete help.

gdb/doc/ChangeLog
2021-MM-DD  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* gdb.texinfo (Invoking GDB): Complete help.  Use -- systematically
        for all long options.  Clarify long and short forms for options.
---
 gdb/doc/gdb.texinfo | 178 ++++++++++++++++++++++++++++----------------
 gdb/main.c          | 109 ++++++++++++++++-----------
 2 files changed, 177 insertions(+), 110 deletions(-)

-- 
2.20.1

Patch

diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 7cdc83b9537..95be6ee17e9 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -921,7 +921,7 @@  options.  @value{GDBN} itself can remind you of the options available.
 Type
 
 @smallexample
-@value{GDBP} -help
+@value{GDBP} --help
 @end smallexample
 
 @noindent
@@ -932,6 +932,50 @@  All options and command line arguments you give are processed
 in sequential order.  The order makes a difference when the
 @samp{-x} option is used.
 
+All options can be specified with @samp{--} or @samp{-}.  If an option
+requires a value, the option and the value can be separated by a
+@samp{=} or by a space.  Many options have both long and short forms,
+such as @samp{--option} and @samp{-o}.
+
+This manual and @samp{@value{GDBP} --help} output describe the options
+using the canonical conventions:
+@table @code
+@item --option=@var{value}
+@item -o @var{value}
+@end table
+
+@value{GDBN} short form options are just a shorter way to give an
+option.  These short form options are typically one or two letters
+long.  Note that 'single letter' options cannot be combined together.
+For example, @value{GDBN} does not recognize @samp{-wq}: the option
+@samp{-wq} does not exist and @samp{-wq} is not accepted as the
+combination of @samp{-w -q}.
+
+@c NOTE: the @cindex entries here use double dashes ON PURPOSE.  This
+@c way, both those who look for -foo and --foo in the index, will find
+@c it.
+
+In summary, for an option that requires a value and that has a long
+form @samp{--option} and a short form @samp{-o}, @value{GDBN} accepts
+all of the following conventions:
+
+@table @code
+@item --option=@var{value}
+@item --option @var{value}
+@item -option=@var{value}
+@item -option @var{value}
+@item -o @var{value}
+@item -o=@var{value}
+@item --o @var{value}
+@item --o=@var{value}
+@end table
+
+@value{GDBN} recognizes the long forms if you truncate them, so long
+as enough of the option is present to be unambiguous.  A short form
+option (such as @samp{-c} to specify a core file) is recognised even if
+it is ambiguous with some other options (such as @samp{--command},
+@samp{--configuration}, @samp{--cd}).
+
 
 @menu
 * File Options::                Choosing files
@@ -945,10 +989,10 @@  in sequential order.  The order makes a difference when the
 
 When @value{GDBN} starts, it reads any arguments other than options as
 specifying an executable file and core file (or process ID).  This is
-the same as if the arguments were specified by the @samp{-se} and
+the same as if the arguments were specified by the @samp{--se} and
 @samp{-c} (or @samp{-p}) options respectively.  (@value{GDBN} reads the
 first argument that does not have an associated option flag as
-equivalent to the @samp{-se} option followed by that argument; and the
+equivalent to the @samp{--se} option followed by that argument; and the
 second argument that does not have an associated option flag, if any, as
 equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
 If the second argument begins with a decimal digit, @value{GDBN} will
@@ -961,48 +1005,39 @@  If @value{GDBN} has not been configured to included core file support,
 such as for most embedded targets, then it will complain about a second
 argument and ignore it.
 
-Many options have both long and short forms; both are shown in the
-following list.  @value{GDBN} also recognizes the long forms if you truncate
-them, so long as enough of the option is present to be unambiguous.
-(If you prefer, you can flag option arguments with @samp{--} rather
-than @samp{-}, though we illustrate the more usual convention.)
-
-@c NOTE: the @cindex entries here use double dashes ON PURPOSE.  This
-@c way, both those who look for -foo and --foo in the index, will find
-@c it.
 
 @table @code
-@item -symbols @var{file}
+@item --symbols=@var{file}
 @itemx -s @var{file}
 @cindex @code{--symbols}
 @cindex @code{-s}
 Read symbol table from file @var{file}.
 
-@item -exec @var{file}
+@item --exec=@var{file}
 @itemx -e @var{file}
 @cindex @code{--exec}
 @cindex @code{-e}
 Use file @var{file} as the executable file to execute when appropriate,
 and for examining pure data in conjunction with a core dump.
 
-@item -se @var{file}
+@item --se=@var{file}
 @cindex @code{--se}
 Read symbol table from file @var{file} and use it as the executable
 file.
 
-@item -core @var{file}
+@item --core=@var{file}
 @itemx -c @var{file}
 @cindex @code{--core}
 @cindex @code{-c}
 Use file @var{file} as a core dump to examine.
 
-@item -pid @var{number}
+@item --pid=@var{number}
 @itemx -p @var{number}
 @cindex @code{--pid}
 @cindex @code{-p}
 Connect to process ID @var{number}, as with the @code{attach} command.
 
-@item -command @var{file}
+@item --command=@var{file}
 @itemx -x @var{file}
 @cindex @code{--command}
 @cindex @code{-x}
@@ -1010,21 +1045,21 @@  Execute commands from file @var{file}.  The contents of this file is
 evaluated exactly as the @code{source} command would.
 @xref{Command Files,, Command files}.
 
-@item -eval-command @var{command}
+@item --eval-command=@var{command}
 @itemx -ex @var{command}
 @cindex @code{--eval-command}
 @cindex @code{-ex}
 Execute a single @value{GDBN} command.
 
 This option may be used multiple times to call multiple commands.  It may
-also be interleaved with @samp{-command} as required.
+also be interleaved with @samp{--command} as required.
 
 @smallexample
 @value{GDBP} -ex 'target sim' -ex 'load' \
    -x setbreakpoints -ex 'run' a.out
 @end smallexample
 
-@item -init-command @var{file}
+@item --init-command=@var{file}
 @itemx -ix @var{file}
 @cindex @code{--init-command}
 @cindex @code{-ix}
@@ -1032,7 +1067,7 @@  Execute commands from file @var{file} before loading the inferior (but
 after loading gdbinit files).
 @xref{Startup}.
 
-@item -init-eval-command @var{command}
+@item --init-eval-command=@var{command}
 @itemx -iex @var{command}
 @cindex @code{--init-eval-command}
 @cindex @code{-iex}
@@ -1040,28 +1075,28 @@  Execute a single @value{GDBN} command before loading the inferior (but
 after loading gdbinit files).
 @xref{Startup}.
 
-@item -early-init-command @var{file}
+@item --early-init-command=@var{file}
 @itemx -eix @var{file}
 @cindex @code{--early-init-command}
 @cindex @code{-eix}
 Execute commands from @var{file} very early in the initialization
 process, before any output is produced.  @xref{Startup}.
 
-@item -early-init-eval-command @var{command}
+@item --early-init-eval-command=@var{command}
 @itemx -eiex @var{command}
 @cindex @code{--early-init-eval-command}
 @cindex @code{-eiex}
 Execute a single @value{GDBN} command very early in the initialization
 process, before any output is produced.
 
-@item -directory @var{directory}
+@item --directory=@var{directory}
 @itemx -d @var{directory}
 @cindex @code{--directory}
 @cindex @code{-d}
 Add @var{directory} to the path to search for source and script files.
 
 @item -r
-@itemx -readnow
+@itemx --readnow
 @cindex @code{--readnow}
 @cindex @code{-r}
 Read each symbol file's entire symbol table immediately, rather than
@@ -1087,24 +1122,24 @@  You can run @value{GDBN} in various alternative modes---for example, in
 batch mode or quiet mode.
 
 @table @code
-@anchor{-nx}
-@item -nx
+@anchor{--nx}
+@item --nx
 @itemx -n
 @cindex @code{--nx}
 @cindex @code{-n}
 Do not execute commands found in any initialization files
 (@pxref{Initialization Files}).
 
-@anchor{-nh}
-@item -nh
+@anchor{--nh}
+@item --nh
 @cindex @code{--nh}
 Do not execute commands found in any home directory initialization
 file (@pxref{Initialization Files,,Home directory initialization
 file}).  The system wide and current directory initialization files
 are still loaded.
 
-@item -quiet
-@itemx -silent
+@item --quiet
+@itemx --silent
 @itemx -q
 @cindex @code{--quiet}
 @cindex @code{--silent}
@@ -1120,7 +1155,7 @@  current setting.  Place @code{set startup-quietly on} into your early
 initialization file (@pxref{Initialization Files,,Initialization
 Files}) to have future @value{GDBN} sessions startup quietly.
 
-@item -batch
+@item --batch
 @cindex @code{--batch}
 Run in batch mode.  Exit with status @code{0} after processing all the
 command files specified with @samp{-x} (and all commands from
@@ -1143,11 +1178,11 @@  Program exited normally.
 @value{GDBN} control terminates) is not issued when running in batch
 mode.
 
-@item -batch-silent
+@item --batch-silent
 @cindex @code{--batch-silent}
-Run in batch mode exactly like @samp{-batch}, but totally silently.  All
+Run in batch mode exactly like @samp{--batch}, but totally silently.  All
 @value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
-unaffected).  This is much quieter than @samp{-silent} and would be useless
+unaffected).  This is much quieter than @samp{--silent} and would be useless
 for an interactive session.
 
 This is particularly useful when using targets that give @samp{Loading section}
@@ -1156,7 +1191,7 @@  messages, for example.
 Note that targets that give their output via @value{GDBN}, as opposed to
 writing directly to @code{stdout}, will also be made silent.
 
-@item -return-child-result
+@item --return-child-result
 @cindex @code{--return-child-result}
 The return code from @value{GDBN} will be the return code from the child
 process (the process being debugged), with the following exceptions:
@@ -1165,7 +1200,7 @@  process (the process being debugged), with the following exceptions:
 @item
 @value{GDBN} exits abnormally.  E.g., due to an incorrect argument or an
 internal error.  In this case the exit code is the same as it would have been
-without @samp{-return-child-result}.
+without @samp{--return-child-result}.
 @item
 The user quits with an explicit value.  E.g., @samp{quit 1}.
 @item
@@ -1173,31 +1208,34 @@  The child process never runs, or is not allowed to terminate, in which case
 the exit code will be -1.
 @end itemize
 
-This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
-when @value{GDBN} is being used as a remote program loader or simulator
-interface.
+This option is useful in conjunction with @samp{--batch} or
+@samp{--batch-silent}, when @value{GDBN} is being used as a remote
+program loader or simulator interface.
 
-@item -nowindows
-@itemx -nw
+@item --nowindows
+@itemx --nw
 @cindex @code{--nowindows}
-@cindex @code{-nw}
+@cindex @code{--nw}
 ``No windows''.  If @value{GDBN} comes with a graphical user interface
-(GUI) built in, then this option tells @value{GDBN} to only use the command-line
-interface.  If no GUI is available, this option has no effect.
+(GUI) or Text User Interface (TUI) built in, then this option tells
+@value{GDBN} to only use the command-line interface.  If no GUI or TUI
+is available, this option has no effect.
 
-@item -windows
+@item --windows
 @itemx -w
 @cindex @code{--windows}
 @cindex @code{-w}
-If @value{GDBN} includes a GUI, then this option requires it to be
-used if possible.
+If @value{GDBN} includes a GUI or a TUI, then this option requires it to be
+used if possible.  If @value{GDBN} includes both a GUI and a TUI, @value{GDBN}
+uses the GUI in priority.
 
 @item -cd @var{directory}
+@itemx --cd=@var{directory}
 @cindex @code{--cd}
 Run @value{GDBN} using @var{directory} as its working directory,
 instead of the current directory.
 
-@item -data-directory @var{directory}
+@item --data-directory=@var{directory}
 @itemx -D @var{directory}
 @cindex @code{--data-directory}
 @cindex @code{-D}
@@ -1205,7 +1243,7 @@  Run @value{GDBN} using @var{directory} as its data directory.
 The data directory is where @value{GDBN} searches for its
 auxiliary files.  @xref{Data Files}.
 
-@item -fullname
+@item --fullname
 @itemx -f
 @cindex @code{--fullname}
 @cindex @code{-f}
@@ -1219,7 +1257,7 @@  and a newline.  The Emacs-to-@value{GDBN} interface program uses the two
 @samp{\032} characters as a signal to display the source code for the
 frame.
 
-@item -annotate @var{level}
+@item --annotate=@var{level}
 @cindex @code{--annotate}
 This option sets the @dfn{annotation level} inside @value{GDBN}.  Its
 effect is identical to using @samp{set annotate @var{level}}
@@ -1239,7 +1277,7 @@  Change interpretation of command line so that arguments following the
 executable file are passed as command line arguments to the inferior.
 This option stops option processing.
 
-@item -baud @var{bps}
+@item --baud=@var{bps}
 @itemx -b @var{bps}
 @cindex @code{--baud}
 @cindex @code{-b}
@@ -1251,15 +1289,13 @@  interface used by @value{GDBN} for remote debugging.
 Set the timeout (in seconds) of any communication used by @value{GDBN}
 for remote debugging.
 
-@item -tty @var{device}
-@itemx -t @var{device}
+@item --tty=@var{device}
 @cindex @code{--tty}
-@cindex @code{-t}
 Run using @var{device} for your program's standard input and output.
 @c FIXME: kingdon thinks there is more to -tty.  Investigate.
 
 @c resolve the situation of these eventually
-@item -tui
+@item --tui
 @cindex @code{--tui}
 Activate the @dfn{Text User Interface} when starting.  The Text User
 Interface manages several text windows on the terminal, showing
@@ -1268,8 +1304,12 @@  source, assembly, registers and @value{GDBN} command outputs
 option if you run @value{GDBN} from Emacs (@pxref{Emacs, ,
 Using @value{GDBN} under @sc{gnu} Emacs}).
 
-@item -interpreter @var{interp}
+@item --interpreter=@var{interp}
+@itemx --ui=@var{interp}
+@itemx -i @var{interp}
 @cindex @code{--interpreter}
+@cindex @code{--ui}
+@cindex @code{-i}
 Use the interpreter @var{interp} for interface with the controlling
 program or device.  This option is meant to be set by programs which
 communicate with @value{GDBN} using it as a back end.
@@ -1282,23 +1322,29 @@  version 2 (@code{mi2}), included in @value{GDBN} 6.0 and version 1 (@code{mi1}),
 included in @value{GDBN} 5.3, are also available.  Earlier @sc{gdb/mi}
 interfaces are no longer supported.
 
-@item -write
+@item --dbx
+@cindex @code{--dbx}
+@samp{--dbx} causes @value{GDBN} to define various additional commands
+(such as @samp{assign}, @samp{use}, ...) providing some compatibility
+with the @var{dbx} debugger.
+
+@item --write
 @cindex @code{--write}
 Open the executable and core files for both reading and writing.  This
 is equivalent to the @samp{set write on} command inside @value{GDBN}
 (@pxref{Patching}).
 
-@item -statistics
+@item --statistics
 @cindex @code{--statistics}
 This option causes @value{GDBN} to print statistics about time and
 memory usage after it completes each command and returns to the prompt.
 
-@item -version
+@item --version
 @cindex @code{--version}
 This option causes @value{GDBN} to print its version number and
 no-warranty blurb, and exit.
 
-@item -configuration
+@item --configuration
 @cindex @code{--configuration}
 This option causes @value{GDBN} to print details about its build-time
 configuration parameters, and then exit.  These details can be
@@ -1344,7 +1390,7 @@  Reads the initialization file (if any) in your home directory and
 executes all the commands in that file, @pxref{Home Directory Init
 File}.
 
-@anchor{Option -init-eval-command}
+@anchor{Option --init-eval-command}
 @item
 Executes commands and command files specified by the @samp{-iex} and
 @samp{-ix} options in their specified order.  Usually you should use the
@@ -1544,7 +1590,7 @@  While on Apple hosts the locations searched are:
 @end table
 
 It is possible to prevent the home directory initialization file from
-being loaded using the @samp{-nx} or @samp{-nh} command line options,
+being loaded using the @samp{--nx} or @samp{--nh} command line options,
 @pxref{Mode Options,,Choosing Modes}.
 
 The DJGPP port of @value{GDBN} uses the name @file{gdb.ini} instead of
@@ -1569,7 +1615,7 @@  directory initialization file then it will not be loaded a second
 time.
 
 It is possible to prevent the local directory initialization file from
-being loaded using the @samp{-nx} command line option, @pxref{Mode
+being loaded using the @samp{--nx} command line option, @pxref{Mode
 Options,,Choosing Modes}.
 
 @node Quitting GDB
@@ -26300,7 +26346,7 @@  control when to auto-load files and which files should be auto-loaded.
 @item set auto-load off
 Globally disable loading of all auto-loaded files.
 You may want to use this command with the @samp{-iex} option
-(@pxref{Option -init-eval-command}) such as:
+(@pxref{Option --init-eval-command}) such as:
 @smallexample
 $ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile}
 @end smallexample
diff --git a/gdb/main.c b/gdb/main.c
index 5761ce2bdbe..a3320c0f87a 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -878,7 +878,7 @@  captured_main_1 (struct captured_main_args *context)
 	    set_per_command_space (1);
 	    break;
 	  case OPT_TUI:
-	    /* --tui is equivalent to -i=tui.  */
+	    /* --tui is equivalent to -i tui.  */
 #ifdef TUI
 	    xfree (interpreter_p);
 	    interpreter_p = xstrdup (INTERP_TUI);
@@ -887,16 +887,20 @@  captured_main_1 (struct captured_main_args *context)
 #endif
 	    break;
 	  case OPT_WINDOWS:
-	    /* FIXME: cagney/2003-03-01: Not sure if this option is
-	       actually useful, and if it is, what it should do.  */
+	    /* --windows is equivalent to -i insight or -i tui.
+               If both are defined, for backward compatibility reasons,
+	       priority is given to -i insight.  */
+#ifdef TUI
+	    xfree (interpreter_p);
+	    interpreter_p = xstrdup (INTERP_TUI);
+#endif
 #ifdef GDBTK
-	    /* --windows is equivalent to -i=insight.  */
 	    xfree (interpreter_p);
 	    interpreter_p = xstrdup (INTERP_INSIGHT);
 #endif
 	    break;
 	  case OPT_NOWINDOWS:
-	    /* -nw is equivalent to -i=console.  */
+	    /* -nw is equivalent to --interpreter=console.  */
 	    xfree (interpreter_p);
 	    interpreter_p = xstrdup (INTERP_CONSOLE);
 	    break;
@@ -1403,66 +1407,83 @@  This is the GNU debugger.  Usage:\n\n\
 "), stream);
   fputs_unfiltered (_("\
 Selection of debuggee and its files:\n\n\
-  --args             Arguments after executable-file are passed to inferior.\n\
-  --core=COREFILE    Analyze the core dump COREFILE.\n\
-  --exec=EXECFILE    Use EXECFILE as the executable.\n\
-  --pid=PID          Attach to running process PID.\n\
-  --directory=DIR    Search for source files in DIR.\n\
-  --se=FILE          Use FILE as symbol file and executable file.\n\
-  --symbols=SYMFILE  Read symbols from SYMFILE.\n\
-  --readnow          Fully read symbol files on first access.\n\
-  --readnever        Do not read symbol files.\n\
-  --write            Set writing into executable and core files.\n\n\
+  --args                Arguments after executable-file are passed to inferior.\n\
+  --core=COREFILE, -c   Analyze the core dump COREFILE.\n\
+  --exec=EXECFILE, -e   Use EXECFILE as the executable.\n\
+  --pid=PID, -p         Attach to running process PID.\n\
+  --directory=DIR, -d   Search for source files in DIR.\n\
+  --se=FILE             Use FILE as symbol file and executable file.\n\
+  --symbols=SYMFILE, -s Read symbols from SYMFILE.\n\
+  --readnow, -r         Fully read symbol files on first access.\n\
+  --readnever           Do not read symbol files.\n\
+  --write               Set writing into executable and core files.\n\n\
 "), stream);
   fputs_unfiltered (_("\
 Initial commands and command files:\n\n\
-  --command=FILE, -x Execute GDB commands from FILE.\n\
+  --command=FILE, -x    Execute GDB commands from FILE.\n\
   --init-command=FILE, -ix\n\
-		     Like -x but execute commands before loading inferior.\n\
+		        Like -x but execute commands before loading inferior.\n\
   --eval-command=COMMAND, -ex\n\
-		     Execute a single GDB command.\n\
-		     May be used multiple times and in conjunction\n\
-		     with --command.\n\
+		        Execute a single GDB command.\n\
+		        May be used multiple times and in conjunction\n\
+		        with --command.\n\
   --init-eval-command=COMMAND, -iex\n\
-		     Like -ex but before loading inferior.\n\
-  --nh               Do not read ~/.gdbinit.\n\
-  --nx               Do not read any .gdbinit files in any directory.\n\n\
+		        Like -ex but before loading inferior.\n\
+  --early-init-command=FILE, -eix\n\
+                        Like -x but FILE can only contain 'set' and 'source'\n\
+                        commands to run before GDB initialization.\n\
+  --early-init-eval-command=COMMAND, -eiex\n\
+                        Like -ex but only for 'set' and 'source' commands\n\
+                        to run before GDB initialization.\n\
+  --nh                  Do not read ~/.gdbinit.\n\
+  --nx, -n              Do not read any .gdbinit files in any directory.\n\n\
 "), stream);
   fputs_unfiltered (_("\
 Output and user interface control:\n\n\
-  --fullname         Output information used by emacs-GDB interface.\n\
-  --interpreter=INTERP\n\
-		     Select a specific interpreter / user interface.\n\
-  --tty=TTY          Use TTY for input/output by the program being debugged.\n\
-  -w                 Use the GUI interface.\n\
-  --nw               Do not use the GUI interface.\n\
+  --annotate=LEVEL      Output information used by graphical user interfaces.\n\
+  --fullname, -f        Output information used by emacs-GDB interface.\n\
+                        Like --annotate=1\n\
+  --interpreter=INTERP, --ui=INTERP, -i \n\
+		        Select a specific interpreter / user interface.\n\
+  --tty=TTY             Use TTY for input/output by the program being debugged.\n\
+  --windows, -w         Use the GUI or TUI interface.\n\
+  --nowindows, --nw     Do not use the GUI or TUI interface.\n\
 "), stream);
 #if defined(TUI)
   fputs_unfiltered (_("\
-  --tui              Use a terminal user interface.\n\
+  --tui                 Use the terminal user interface TUI.\n\
+"), stream);
+#endif
+#if defined(GDBTK)
+  fputs_unfiltered (_("\
+  --tclcommand=FILE     Load tclcommand FILE.\n\
+  --enable-external-editor\n\
+                        Ignored for backward compatibility.\n\
+  --editor-command=COMMAND\n\
+                        Set the external editor command when GDB\n\
+                        is farming out files to be edited by another program.\n\
 "), stream);
 #endif
   fputs_unfiltered (_("\
-  --dbx              DBX compatibility mode.\n\
-  -q, --quiet, --silent\n\
-		     Do not print version number on startup.\n\n\
+  --dbx                 DBX compatibility mode.\n\
+  -q, --quiet, --silent Do not print version number on startup.\n\n\
 "), stream);
   fputs_unfiltered (_("\
 Operating modes:\n\n\
-  --batch            Exit after processing options.\n\
-  --batch-silent     Like --batch, but suppress all gdb stdout output.\n\
-  --return-child-result\n\
-		     GDB exit code will be the child's exit code.\n\
-  --configuration    Print details about GDB configuration and then exit.\n\
-  --help             Print this message and then exit.\n\
-  --version          Print version information and then exit.\n\n\
+  --batch               Exit after processing options.\n\
+  --batch-silent        Like --batch, but suppress all gdb stdout output.\n\
+  --return-child-result GDB exit code will be the child's exit code.\n\
+  --statistics          Print time and memory usage after each command.\n\
+  --configuration       Print details about GDB configuration and then exit.\n\
+  --help                Print this message and then exit.\n\
+  --version             Print version information and then exit.\n\n\
 Remote debugging options:\n\n\
-  -b BAUDRATE        Set serial port baud rate used for remote debugging.\n\
-  -l TIMEOUT         Set timeout in seconds for remote debugging.\n\n\
+  --baud=BAUDRATE, -b   Set serial port baud rate used for remote debugging.\n\
+  -l TIMEOUT            Set timeout in seconds for remote debugging.\n\n\
 Other options:\n\n\
-  --cd=DIR           Change current directory to DIR.\n\
+  --cd=DIR              Change current directory to DIR.\n\
   --data-directory=DIR, -D\n\
-		     Set GDB's data-directory to DIR.\n\
+		        Set GDB's data-directory to DIR.\n\
 "), stream);
   fputs_unfiltered (_("\n\
 At startup, GDB reads the following early init files and executes their\n\