| Index: gdb/top.c
|
| diff --git a/gdb/top.c b/gdb/top.c
|
| index 061ad48f41e756cc22032490543f7a77037e8d10..8ce1a9fd383aaf95e687460129d9d1eb513ef37e 100644
|
| --- a/gdb/top.c
|
| +++ b/gdb/top.c
|
| @@ -1,6 +1,6 @@
|
| /* Top level stuff for GDB, the GNU debugger.
|
|
|
| - Copyright (C) 1986-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 1986-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -19,7 +19,6 @@
|
|
|
| #include "defs.h"
|
| #include "gdbcmd.h"
|
| -#include "call-cmds.h"
|
| #include "cli/cli-cmds.h"
|
| #include "cli/cli-script.h"
|
| #include "cli/cli-setshow.h"
|
| @@ -29,6 +28,7 @@
|
| #include "exceptions.h"
|
| #include <signal.h>
|
| #include "target.h"
|
| +#include "target-dcache.h"
|
| #include "breakpoint.h"
|
| #include "gdbtypes.h"
|
| #include "expression.h"
|
| @@ -48,6 +48,8 @@
|
| #include "python/python.h"
|
| #include "interps.h"
|
| #include "observer.h"
|
| +#include "maint.h"
|
| +#include "filenames.h"
|
|
|
| /* readline include files. */
|
| #include "readline/readline.h"
|
| @@ -59,11 +61,14 @@
|
| #include <sys/types.h>
|
|
|
| #include "event-top.h"
|
| -#include "gdb_string.h"
|
| -#include "gdb_stat.h"
|
| +#include <string.h>
|
| +#include <sys/stat.h>
|
| #include <ctype.h>
|
| #include "ui-out.h"
|
| #include "cli-out.h"
|
| +#include "tracepoint.h"
|
| +
|
| +extern void initialize_all_files (void);
|
|
|
| #define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
|
| #define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
|
| @@ -75,20 +80,9 @@
|
| #define DEFAULT_PROMPT "(gdb) "
|
| #endif
|
|
|
| -/* Initialization file name for gdb. This is overridden in some configs. */
|
| -
|
| -#ifndef PATH_MAX
|
| -# ifdef FILENAME_MAX
|
| -# define PATH_MAX FILENAME_MAX
|
| -# else
|
| -# define PATH_MAX 512
|
| -# endif
|
| -#endif
|
| +/* Initialization file name for gdb. This is host-dependent. */
|
|
|
| -#ifndef GDBINIT_FILENAME
|
| -#define GDBINIT_FILENAME ".gdbinit"
|
| -#endif
|
| -char gdbinit[PATH_MAX + 1] = GDBINIT_FILENAME;
|
| +const char gdbinit[] = GDBINIT;
|
|
|
| int inhibit_gdbinit = 0;
|
|
|
| @@ -137,9 +131,6 @@ char gdb_dirbuf[1024];
|
|
|
| void (*window_hook) (FILE *, char *);
|
|
|
| -int epoch_interface;
|
| -int xgdb_verbose;
|
| -
|
| /* Buffer used for reading command lines, and the size
|
| allocated for it so far. */
|
|
|
| @@ -154,13 +145,6 @@ int saved_command_line_size = 100;
|
| is issuing commands too. */
|
| int server_command;
|
|
|
| -/* Baud rate specified for talking to serial target systems. Default
|
| - is left as -1, so targets can choose their own defaults. */
|
| -/* FIXME: This means that "show remotebaud" and gr_files_info can
|
| - print -1 or (unsigned int)-1. This is a Bad User Interface. */
|
| -
|
| -int baud_rate = -1;
|
| -
|
| /* Timeout limit for response from target. */
|
|
|
| /* The default value has been changed many times over the years. It
|
| @@ -209,11 +193,6 @@ void (*deprecated_init_ui_hook) (char *argv0);
|
|
|
| int (*deprecated_ui_loop_hook) (int);
|
|
|
| -/* Called instead of command_loop at top level. Can be invoked via
|
| - throw_exception(). */
|
| -
|
| -void (*deprecated_command_loop_hook) (void);
|
| -
|
|
|
| /* Called from print_frame_info to list the line we stopped in. */
|
|
|
| @@ -336,7 +315,7 @@ read_command_file (FILE *stream)
|
| void (*pre_init_ui_hook) (void);
|
|
|
| #ifdef __MSDOS__
|
| -void
|
| +static void
|
| do_chdir_cleanup (void *old_dir)
|
| {
|
| chdir (old_dir);
|
| @@ -425,6 +404,7 @@ execute_command (char *p, int from_tty)
|
| if (p == NULL)
|
| {
|
| do_cleanups (cleanup);
|
| + discard_cleanups (cleanup_if_error);
|
| return;
|
| }
|
|
|
| @@ -434,13 +414,15 @@ execute_command (char *p, int from_tty)
|
| p++;
|
| if (*p)
|
| {
|
| + const char *cmd = p;
|
| char *arg;
|
| line = p;
|
|
|
| /* If trace-commands is set then this will print this command. */
|
| print_command_trace (p);
|
|
|
| - c = lookup_cmd (&p, cmdlist, "", 0, 1);
|
| + c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
|
| + p = (char *) cmd;
|
|
|
| /* Pass null arg rather than an empty one. */
|
| arg = *p ? p : 0;
|
| @@ -469,13 +451,15 @@ execute_command (char *p, int from_tty)
|
| execute_cmd_pre_hook (c);
|
|
|
| if (c->flags & DEPRECATED_WARN_USER)
|
| - deprecated_cmd_warning (&line);
|
| + deprecated_cmd_warning (line);
|
|
|
| /* c->user_commands would be NULL in the case of a python command. */
|
| if (c->class == class_user && c->user_commands)
|
| execute_user_command (c, arg);
|
| - else if (c->type == set_cmd || c->type == show_cmd)
|
| - do_setshow_command (arg, from_tty, c);
|
| + else if (c->type == set_cmd)
|
| + do_set_command (arg, from_tty, c);
|
| + else if (c->type == show_cmd)
|
| + do_show_command (arg, from_tty, c);
|
| else if (!cmd_func_p (c))
|
| error (_("That is not a command, just a help topic."));
|
| else if (deprecated_call_command_hook)
|
| @@ -567,7 +551,7 @@ command_loop (void)
|
| if (window_hook && instream == stdin)
|
| (*window_hook) (instream, get_prompt ());
|
|
|
| - quit_flag = 0;
|
| + clear_quit_flag ();
|
| if (instream == stdin && stdin_is_tty)
|
| reinitialize_more_filter ();
|
| old_chain = make_cleanup (null_cleanup, 0);
|
| @@ -708,7 +692,10 @@ show_write_history_p (struct ui_file *file, int from_tty,
|
| value);
|
| }
|
|
|
| -static int history_size;
|
| +/* The variable associated with the "set/show history size"
|
| + command. */
|
| +static unsigned int history_size_setshow_var;
|
| +
|
| static void
|
| show_history_size (struct ui_file *file, int from_tty,
|
| struct cmd_list_element *c, const char *value)
|
| @@ -873,13 +860,8 @@ gdb_rl_operate_and_get_next (int count, int key)
|
| /* Find the current line, and find the next line to use. */
|
| where = where_history();
|
|
|
| - /* FIXME: kettenis/20020817: max_input_history is renamed into
|
| - history_max_entries in readline-4.2. When we do a new readline
|
| - import, we should probably change it here too, even though
|
| - readline maintains backwards compatibility for now by still
|
| - defining max_input_history. */
|
| - if ((history_is_stifled () && (history_length >= max_input_history)) ||
|
| - (where >= history_length - 1))
|
| + if ((history_is_stifled () && (history_length >= history_max_entries))
|
| + || (where >= history_length - 1))
|
| operate_saved_history = where;
|
| else
|
| operate_saved_history = where + 1;
|
| @@ -942,6 +924,7 @@ command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
|
| /* Control-C quits instantly if typed while in this loop
|
| since it should not wait until the user types a newline. */
|
| immediate_quit++;
|
| + QUIT;
|
| #ifdef STOP_SIGNAL
|
| if (job_control)
|
| signal (STOP_SIGNAL, handle_stop_sig);
|
| @@ -1079,8 +1062,7 @@ command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
|
| *p = 0;
|
|
|
| /* Add line to history if appropriate. */
|
| - if (instream == stdin
|
| - && ISATTY (stdin) && *linebuffer)
|
| + if (*linebuffer && input_from_terminal_p ())
|
| add_history (linebuffer);
|
|
|
| /* Note: lines consisting solely of comments are added to the command
|
| @@ -1120,7 +1102,7 @@ print_gdb_version (struct ui_file *stream)
|
| /* Second line is a copyright notice. */
|
|
|
| fprintf_filtered (stream,
|
| - "Copyright (C) 2012 Free Software Foundation, Inc.\n");
|
| + "Copyright (C) 2013 Free Software Foundation, Inc.\n");
|
|
|
| /* Following the copyright is a brief statement that the program is
|
| free software, that users are free to copy and change it on
|
| @@ -1145,14 +1127,121 @@ 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);
|
| + fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
|
| }
|
| + fprintf_filtered (stream,
|
| + _("Find the GDB manual and other documentation \
|
| +resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"));
|
| + fprintf_filtered (stream, _("For help, type \"help\".\n"));
|
| + fprintf_filtered (stream, _("Type \"apropos word\" to search for \
|
| +commands related to \"word\"."));
|
| +}
|
| +
|
| +/* 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
|
| +#if HAVE_LIBBABELTRACE
|
| + fprintf_filtered (stream, _("\
|
| + --with-babeltrace\n\
|
| +"));
|
| +#else
|
| + fprintf_filtered (stream, _("\
|
| + --without-babeltrace\n\
|
| +"));
|
| +#endif
|
| + /* We assume "relocatable" will be printed at least once, thus we always
|
| + print this text. It's a reasonably safe assumption for now. */
|
| + fprintf_filtered (stream, _("\n\
|
| +(\"Relocatable\" means the directory can be moved with the GDB installation\n\
|
| +tree, and GDB will still find it.)\n\
|
| +"));
|
| }
|
|
|
|
|
| @@ -1259,18 +1348,9 @@ quit_confirm (void)
|
| stb = mem_fileopen ();
|
| old_chain = make_cleanup_ui_file_delete (stb);
|
|
|
| - /* This is something of a hack. But there's no reliable way to see
|
| - if a GUI is running. The `use_windows' variable doesn't cut
|
| - it. */
|
| - if (deprecated_init_ui_hook)
|
| - fprintf_filtered (stb, _("A debugging session is active.\n"
|
| - "Do you still want to close the debugger?"));
|
| - else
|
| - {
|
| - fprintf_filtered (stb, _("A debugging session is active.\n\n"));
|
| - iterate_over_inferiors (print_inferior_quit_action, stb);
|
| - fprintf_filtered (stb, _("\nQuit anyway? "));
|
| - }
|
| + fprintf_filtered (stb, _("A debugging session is active.\n\n"));
|
| + iterate_over_inferiors (print_inferior_quit_action, stb);
|
| + fprintf_filtered (stb, _("\nQuit anyway? "));
|
|
|
| str = ui_file_xstrdup (stb, NULL);
|
| make_cleanup (xfree, str);
|
| @@ -1280,29 +1360,6 @@ quit_confirm (void)
|
| return qr;
|
| }
|
|
|
| -/* Helper routine for quit_force that requires error handling. */
|
| -
|
| -static int
|
| -quit_target (void *arg)
|
| -{
|
| - struct qt_args *qt = (struct qt_args *)arg;
|
| -
|
| - /* Kill or detach all inferiors. */
|
| - iterate_over_inferiors (kill_or_detach, qt);
|
| -
|
| - /* Give all pushed targets a chance to do minimal cleanup, and pop
|
| - them all out. */
|
| - pop_all_targets (1);
|
| -
|
| - /* Save the history information if it is appropriate to do so. */
|
| - if (write_history_p && history_filename)
|
| - write_history (history_filename);
|
| -
|
| - do_final_cleanups (all_cleanups ()); /* Do any final cleanups before
|
| - exiting. */
|
| - return 0;
|
| -}
|
| -
|
| /* Quit without asking for confirmation. */
|
|
|
| void
|
| @@ -1310,6 +1367,7 @@ quit_force (char *args, int from_tty)
|
| {
|
| int exit_code = 0;
|
| struct qt_args qt;
|
| + volatile struct gdb_exception ex;
|
|
|
| /* An optional expression may be used to cause gdb to terminate with the
|
| value of that expression. */
|
| @@ -1325,9 +1383,47 @@ quit_force (char *args, int from_tty)
|
| qt.args = args;
|
| qt.from_tty = from_tty;
|
|
|
| + /* Wrappers to make the code below a bit more readable. */
|
| +#define DO_TRY \
|
| + TRY_CATCH (ex, RETURN_MASK_ALL)
|
| +
|
| +#define DO_PRINT_EX \
|
| + if (ex.reason < 0) \
|
| + exception_print (gdb_stderr, ex)
|
| +
|
| /* We want to handle any quit errors and exit regardless. */
|
| - catch_errors (quit_target, &qt,
|
| - "Quitting: ", RETURN_MASK_ALL);
|
| +
|
| + /* Get out of tfind mode, and kill or detach all inferiors. */
|
| + DO_TRY
|
| + {
|
| + disconnect_tracing ();
|
| + iterate_over_inferiors (kill_or_detach, &qt);
|
| + }
|
| + DO_PRINT_EX;
|
| +
|
| + /* Give all pushed targets a chance to do minimal cleanup, and pop
|
| + them all out. */
|
| + DO_TRY
|
| + {
|
| + pop_all_targets ();
|
| + }
|
| + DO_PRINT_EX;
|
| +
|
| + /* Save the history information if it is appropriate to do so. */
|
| + DO_TRY
|
| + {
|
| + if (write_history_p && history_filename
|
| + && input_from_terminal_p ())
|
| + write_history (history_filename);
|
| + }
|
| + DO_PRINT_EX;
|
| +
|
| + /* Do any final cleanups before exiting. */
|
| + DO_TRY
|
| + {
|
| + do_final_cleanups (all_cleanups ());
|
| + }
|
| + DO_PRINT_EX;
|
|
|
| exit (exit_code);
|
| }
|
| @@ -1375,21 +1471,7 @@ show_commands (char *args, int from_tty)
|
| Relative to history_base. */
|
| static int num = 0;
|
|
|
| - /* The first command in the history which doesn't exist (i.e. one more
|
| - than the number of the last command). Relative to history_base. */
|
| - int hist_len;
|
| -
|
| /* Print out some of the commands from the command history. */
|
| - /* First determine the length of the history list. */
|
| - hist_len = history_size;
|
| - for (offset = 0; offset < history_size; offset++)
|
| - {
|
| - if (!history_get (history_base + offset))
|
| - {
|
| - hist_len = offset;
|
| - break;
|
| - }
|
| - }
|
|
|
| if (args)
|
| {
|
| @@ -1403,7 +1485,7 @@ show_commands (char *args, int from_tty)
|
| /* "show commands" means print the last Hist_print commands. */
|
| else
|
| {
|
| - num = hist_len - Hist_print;
|
| + num = history_length - Hist_print;
|
| }
|
|
|
| if (num < 0)
|
| @@ -1411,14 +1493,16 @@ show_commands (char *args, int from_tty)
|
|
|
| /* If there are at least Hist_print commands, we want to display the last
|
| Hist_print rather than, say, the last 6. */
|
| - if (hist_len - num < Hist_print)
|
| + if (history_length - num < Hist_print)
|
| {
|
| - num = hist_len - Hist_print;
|
| + num = history_length - Hist_print;
|
| if (num < 0)
|
| num = 0;
|
| }
|
|
|
| - for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
|
| + for (offset = num;
|
| + offset < num + Hist_print && offset < history_length;
|
| + offset++)
|
| {
|
| printf_filtered ("%5d %s\n", history_base + offset,
|
| (history_get (history_base + offset))->line);
|
| @@ -1442,15 +1526,30 @@ show_commands (char *args, int from_tty)
|
| static void
|
| set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
|
| {
|
| - if (history_size == INT_MAX)
|
| - unstifle_history ();
|
| - else if (history_size >= 0)
|
| - stifle_history (history_size);
|
| - else
|
| + /* Readline's history interface works with 'int', so it can only
|
| + handle history sizes up to INT_MAX. The command itself is
|
| + uinteger, so UINT_MAX means "unlimited", but we only get that if
|
| + the user does "set history size 0" -- "set history size <UINT_MAX>"
|
| + throws out-of-range. */
|
| + if (history_size_setshow_var > INT_MAX
|
| + && history_size_setshow_var != UINT_MAX)
|
| {
|
| - history_size = INT_MAX;
|
| - error (_("History size must be non-negative"));
|
| + unsigned int new_value = history_size_setshow_var;
|
| +
|
| + /* Restore previous value before throwing. */
|
| + if (history_is_stifled ())
|
| + history_size_setshow_var = history_max_entries;
|
| + else
|
| + history_size_setshow_var = UINT_MAX;
|
| +
|
| + error (_("integer %u out of range"), new_value);
|
| }
|
| +
|
| + /* Commit the new value to readline's history. */
|
| + if (history_size_setshow_var == UINT_MAX)
|
| + unstifle_history ();
|
| + else
|
| + stifle_history (history_size_setshow_var);
|
| }
|
|
|
| void
|
| @@ -1473,7 +1572,7 @@ int info_verbose = 0; /* Default verbose msgs off. */
|
| void
|
| set_verbose (char *args, int from_tty, struct cmd_list_element *c)
|
| {
|
| - char *cmdname = "verbose";
|
| + const char *cmdname = "verbose";
|
| struct cmd_list_element *showcmd;
|
|
|
| showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
|
| @@ -1503,11 +1602,27 @@ init_history (void)
|
|
|
| tmpenv = getenv ("HISTSIZE");
|
| if (tmpenv)
|
| - history_size = atoi (tmpenv);
|
| - else if (!history_size)
|
| - history_size = 256;
|
| + {
|
| + int var;
|
| +
|
| + var = atoi (tmpenv);
|
| + if (var < 0)
|
| + {
|
| + /* Prefer ending up with no history rather than overflowing
|
| + readline's history interface, which uses signed 'int'
|
| + everywhere. */
|
| + var = 0;
|
| + }
|
| +
|
| + history_size_setshow_var = var;
|
| + }
|
| + /* If the init file hasn't set a size yet, pick the default. */
|
| + else if (history_size_setshow_var == 0)
|
| + history_size_setshow_var = 256;
|
|
|
| - stifle_history (history_size);
|
| + /* Note that unlike "set history size 0", "HISTSIZE=0" really sets
|
| + the history size to 0... */
|
| + stifle_history (history_size_setshow_var);
|
|
|
| tmpenv = getenv ("GDBHISTFILE");
|
| if (tmpenv)
|
| @@ -1570,6 +1685,17 @@ set_gdb_datadir (char *args, int from_tty, struct cmd_list_element *c)
|
| }
|
|
|
| static void
|
| +set_history_filename (char *args, int from_tty, struct cmd_list_element *c)
|
| +{
|
| + /* We include the current directory so that if the user changes
|
| + directories the file written will be the same as the one
|
| + that was read. */
|
| + if (!IS_ABSOLUTE_PATH (history_filename))
|
| + history_filename = reconcat (history_filename, current_directory, "/",
|
| + history_filename, (char *) NULL);
|
| +}
|
| +
|
| +static void
|
| init_main (void)
|
| {
|
| /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
|
| @@ -1630,19 +1756,22 @@ Without an argument, saving is enabled."),
|
| show_write_history_p,
|
| &sethistlist, &showhistlist);
|
|
|
| - add_setshow_integer_cmd ("size", no_class, &history_size, _("\
|
| + add_setshow_uinteger_cmd ("size", no_class, &history_size_setshow_var, _("\
|
| Set the size of the command history,"), _("\
|
| Show the size of the command history,"), _("\
|
| -ie. the number of previous commands to keep a record of."),
|
| - set_history_size_command,
|
| - show_history_size,
|
| - &sethistlist, &showhistlist);
|
| +ie. the number of previous commands to keep a record of.\n\
|
| +If set to \"unlimited\", the number of commands kept in the history\n\
|
| +list is unlimited. This defaults to the value of the environment\n\
|
| +variable \"HISTSIZE\", or to 256 if this variable is not set."),
|
| + set_history_size_command,
|
| + show_history_size,
|
| + &sethistlist, &showhistlist);
|
|
|
| add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
|
| Set the filename in which to record the command history"), _("\
|
| Show the filename in which to record the command history"), _("\
|
| (the list of previous commands of which a record is kept)."),
|
| - NULL,
|
| + set_history_filename,
|
| show_history_filename,
|
| &sethistlist, &showhistlist);
|
|
|
| @@ -1711,6 +1840,7 @@ gdb_init (char *argv0)
|
| initialize_inferiors ();
|
| initialize_current_architecture ();
|
| init_cli_cmds();
|
| + initialize_event_loop ();
|
| init_main (); /* But that omits this file! Do it now. */
|
|
|
| initialize_stdin_serial ();
|
|
|