Re: [PATCH] Display configuration details in --help

Eli Zaretskii
2013-04-09T16:15:06Z

> Date: Thu, 21 Mar 2013 23:16:50 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: brobecker@adacore.com, palves@redhat.com, dje@google.com, gdb-patches@sourceware.org
>
> > From: Tom Tromey <tromey@redhat.com>
> > Cc: Eli Zaretskii <eliz@gnu.org>, palves@redhat.com, dje@google.com,
> > gdb-patches@sourceware.org
> > Date: Thu, 21 Mar 2013 14:58:03 -0600
> >
> > For the new information, "show configuration" might also be nice to have.
> > It would not be much more code and would let people see the info for the
> > gdb they are currently using.
>
> OK, will do.

Respinning, here's v2 of that patch, which accommodates all the
comments till now. It also includes documentation; please someone
review that, as I'm not objective in this case ;-).

OK to commit?

2013-04-09 Eli Zaretskii <eliz@gnu.org>

* top.c (print_gdb_configuration): New function, displays the
details about GDB configure-time parameters.
(print_gdb_version): Mention "show configuration".

* cli/cli-cmds.c (show_configuration): New function.
(_initialize_cli_cmds): Add the "show configuration" command.

* main.c (captured_main) <print_configuration>: New static var.
<long_options>: Use it.
If --configuration was given, call print_gdb_configuration.

--- gdb/cli/cli-cmds.c~0 2013-03-12 19:39:44.000000000 +0200
+++ gdb/cli/cli-cmds.c 2013-04-09 08:02:46.088591300 +0300
@@ -314,6 +314,12 @@ show_version (char *args, int from_tty)
printf_filtered ("\n");
}

+static void
+show_configuration (char *args, int from_tty)
+{
+ print_gdb_configuration (gdb_stdout);
+}
+
/* Handle the quit command. */

void
@@ -1756,6 +1762,9 @@ the previous command number shown."),
add_cmd ("version", no_set_class, show_version,
_("Show what version of GDB this is."), &showlist);

+ add_cmd ("configuration", no_set_class, show_configuration,
+ _("Show how GDB was configured at build time."), &showlist);
+
/* If target is open when baud changes, it doesn't take effect until
the next open (I think, not sure). */
add_setshow_zinteger_cmd ("remotebaud", no_class, &baud_rate, _("\

--- gdb/top.c~0 2013-01-25 16:17:10.000000000 +0200
+++ gdb/top.c 2013-04-09 08:02:27.508872200 +0300
@@ -1146,15 +1146,101 @@ and \"show warranty\" for details.\n");
{
fprintf_filtered (stream, "%s", host_name);
}
- fprintf_filtered (stream, "\".");
+ fprintf_filtered (stream, "\".\n\
+Type \"show configuration\" for configuration details.");

if (REPORT_BUGS_TO[0])
{
- fprintf_filtered (stream,
+ fprintf_filtered (stream,
_("\nFor bug reporting instructions, please see:\n"));
fprintf_filtered (stream, "%s.", REPORT_BUGS_TO);
}
}
+
+/* Print the details of GDB build-time configuration. */
+void
+print_gdb_configuration (struct ui_file *stream)
+{
+ fprintf_filtered (stream, _("\
+This GDB was configured as follows:\n\
+ configure --host=%s --target=%s\n\
+"), host_name, target_name);
+ fprintf_filtered (stream, _("\
+ --with-auto-load-dir=%s\n\
+ --with-auto-load-safe-path=%s\n\
+"), AUTO_LOAD_DIR, AUTO_LOAD_SAFE_PATH);
+#if HAVE_LIBEXPAT
+ fprintf_filtered (stream, _("\
+ --with-expat\n\
+"));
+#else
+ fprintf_filtered (stream, _("\
+ --without-expat\n\
+"));
+#endif
+ if (GDB_DATADIR[0])
+ fprintf_filtered (stream, _("\
+ --with-gdb-datadir=%s%s\n\
+"), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
+#ifdef ICONV_BIN
+ fprintf_filtered (stream, _("\
+ --with-iconv-bin=%s%s\n\
+"), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
+#endif
+ if (JIT_READER_DIR[0])
+ fprintf_filtered (stream, _("\
+ --with-jit-reader-dir=%s%s\n\
+"), JIT_READER_DIR, JIT_READER_DIR_RELOCATABLE ? " (relocatable)" : "");
+#if HAVE_LIBUNWIND_IA64_H
+ fprintf_filtered (stream, _("\
+ --with-libunwind-ia64\n\
+"));
+#else
+ fprintf_filtered (stream, _("\
+ --without-libunwind-ia64\n\
+"));
+#endif
+#if HAVE_LIBLZMA
+ fprintf_filtered (stream, _("\
+ --with-lzma\n\
+"));
+#else
+ fprintf_filtered (stream, _("\
+ --without-lzma\n\
+"));
+#endif
+#ifdef WITH_PYTHON_PATH
+ fprintf_filtered (stream, _("\
+ --with-python=%s%s\n\
+"), WITH_PYTHON_PATH, PYTHON_PATH_RELOCATABLE ? " (relocatable)" : "");
+#endif
+#ifdef RELOC_SRCDIR
+ fprintf_filtered (stream, _("\
+ --with-relocated-sources=%s\n\
+"), RELOC_SRCDIR);
+#endif
+ if (DEBUGDIR[0])
+ fprintf_filtered (stream, _("\
+ --with-separate-debug-dir=%s%s\n\
+"), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
+ if (TARGET_SYSTEM_ROOT[0])
+ fprintf_filtered (stream, _("\
+ --with-sysroot=%s%s\n\
+"), TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE ? " (relocatable)" : "");
+ if (SYSTEM_GDBINIT[0])
+ fprintf_filtered (stream, _("\
+ --with-system-gdbinit=%s%s\n\
+"), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
+#if HAVE_ZLIB_H
+ fprintf_filtered (stream, _("\
+ --with-zlib\n\
+"));
+#else
+ fprintf_filtered (stream, _("\
+ --without-zlib\n\
+"));
+#endif
+}
\f

/* The current top level prompt, settable with "set prompt", and/or

--- gdb/main.c~4 2013-04-09 08:40:03.404632700 +0300
+++ gdb/main.c 2013-04-09 08:08:00.461806500 +0300
@@ -322,6 +322,7 @@ captured_main (void *data)
initializer. */
static int print_help;
static int print_version;
+ static int print_configuration;

/* Pointers to all arguments of --command option. */
VEC (cmdarg_s) *cmdarg_vec = NULL;
@@ -484,6 +485,7 @@ captured_main (void *data)
{"command", required_argument, 0, 'x'},
{"eval-command", required_argument, 0, 'X'},
{"version", no_argument, &print_version, 1},
+ {"configuration", no_argument, &print_configuration, 1},
{"x", required_argument, 0, 'x'},
{"ex", required_argument, 0, 'X'},
{"init-command", required_argument, 0, OPT_IX},
@@ -727,8 +729,9 @@ captured_main (void *data)
}
}

- /* If --help or --version, disable window interface. */
- if (print_help || print_version)
+ /* If --help or --version or --configuration, disable window
+ interface. */
+ if (print_help || print_version || print_configuration)
{
use_windows = 0;
}
@@ -819,6 +822,14 @@ captured_main (void *data)
exit (0);
}

+ if (print_configuration)
+ {
+ print_gdb_configuration (gdb_stdout);
+ wrap_here ("");
+ printf_filtered ("\n");
+ exit (0);
+ }
+
/* FIXME: cagney/2003-02-03: The big hack (part 1 of 2) that lets
GDB retain the old MI1 interpreter startup behavior. Output the
copyright message before the interpreter is installed. That way
@@ -1130,6 +1141,7 @@ Options:\n\n\
#endif
fputs_unfiltered (_("\
--version Print version information and then exit.\n\
+ --configuration Print details about GDB configuration and then exit.\n\
-w Use a window interface.\n\
--write Set writing into executable and core files.\n\
--xdb XDB compatibility mode.\n\

--- gdb/top.h~0 2013-01-07 18:40:36.000000000 +0200
+++ gdb/top.h 2013-04-09 08:03:47.833787100 +0300
@@ -31,6 +31,7 @@
extern char gdbinit[];

extern void print_gdb_version (struct ui_file *);
+extern void print_gdb_configuration (struct ui_file *);

extern void read_command_file (FILE *);
extern void init_history (void);

2013-04-09 Eli Zaretskii <eliz@gnu.org>

* gdb.texinfo (Mode Options): Document '-configuration'.
(Help): Document "show configuration".
(Bug Reporting): Add requirements to include the configuration
details in bug reports.

--- gdb/doc/gdb.texinfo~0 2013-03-11 21:43:52.000000000 +0200
+++ gdb/doc/gdb.texinfo 2013-04-09 08:27:33.409998600 +0300
@@ -1263,6 +1263,12 @@
This option causes @value{GDBN} to print its version number and
no-warranty blurb, and exit.

+@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
+important when reporting @value{GDBN} bugs (@pxref{GDB Bugs}).
+
@end table

@node Startup
@@ -1836,7 +1842,7 @@
@end table
@c @end group

-Here are three miscellaneous @code{show} subcommands, all of which are
+Here are several miscellaneous @code{show} subcommands, all of which are
exceptional in lacking corresponding @code{set} commands:

@table @code
@@ -1867,6 +1873,15 @@
Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
if your version of @value{GDBN} comes with one.

+@kindex show configuration
+@item show configuration
+Display detailed information about the way @value{GDBN} was configured
+when it was built. This displays the optional arguments passed to the
+@file{configure} script and also configuration parameters detected
+automatically by @command{configure}. When reporting a @value{GDBN}
+bug (@pxref{GDB Bugs}), it is important to include this information in
+your report.
+
@end table

@node Running
@@ -34650,6 +34665,12 @@
version number.

@item
+The details of the @value{GDBN} build-time configuration.
+@value{GDBN} shows these details if you invoke it with the
+@option{--configuration} command-line option, or if you type
+@code{show configuration} at @value{GDBN}'s prompt.
+
+@item
What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
``@value{GCC}--2.8.1''.

--- gdb/NEWS 9 Apr 2013 08:04:32 -0000
+++ gdb/NEWS 9 Apr 2013 16:13:15 -0000
@@ -4,12 +4,19 @@
*** Changes since GDB 7.6

* New commands:
+show configuration
+ Display the details of GDB configure-time options.
+
maint set|show per-command
maint set|show per-command space
maint set|show per-command time
maint set|show per-command symtab
Enable display of per-command gdb resource usage.

+* New command-line options
+--configuration
+ Display the details of GDB configure-time options.
+
* New options

set remote trace-status-packet