From 6eaaf48b1c3ff871cdcd180c172a72271fe29588 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 12 Apr 2013 08:57:07 +0000 Subject: [PATCH] Implement a new command to show GDB build-time configuration parameters. * 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) : New static var. : Use it. If --configuration was given, call print_gdb_configuration. * doc/gdb.texinfo (Mode Options): Document '-configuration'. (Help): Document "show configuration". (Bug Reporting): Add requirements to include the configuration details in bug reports. --- gdb/ChangeLog | 13 +++++++ gdb/cli/cli-cmds.c | 9 +++++ gdb/doc/ChangeLog | 7 ++++ gdb/doc/gdb.texinfo | 23 +++++++++++- gdb/main.c | 16 +++++++- gdb/top.c | 90 ++++++++++++++++++++++++++++++++++++++++++++- gdb/top.h | 1 + 7 files changed, 154 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index eaf9d04288..c903714cdf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2013-04-12 Eli Zaretskii + + * 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) : New static var. + : Use it. + If --configuration was given, call print_gdb_configuration. + 2013-04-11 Jan Kratochvil Pedro Alves diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index c4721bdf12..a5b2572d74 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -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, _("\ diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index d62a5a69c4..186e3d7d18 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,10 @@ +2013-04-12 Eli Zaretskii + + * gdb.texinfo (Mode Options): Document '-configuration'. + (Help): Document "show configuration". + (Bug Reporting): Add requirements to include the configuration + details in bug reports. + 2013-04-11 Jan Kratochvil * Makefile.in (MAN1S): Add gcore.1. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 97d88ec6c3..fa37b8212f 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1268,6 +1268,12 @@ memory usage after it completes each command and returns to the prompt. 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 @@ -1841,7 +1847,7 @@ values, you can use @code{show} with no arguments; you may also use @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 @@ -1872,6 +1878,15 @@ Display information about permission for copying @value{GDBN}. 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 @@ -34616,6 +34631,12 @@ the bug in the current version of @value{GDBN}. The type of machine you are using, and the operating system name and 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''. diff --git a/gdb/main.c b/gdb/main.c index 8823c8247e..531a2c3561 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -321,6 +321,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; @@ -483,6 +484,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}, @@ -726,8 +728,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; } @@ -818,6 +821,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 @@ -1129,6 +1140,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\ diff --git a/gdb/top.c b/gdb/top.c index 72fbebd865..6a402bac86 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -1148,15 +1148,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 +} /* The current top level prompt, settable with "set prompt", and/or diff --git a/gdb/top.h b/gdb/top.h index 2131026fda..44aefb1fa9 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -31,6 +31,7 @@ extern int inhibit_gdbinit; 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); -- 2.34.1