GDB (xrefs)
/tmp/gdb-8.1/gdb/top.c
Go to the documentation of this file.
1 /* Top level stuff for GDB, the GNU debugger.
2 
3  Copyright (C) 1986-2018 Free Software Foundation, Inc.
4 
5  This file is part of GDB.
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 
20 #include "defs.h"
21 #include "gdbcmd.h"
22 #include "cli/cli-cmds.h"
23 #include "cli/cli-script.h"
24 #include "cli/cli-setshow.h"
25 #include "cli/cli-decode.h"
26 #include "symtab.h"
27 #include "inferior.h"
28 #include "infrun.h"
29 #include <signal.h>
30 #include "target.h"
31 #include "target-dcache.h"
32 #include "breakpoint.h"
33 #include "gdbtypes.h"
34 #include "expression.h"
35 #include "value.h"
36 #include "language.h"
37 #include "terminal.h" /* For job_control. */
38 #include "job-control.h"
39 #include "annotate.h"
40 #include "completer.h"
41 #include "top.h"
42 #include "version.h"
43 #include "serial.h"
44 #include "main.h"
45 #include "event-loop.h"
46 #include "gdbthread.h"
47 #include "extension.h"
48 #include "interps.h"
49 #include "observer.h"
50 #include "maint.h"
51 #include "filenames.h"
52 #include "frame.h"
53 #include "buffer.h"
54 #include "gdb_select.h"
55 
56 /* readline include files. */
57 #include "readline/readline.h"
58 #include "readline/history.h"
59 
60 /* readline defines this. */
61 #undef savestring
62 
63 #include <sys/types.h>
64 
65 #include "event-top.h"
66 #include <sys/stat.h>
67 #include <ctype.h>
68 #include "ui-out.h"
69 #include "cli-out.h"
70 #include "tracepoint.h"
71 #include "inf-loop.h"
72 
73 #if defined(TUI)
74 # include "tui/tui.h"
75 #endif
76 
77 #ifndef O_NOCTTY
78 # define O_NOCTTY 0
79 #endif
80 
81 extern void initialize_all_files (void);
82 
83 #define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
84 #define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
85 #define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
86 
87 /* Default command line prompt. This is overriden in some configs. */
88 
89 #ifndef DEFAULT_PROMPT
90 #define DEFAULT_PROMPT "(gdb) "
91 #endif
92 
93 /* Generate a function that exports a pointer to a field of the
94  current UI. */
95 
96 #define gen_ret_current_ui_field_ptr(type, name) \
97 type * \
98 current_ui_## name ## _ptr (void) \
99 { \
100  return &current_ui->m_ ## name; \
101 }
102 
108 
109 /* Initialization file name for gdb. This is host-dependent. */
110 
111 const char gdbinit[] = GDBINIT;
112 
113 int inhibit_gdbinit = 0;
114 
115 extern char lang_frame_mismatch_warn[]; /* language.c */
116 
117 /* Flag for whether we want to confirm potentially dangerous
118  operations. Default is yes. */
119 
120 int confirm = 1;
121 
122 static void
123 show_confirm (struct ui_file *file, int from_tty,
124  struct cmd_list_element *c, const char *value)
125 {
126  fprintf_filtered (file, _("Whether to confirm potentially "
127  "dangerous operations is %s.\n"),
128  value);
129 }
130 
131 /* Current working directory. */
132 
134 
135 /* The last command line executed on the console. Used for command
136  repetitions. */
138 
139 /* Nonzero if the current command is modified by "server ". This
140  affects things like recording into the command history, commands
141  repeating on RETURN, etc. This is so a user interface (emacs, GUI,
142  whatever) can issue its own commands and also send along commands
143  from the user, and have the user not notice that the user interface
144  is issuing commands too. */
146 
147 /* Timeout limit for response from target. */
148 
149 /* The default value has been changed many times over the years. It
150  was originally 5 seconds. But that was thought to be a long time
151  to sit and wait, so it was changed to 2 seconds. That was thought
152  to be plenty unless the connection was going through some terminal
153  server or multiplexer or other form of hairy serial connection.
154 
155  In mid-1996, remote_timeout was moved from remote.c to top.c and
156  it began being used in other remote-* targets. It appears that the
157  default was changed to 20 seconds at that time, perhaps because the
158  Renesas E7000 ICE didn't always respond in a timely manner.
159 
160  But if 5 seconds is a long time to sit and wait for retransmissions,
161  20 seconds is far worse. This demonstrates the difficulty of using
162  a single variable for all protocol timeouts.
163 
164  As remote.c is used much more than remote-e7000.c, it was changed
165  back to 2 seconds in 1999. */
166 
168 
169 /* Non-zero tells remote* modules to output debugging info. */
170 
171 int remote_debug = 0;
172 
173 /* Sbrk location on entry to main. Used for statistics only. */
174 #ifdef HAVE_SBRK
176 #endif
177 
178 /* Hooks for alternate command interfaces. */
179 
180 /* This hook is called from within gdb's many mini-event loops which
181  could steal control from a real user interface's event loop. It
182  returns non-zero if the user is requesting a detach, zero
183  otherwise. */
184 
186 
187 
188 /* Called from print_frame_info to list the line we stopped in. */
189 
191  int line,
192  int stopline,
193  int noerror);
194 /* Replaces most of query. */
195 
196 int (*deprecated_query_hook) (const char *, va_list);
197 
198 /* Replaces most of warning. */
199 
200 void (*deprecated_warning_hook) (const char *, va_list);
201 
202 /* These three functions support getting lines of text from the user.
203  They are used in sequence. First deprecated_readline_begin_hook is
204  called with a text string that might be (for example) a message for
205  the user to type in a sequence of commands to be executed at a
206  breakpoint. If this function calls back to a GUI, it might take
207  this opportunity to pop up a text interaction window with this
208  message. Next, deprecated_readline_hook is called with a prompt
209  that is emitted prior to collecting the user input. It can be
210  called multiple times. Finally, deprecated_readline_end_hook is
211  called to notify the GUI that we are done with the interaction
212  window and it can close it. */
213 
214 void (*deprecated_readline_begin_hook) (const char *, ...);
215 char *(*deprecated_readline_hook) (const char *);
217 
218 /* Called as appropriate to notify the interface that we have attached
219  to or detached from an already running process. */
220 
221 void (*deprecated_attach_hook) (void);
222 void (*deprecated_detach_hook) (void);
223 
224 /* Called during long calculations to allow GUI to repair window
225  damage, and to check for stop buttons, etc... */
226 
228 
229 /* Called when going to wait for the target. Usually allows the GUI
230  to run while waiting for target events. */
231 
233  struct target_waitstatus *status,
234  int options);
235 
236 /* Used by UI as a wrapper around command execution. May do various
237  things like enabling/disabling buttons, etc... */
238 
240  const char *cmd, int from_tty);
241 
242 /* Called when the current thread changes. Argument is thread id. */
243 
244 void (*deprecated_context_hook) (int id);
245 
246 /* The highest UI number ever assigned. */
247 static int highest_ui_num;
248 
249 /* See top.h. */
250 
251 ui::ui (FILE *instream_, FILE *outstream_, FILE *errstream_)
252  : next (nullptr),
253  num (++highest_ui_num),
254  call_readline (nullptr),
255  input_handler (nullptr),
256  command_editing (0),
257  interp_info (nullptr),
258  async (0),
259  secondary_prompt_depth (0),
260  stdin_stream (instream_),
261  instream (instream_),
262  outstream (outstream_),
263  errstream (errstream_),
264  input_fd (fileno (instream)),
265  input_interactive_p (ISATTY (instream)),
267  m_gdb_stdout (new stdio_file (outstream)),
268  m_gdb_stdin (new stdio_file (instream)),
269  m_gdb_stderr (new stderr_file (errstream)),
270  m_gdb_stdlog (m_gdb_stderr),
271  m_current_uiout (nullptr)
272 {
274 
275  if (ui_list == NULL)
276  ui_list = this;
277  else
278  {
279  struct ui *last;
280 
281  for (last = ui_list; last->next != NULL; last = last->next)
282  ;
283  last->next = this;
284  }
285 }
286 
288 {
289  struct ui *ui, *uiprev;
290 
291  uiprev = NULL;
292 
293  for (ui = ui_list; ui != NULL; uiprev = ui, ui = ui->next)
294  if (ui == this)
295  break;
296 
297  gdb_assert (ui != NULL);
298 
299  if (uiprev != NULL)
300  uiprev->next = next;
301  else
302  ui_list = next;
303 
304  delete m_gdb_stdin;
305  delete m_gdb_stdout;
306  delete m_gdb_stderr;
307 }
308 
309 /* Open file named NAME for read/write, making sure not to make it the
310  controlling terminal. */
311 
312 static gdb_file_up
314 {
315  int fd;
316 
317  fd = gdb_open_cloexec (name, O_RDWR | O_NOCTTY, 0);
318  if (fd < 0)
319  perror_with_name (_("opening terminal failed"));
320 
321  return gdb_file_up (fdopen (fd, "w+"));
322 }
323 
324 /* Implementation of the "new-ui" command. */
325 
326 static void
327 new_ui_command (const char *args, int from_tty)
328 {
329  gdb_file_up stream[3];
330  int i;
331  int argc;
332  const char *interpreter_name;
333  const char *tty_name;
334 
335  dont_repeat ();
336 
337  gdb_argv argv (args);
338  argc = argv.count ();
339 
340  if (argc < 2)
341  error (_("usage: new-ui <interpreter> <tty>"));
342 
343  interpreter_name = argv[0];
344  tty_name = argv[1];
345 
346  {
348 
349  /* Open specified terminal, once for each of
350  stdin/stdout/stderr. */
351  for (i = 0; i < 3; i++)
352  stream[i] = open_terminal_stream (tty_name);
353 
354  std::unique_ptr<ui> ui
355  (new struct ui (stream[0].get (), stream[1].get (), stream[2].get ()));
356 
357  ui->async = 1;
358 
359  current_ui = ui.get ();
360 
361  set_top_level_interpreter (interpreter_name);
362 
364 
365  /* Make sure the files are not closed. */
366  stream[0].release ();
367  stream[1].release ();
368  stream[2].release ();
369 
370  ui.release ();
371  }
372 
373  printf_unfiltered ("New UI allocated\n");
374 }
375 
376 /* Handler for SIGHUP. */
377 
378 #ifdef SIGHUP
379 /* NOTE 1999-04-29: This function will be static again, once we modify
380  gdb to use the event loop as the default command loop and we merge
381  event-top.c into this file, top.c. */
382 /* static */ void
383 quit_cover (void)
384 {
385  /* Stop asking user for confirmation --- we're exiting. This
386  prevents asking the user dumb questions. */
387  confirm = 0;
388  quit_command ((char *) 0, 0);
389 }
390 #endif /* defined SIGHUP */
391 
392 /* Line number we are currently in, in a file which is being sourced. */
393 /* NOTE 1999-04-29: This variable will be static again, once we modify
394  gdb to use the event loop as the default command loop and we merge
395  event-top.c into this file, top.c. */
396 /* static */ int source_line_number;
397 
398 /* Name of the file we are sourcing. */
399 /* NOTE 1999-04-29: This variable will be static again, once we modify
400  gdb to use the event loop as the default command loop and we merge
401  event-top.c into this file, top.c. */
402 /* static */ const char *source_file_name;
403 
404 /* Read commands from STREAM. */
405 void
406 read_command_file (FILE *stream)
407 {
408  struct ui *ui = current_ui;
409 
410  scoped_restore save_instream
411  = make_scoped_restore (&ui->instream, stream);
412 
413  /* Read commands from `instream' and execute them until end of file
414  or error reading instream. */
415 
416  while (ui->instream != NULL && !feof (ui->instream))
417  {
418  char *command;
419 
420  /* Get a command-line. This calls the readline package. */
421  command = command_line_input (NULL, 0, NULL);
422  if (command == NULL)
423  break;
424  command_handler (command);
425  }
426 }
427 
428 void (*pre_init_ui_hook) (void);
429 
430 #ifdef __MSDOS__
431 static void
432 do_chdir_cleanup (void *old_dir)
433 {
434  chdir ((const char *) old_dir);
435  xfree (old_dir);
436 }
437 #endif
438 
441 {
442  /* With multiple threads running while the one we're examining is
443  stopped, the dcache can get stale without us being able to detect
444  it. For the duration of the command, though, use the dcache to
445  help things like backtrace. */
446  if (non_stop)
448 
449  return scoped_value_mark ();
450 }
451 
452 /* Tell the user if the language has changed (except first time) after
453  executing a command. */
454 
455 void
457 {
458  static int warned = 0;
459  struct frame_info *frame;
460 
461  /* First make sure that a new frame has been selected, in case the
462  command or the hooks changed the program state. */
465  {
467  {
468  language_info (1); /* Print what changed. */
469  }
470  warned = 0;
471  }
472 
473  /* Warn the user if the working language does not match the language
474  of the current frame. Only warn the user if we are actually
475  running the program, i.e. there is a stack. */
476  /* FIXME: This should be cacheing the frame and only running when
477  the frame changes. */
478 
479  if (has_stack_frames ())
480  {
481  enum language flang;
482 
483  flang = get_frame_language (frame);
484  if (!warned
485  && flang != language_unknown
486  && flang != current_language->la_language)
487  {
489  warned = 1;
490  }
491  }
492 }
493 
494 /* See top.h. */
495 
496 void
498 {
499  /* Processing events may change the current UI. */
501  struct ui *ui = current_ui;
502 
503  while (gdb_do_one_event () >= 0)
505  break;
506 }
507 
508 /* See top.h. */
509 
510 void
512 {
513  /* If the interpreter is in sync mode (we're running a user
514  command's list, running command hooks or similars), and we
515  just ran a synchronous command that started the target, wait
516  for that command to end. */
517  if (!current_ui->async
518  && !was_sync
521 }
522 
523 /* If not NULL, the arguments that should be passed if the current
524  command is repeated. */
525 
526 static const char *repeat_arguments;
527 
528 /* See command.h. */
529 
530 void
531 set_repeat_arguments (const char *args)
532 {
533  repeat_arguments = args;
534 }
535 
536 /* Execute the line P as a command, in the current user context.
537  Pass FROM_TTY as second argument to the defining function. */
538 
539 void
540 execute_command (const char *p, int from_tty)
541 {
542  struct cleanup *cleanup_if_error;
543  struct cmd_list_element *c;
544  const char *line;
545  const char *cmd_start = p;
546 
547  cleanup_if_error = make_bpstat_clear_actions_cleanup ();
549 
550  /* Force cleanup of any alloca areas if using C alloca instead of
551  a builtin alloca. */
552  alloca (0);
553 
554  /* This can happen when command_line_input hits end of file. */
555  if (p == NULL)
556  {
557  discard_cleanups (cleanup_if_error);
558  return;
559  }
560 
561  target_log_command (p);
562 
563  while (*p == ' ' || *p == '\t')
564  p++;
565  if (*p)
566  {
567  const char *cmd = p;
568  const char *arg;
569  int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
570 
571  line = p;
572 
573  /* If trace-commands is set then this will print this command. */
575 
576  c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
577  p = cmd;
578 
579  scoped_restore save_repeat_args
581  const char *args_pointer = p;
582 
583  /* Pass null arg rather than an empty one. */
584  arg = *p ? p : 0;
585 
586  /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy
587  while the is_complete_command(cfunc) test is just plain
588  bogus. They should both be replaced by a test of the form
589  c->strip_trailing_white_space_p. */
590  /* NOTE: cagney/2002-02-02: The function.cfunc in the below
591  can't be replaced with func. This is because it is the
592  cfunc, and not the func, that has the value that the
593  is_complete_command hack is testing for. */
594  /* Clear off trailing whitespace, except for set and complete
595  command. */
596  std::string without_whitespace;
597  if (arg
598  && c->type != set_cmd
599  && !is_complete_command (c))
600  {
601  const char *old_end = arg + strlen (arg) - 1;
602  p = old_end;
603  while (p >= arg && (*p == ' ' || *p == '\t'))
604  p--;
605  if (p != old_end)
606  {
607  without_whitespace = std::string (arg, p + 1);
608  arg = without_whitespace.c_str ();
609  }
610  }
611 
612  /* If this command has been pre-hooked, run the hook first. */
614 
615  if (c->deprecated_warn_user)
616  deprecated_cmd_warning (line);
617 
618  /* c->user_commands would be NULL in the case of a python command. */
619  if (c->theclass == class_user && c->user_commands)
620  execute_user_command (c, arg);
621  else if (c->type == set_cmd)
622  do_set_command (arg, from_tty, c);
623  else if (c->type == show_cmd)
624  do_show_command (arg, from_tty, c);
625  else if (!cmd_func_p (c))
626  error (_("That is not a command, just a help topic."));
628  deprecated_call_command_hook (c, arg, from_tty);
629  else
630  cmd_func (c, arg, from_tty);
631 
632  maybe_wait_sync_command_done (was_sync);
633 
634  /* If this command has been post-hooked, run the hook last. */
636 
637  if (repeat_arguments != NULL && cmd_start == saved_command_line)
638  {
639  gdb_assert (strlen (args_pointer) >= strlen (repeat_arguments));
640  strcpy (saved_command_line + (args_pointer - cmd_start),
642  }
643  }
644 
646 
647  discard_cleanups (cleanup_if_error);
648 }
649 
650 /* Run execute_command for P and FROM_TTY. Capture its output into the
651  returned string, do not display it to the screen. BATCH_FLAG will be
652  temporarily set to true. */
653 
655 execute_command_to_string (const char *p, int from_tty)
656 {
657  /* GDB_STDOUT should be better already restored during these
658  restoration callbacks. */
660 
662 
663  string_file str_file;
664 
665  {
666  current_uiout->redirect (&str_file);
667  ui_out_redirect_pop redirect_popper (current_uiout);
668 
669  scoped_restore save_stdout
670  = make_scoped_restore (&gdb_stdout, &str_file);
671  scoped_restore save_stderr
672  = make_scoped_restore (&gdb_stderr, &str_file);
673  scoped_restore save_stdlog
674  = make_scoped_restore (&gdb_stdlog, &str_file);
675  scoped_restore save_stdtarg
676  = make_scoped_restore (&gdb_stdtarg, &str_file);
677  scoped_restore save_stdtargerr
678  = make_scoped_restore (&gdb_stdtargerr, &str_file);
679 
680  execute_command (p, from_tty);
681  }
682 
683  return std::move (str_file.string ());
684 }
685 
686 
687 /* When nonzero, cause dont_repeat to do nothing. This should only be
688  set via prevent_dont_repeat. */
689 
690 static int suppress_dont_repeat = 0;
691 
692 /* Commands call this if they do not want to be repeated by null lines. */
693 
694 void
696 {
697  struct ui *ui = current_ui;
698 
700  return;
701 
702  /* If we aren't reading from standard input, we are saving the last
703  thing read from stdin in line and don't want to delete it. Null
704  lines won't repeat here in any case. */
705  if (ui->instream == ui->stdin_stream)
706  *saved_command_line = 0;
707 }
708 
709 /* Prevent dont_repeat from working, and return a cleanup that
710  restores the previous state. */
711 
714 {
716 }
717 
718 
719 /* Read a line from the stream "instream" without command line editing.
720 
721  It prints PROMPT once at the start.
722  Action is compatible with "readline", e.g. space for the result is
723  malloc'd and should be freed by the caller.
724 
725  A NULL return means end of file. */
726 
727 static char *
728 gdb_readline_no_editing (const char *prompt)
729 {
730  struct buffer line_buffer;
731  struct ui *ui = current_ui;
732  /* Read from stdin if we are executing a user defined command. This
733  is the right thing for prompt_for_continue, at least. */
734  FILE *stream = ui->instream != NULL ? ui->instream : stdin;
735  int fd = fileno (stream);
736 
738 
739  if (prompt != NULL)
740  {
741  /* Don't use a _filtered function here. It causes the assumed
742  character position to be off, since the newline we read from
743  the user is not accounted for. */
744  fputs_unfiltered (prompt, gdb_stdout);
746  }
747 
748  while (1)
749  {
750  int c;
751  fd_set readfds;
752 
753  QUIT;
754 
755  /* Wait until at least one byte of data is available. Control-C
756  can interrupt interruptible_select, but not fgetc. */
757  FD_ZERO (&readfds);
758  FD_SET (fd, &readfds);
759  if (interruptible_select (fd + 1, &readfds, NULL, NULL, NULL) == -1)
760  {
761  if (errno == EINTR)
762  {
763  /* If this was ctrl-c, the QUIT above handles it. */
764  continue;
765  }
766  perror_with_name (("select"));
767  }
768 
769  c = fgetc (stream);
770 
771  if (c == EOF)
772  {
773  if (line_buffer.used_size > 0)
774  /* The last line does not end with a newline. Return it, and
775  if we are called again fgetc will still return EOF and
776  we'll return NULL then. */
777  break;
779  return NULL;
780  }
781 
782  if (c == '\n')
783  {
784  if (line_buffer.used_size > 0
785  && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
787  break;
788  }
789 
791  }
792 
793  buffer_grow_char (&line_buffer, '\0');
794  return buffer_finish (&line_buffer);
795 }
796 
797 /* Variables which control command line editing and history
798  substitution. These variables are given default values at the end
799  of this file. */
800 static int command_editing_p;
801 
802 /* NOTE 1999-04-29: This variable will be static again, once we modify
803  gdb to use the event loop as the default command loop and we merge
804  event-top.c into this file, top.c. */
805 
806 /* static */ int history_expansion_p;
807 
808 static int write_history_p;
809 static void
810 show_write_history_p (struct ui_file *file, int from_tty,
811  struct cmd_list_element *c, const char *value)
812 {
813  fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
814  value);
815 }
816 
817 /* The variable associated with the "set/show history size"
818  command. The value -1 means unlimited, and -2 means undefined. */
819 static int history_size_setshow_var = -2;
820 
821 static void
822 show_history_size (struct ui_file *file, int from_tty,
823  struct cmd_list_element *c, const char *value)
824 {
825  fprintf_filtered (file, _("The size of the command history is %s.\n"),
826  value);
827 }
828 
829 /* Variable associated with the "history remove-duplicates" option.
830  The value -1 means unlimited. */
832 
833 static void
834 show_history_remove_duplicates (struct ui_file *file, int from_tty,
835  struct cmd_list_element *c, const char *value)
836 {
837  fprintf_filtered (file,
838  _("The number of history entries to look back at for "
839  "duplicates is %s.\n"),
840  value);
841 }
842 
843 static char *history_filename;
844 static void
845 show_history_filename (struct ui_file *file, int from_tty,
846  struct cmd_list_element *c, const char *value)
847 {
848  fprintf_filtered (file, _("The filename in which to record "
849  "the command history is \"%s\".\n"),
850  value);
851 }
852 
853 /* This is like readline(), but it has some gdb-specific behavior.
854  gdb may want readline in both the synchronous and async modes during
855  a single gdb invocation. At the ordinary top-level prompt we might
856  be using the async readline. That means we can't use
857  rl_pre_input_hook, since it doesn't work properly in async mode.
858  However, for a secondary prompt (" >", such as occurs during a
859  `define'), gdb wants a synchronous response.
860 
861  We used to call readline() directly, running it in synchronous
862  mode. But mixing modes this way is not supported, and as of
863  readline 5.x it no longer works; the arrow keys come unbound during
864  the synchronous call. So we make a nested call into the event
865  loop. That's what gdb_readline_wrapper is for. */
866 
867 /* A flag set as soon as gdb_readline_wrapper_line is called; we can't
868  rely on gdb_readline_wrapper_result, which might still be NULL if
869  the user types Control-D for EOF. */
871 
872 /* The result of the current call to gdb_readline_wrapper, once a newline
873  is seen. */
875 
876 /* Any intercepted hook. Operate-and-get-next sets this, expecting it
877  to be called after the newline is processed (which will redisplay
878  the prompt). But in gdb_readline_wrapper we will not get a new
879  prompt until the next call, or until we return to the event loop.
880  So we disable this hook around the newline and restore it before we
881  return. */
882 static void (*saved_after_char_processing_hook) (void);
883 
884 
885 /* See top.h. */
886 
887 int
889 {
890  return ui->secondary_prompt_depth > 0;
891 }
892 
893 
894 /* This function is called when readline has seen a complete line of
895  text. */
896 
897 static void
899 {
903 
904  /* Prevent operate-and-get-next from acting too early. */
907 
908  /* Prevent parts of the prompt from being redisplayed if annotations
909  are enabled, and readline's state getting out of sync. We'll
910  reinstall the callback handler, which puts the terminal in raw
911  mode (or in readline lingo, in prepped state), when we're next
912  ready to process user input, either in display_gdb_prompt, or if
913  we're handling an asynchronous target event and running in the
914  background, just before returning to the event loop to process
915  further input (or more target events). */
918 }
919 
921  {
922  void (*handler_orig) (char *);
924 
925  /* Whether the target was async. */
927  };
928 
929 static void
931 {
932  struct ui *ui = current_ui;
934  = (struct gdb_readline_wrapper_cleanup *) arg;
935 
936  if (ui->command_editing)
937  rl_already_prompted = cleanup->already_prompted_orig;
938 
940  ui->input_handler = cleanup->handler_orig;
941 
942  /* Don't restore our input handler in readline yet. That would make
943  readline prep the terminal (putting it in raw mode), while the
944  line we just read may trigger execution of a command that expects
945  the terminal in the default cooked/canonical mode, such as e.g.,
946  running Python's interactive online help utility. See
947  gdb_readline_wrapper_line for when we'll reinstall it. */
948 
953 
956 
957  if (cleanup->target_is_async_orig)
958  target_async (1);
959 
960  xfree (cleanup);
961 }
962 
963 char *
964 gdb_readline_wrapper (const char *prompt)
965 {
966  struct ui *ui = current_ui;
967  struct cleanup *back_to;
969  char *retval;
970 
972  cleanup->handler_orig = ui->input_handler;
974 
975  if (ui->command_editing)
976  cleanup->already_prompted_orig = rl_already_prompted;
977  else
978  cleanup->already_prompted_orig = 0;
979 
980  cleanup->target_is_async_orig = target_is_async_p ();
981 
984 
985  /* Processing events may change the current UI. */
987 
988  if (cleanup->target_is_async_orig)
989  target_async (0);
990 
991  /* Display our prompt and prevent double prompt display. Don't pass
992  down a NULL prompt, since that has special meaning for
993  display_gdb_prompt -- it indicates a request to print the primary
994  prompt, while we want a secondary prompt here. */
995  display_gdb_prompt (prompt != NULL ? prompt : "");
996  if (ui->command_editing)
997  rl_already_prompted = 1;
998 
1000  (*after_char_processing_hook) ();
1002 
1003  while (gdb_do_one_event () >= 0)
1005  break;
1006 
1007  retval = gdb_readline_wrapper_result;
1008  do_cleanups (back_to);
1009  return retval;
1010 }
1011 
1012 
1013 /* The current saved history number from operate-and-get-next.
1014  This is -1 if not valid. */
1015 static int operate_saved_history = -1;
1016 
1017 /* This is put on the appropriate hook and helps operate-and-get-next
1018  do its work. */
1019 static void
1021 {
1022  int delta = where_history () - operate_saved_history;
1023 
1024  /* The `key' argument to rl_get_previous_history is ignored. */
1025  rl_get_previous_history (delta, 0);
1026  operate_saved_history = -1;
1027 
1028  /* readline doesn't automatically update the display for us. */
1029  rl_redisplay ();
1030 
1032  rl_pre_input_hook = NULL;
1033 }
1034 
1035 /* This is a gdb-local readline command handler. It accepts the
1036  current command line (like RET does) and, if this command was taken
1037  from the history, arranges for the next command in the history to
1038  appear on the command line when the prompt returns.
1039  We ignore the arguments. */
1040 static int
1041 gdb_rl_operate_and_get_next (int count, int key)
1042 {
1043  int where;
1044 
1045  /* Use the async hook. */
1047 
1048  /* Find the current line, and find the next line to use. */
1049  where = where_history();
1050 
1051  if ((history_is_stifled () && (history_length >= history_max_entries))
1052  || (where >= history_length - 1))
1053  operate_saved_history = where;
1054  else
1055  operate_saved_history = where + 1;
1056 
1057  return rl_newline (1, key);
1058 }
1059 
1060 /* Number of user commands executed during this session. */
1061 
1062 static int command_count = 0;
1063 
1064 /* Add the user command COMMAND to the input history list. */
1065 
1066 void
1067 gdb_add_history (const char *command)
1068 {
1069  command_count++;
1070 
1071  if (history_remove_duplicates != 0)
1072  {
1073  int lookbehind;
1074  int lookbehind_threshold;
1075 
1076  /* The lookbehind threshold for finding a duplicate history entry is
1077  bounded by command_count because we can't meaningfully delete
1078  history entries that are already stored in the history file since
1079  the history file is appended to. */
1080  if (history_remove_duplicates == -1
1082  lookbehind_threshold = command_count;
1083  else
1084  lookbehind_threshold = history_remove_duplicates;
1085 
1086  using_history ();
1087  for (lookbehind = 0; lookbehind < lookbehind_threshold; lookbehind++)
1088  {
1089  HIST_ENTRY *temp = previous_history ();
1090 
1091  if (temp == NULL)
1092  break;
1093 
1094  if (strcmp (temp->line, command) == 0)
1095  {
1096  HIST_ENTRY *prev = remove_history (where_history ());
1097  command_count--;
1098  free_history_entry (prev);
1099  break;
1100  }
1101  }
1102  using_history ();
1103  }
1104 
1105  add_history (command);
1106 }
1107 
1108 /* Safely append new history entries to the history file in a corruption-free
1109  way using an intermediate local history file. */
1110 
1111 static void
1113 {
1114  int ret, saved_errno;
1115 
1116  std::string local_history_filename
1117  = string_printf ("%s-gdb%ld~", history_filename, (long) getpid ());
1118 
1119  ret = rename (history_filename, local_history_filename.c_str ());
1120  saved_errno = errno;
1121  if (ret < 0 && saved_errno != ENOENT)
1122  {
1123  warning (_("Could not rename %s to %s: %s"),
1124  history_filename, local_history_filename.c_str (),
1125  safe_strerror (saved_errno));
1126  }
1127  else
1128  {
1129  if (ret < 0)
1130  {
1131  /* If the rename failed with ENOENT then either the global history
1132  file never existed in the first place or another GDB process is
1133  currently appending to it (and has thus temporarily renamed it).
1134  Since we can't distinguish between these two cases, we have to
1135  conservatively assume the first case and therefore must write out
1136  (not append) our known history to our local history file and try
1137  to move it back anyway. Otherwise a global history file would
1138  never get created! */
1139  gdb_assert (saved_errno == ENOENT);
1140  write_history (local_history_filename.c_str ());
1141  }
1142  else
1143  {
1144  append_history (command_count, local_history_filename.c_str ());
1145  if (history_is_stifled ())
1146  history_truncate_file (local_history_filename.c_str (),
1147  history_max_entries);
1148  }
1149 
1150  ret = rename (local_history_filename.c_str (), history_filename);
1151  saved_errno = errno;
1152  if (ret < 0 && saved_errno != EEXIST)
1153  warning (_("Could not rename %s to %s: %s"),
1154  local_history_filename.c_str (), history_filename,
1155  safe_strerror (saved_errno));
1156  }
1157 }
1158 
1159 /* Read one line from the command input stream `instream' into a local
1160  static buffer. The buffer is made bigger as necessary. Returns
1161  the address of the start of the line.
1162 
1163  NULL is returned for end of file.
1164 
1165  *If* input is from an interactive stream (stdin), the line read is
1166  copied into the global 'saved_command_line' so that it can be
1167  repeated.
1168 
1169  This routine either uses fancy command line editing or simple input
1170  as the user has requested. */
1171 
1172 char *
1173 command_line_input (const char *prompt_arg, int repeat,
1174  const char *annotation_suffix)
1175 {
1176  static struct buffer cmd_line_buffer;
1177  static int cmd_line_buffer_initialized;
1178  struct ui *ui = current_ui;
1179  const char *prompt = prompt_arg;
1180  char *cmd;
1181  int from_tty = ui->instream == ui->stdin_stream;
1182 
1183  /* The annotation suffix must be non-NULL. */
1184  if (annotation_suffix == NULL)
1185  annotation_suffix = "";
1186 
1187  if (from_tty && annotation_level > 1)
1188  {
1189  char *local_prompt;
1190 
1191  local_prompt
1192  = (char *) alloca ((prompt == NULL ? 0 : strlen (prompt))
1193  + strlen (annotation_suffix) + 40);
1194  if (prompt == NULL)
1195  local_prompt[0] = '\0';
1196  else
1197  strcpy (local_prompt, prompt);
1198  strcat (local_prompt, "\n\032\032");
1199  strcat (local_prompt, annotation_suffix);
1200  strcat (local_prompt, "\n");
1201 
1202  prompt = local_prompt;
1203  }
1204 
1205  if (!cmd_line_buffer_initialized)
1206  {
1207  buffer_init (&cmd_line_buffer);
1208  cmd_line_buffer_initialized = 1;
1209  }
1210 
1211  /* Starting a new command line. */
1212  cmd_line_buffer.used_size = 0;
1213 
1214 #ifdef SIGTSTP
1215  if (job_control)
1216  signal (SIGTSTP, handle_sigtstp);
1217 #endif
1218 
1219  while (1)
1220  {
1221  char *rl;
1222 
1223  /* Make sure that all output has been output. Some machines may
1224  let you get away with leaving out some of the gdb_flush, but
1225  not all. */
1226  wrap_here ("");
1229 
1230  if (source_file_name != NULL)
1232 
1233  if (from_tty && annotation_level > 1)
1234  {
1235  puts_unfiltered ("\n\032\032pre-");
1236  puts_unfiltered (annotation_suffix);
1237  puts_unfiltered ("\n");
1238  }
1239 
1240  /* Don't use fancy stuff if not talking to stdin. */
1242  && from_tty
1244  {
1245  rl = (*deprecated_readline_hook) (prompt);
1246  }
1247  else if (command_editing_p
1248  && from_tty
1250  {
1251  rl = gdb_readline_wrapper (prompt);
1252  }
1253  else
1254  {
1255  rl = gdb_readline_no_editing (prompt);
1256  }
1257 
1258  cmd = handle_line_of_input (&cmd_line_buffer, rl,
1259  repeat, annotation_suffix);
1260  if (cmd == (char *) EOF)
1261  {
1262  cmd = NULL;
1263  break;
1264  }
1265  if (cmd != NULL)
1266  break;
1267 
1268  /* Got partial input. I.e., got a line that ends with a
1269  continuation character (backslash). Suppress printing the
1270  prompt again. */
1271  prompt = NULL;
1272  }
1273 
1274 #ifdef SIGTSTP
1275  if (job_control)
1276  signal (SIGTSTP, SIG_DFL);
1277 #endif
1278 
1279  return cmd;
1280 }
1281 
1282 /* Print the GDB banner. */
1283 void
1284 print_gdb_version (struct ui_file *stream)
1285 {
1286  /* From GNU coding standards, first line is meant to be easy for a
1287  program to parse, and is just canonical program name and version
1288  number, which starts after last space. */
1289 
1290  fprintf_filtered (stream, "GNU gdb %s%s\n", PKGVERSION, version);
1291 
1292  /* Second line is a copyright notice. */
1293 
1294  fprintf_filtered (stream,
1295  "Copyright (C) 2018 Free Software Foundation, Inc.\n");
1296 
1297  /* Following the copyright is a brief statement that the program is
1298  free software, that users are free to copy and change it on
1299  certain conditions, that it is covered by the GNU GPL, and that
1300  there is no warranty. */
1301 
1302  fprintf_filtered (stream, "\
1303 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\
1304 \nThis is free software: you are free to change and redistribute it.\n\
1305 There is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\n\
1306 and \"show warranty\" for details.\n");
1307 
1308  /* After the required info we print the configuration information. */
1309 
1310  fprintf_filtered (stream, "This GDB was configured as \"");
1311  if (strcmp (host_name, target_name) != 0)
1312  {
1313  fprintf_filtered (stream, "--host=%s --target=%s",
1315  }
1316  else
1317  {
1318  fprintf_filtered (stream, "%s", host_name);
1319  }
1320  fprintf_filtered (stream, "\".\n\
1321 Type \"show configuration\" for configuration details.");
1322 
1323  if (REPORT_BUGS_TO[0])
1324  {
1325  fprintf_filtered (stream,
1326  _("\nFor bug reporting instructions, please see:\n"));
1327  fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
1328  }
1329  fprintf_filtered (stream,
1330  _("Find the GDB manual and other documentation \
1331 resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"));
1332  fprintf_filtered (stream, _("For help, type \"help\".\n"));
1333  fprintf_filtered (stream, _("Type \"apropos word\" to search for \
1334 commands related to \"word\"."));
1335 }
1336 
1337 /* Print the details of GDB build-time configuration. */
1338 void
1340 {
1341  fprintf_filtered (stream, _("\
1342 This GDB was configured as follows:\n\
1343  configure --host=%s --target=%s\n\
1344 "), host_name, target_name);
1345  fprintf_filtered (stream, _("\
1346  --with-auto-load-dir=%s\n\
1347  --with-auto-load-safe-path=%s\n\
1349 #if HAVE_LIBEXPAT
1350  fprintf_filtered (stream, _("\
1351  --with-expat\n\
1352 "));
1353 #else
1354  fprintf_filtered (stream, _("\
1355  --without-expat\n\
1356 "));
1357 #endif
1358  if (GDB_DATADIR[0])
1359  fprintf_filtered (stream, _("\
1360  --with-gdb-datadir=%s%s\n\
1361 "), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
1362 #ifdef ICONV_BIN
1363  fprintf_filtered (stream, _("\
1364  --with-iconv-bin=%s%s\n\
1365 "), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
1366 #endif
1367  if (JIT_READER_DIR[0])
1368  fprintf_filtered (stream, _("\
1369  --with-jit-reader-dir=%s%s\n\
1370 "), JIT_READER_DIR, JIT_READER_DIR_RELOCATABLE ? " (relocatable)" : "");
1371 #if HAVE_LIBUNWIND_IA64_H
1372  fprintf_filtered (stream, _("\
1373  --with-libunwind-ia64\n\
1374 "));
1375 #else
1376  fprintf_filtered (stream, _("\
1377  --without-libunwind-ia64\n\
1378 "));
1379 #endif
1380 #if HAVE_LIBLZMA
1381  fprintf_filtered (stream, _("\
1382  --with-lzma\n\
1383 "));
1384 #else
1385  fprintf_filtered (stream, _("\
1386  --without-lzma\n\
1387 "));
1388 #endif
1389 #ifdef WITH_PYTHON_PATH
1390  fprintf_filtered (stream, _("\
1391  --with-python=%s%s\n\
1392 "), WITH_PYTHON_PATH, PYTHON_PATH_RELOCATABLE ? " (relocatable)" : "");
1393 #endif
1394 #if HAVE_GUILE
1395  fprintf_filtered (stream, _("\
1396  --with-guile\n\
1397 "));
1398 #else
1399  fprintf_filtered (stream, _("\
1400  --without-guile\n\
1401 "));
1402 #endif
1403 #ifdef RELOC_SRCDIR
1404  fprintf_filtered (stream, _("\
1405  --with-relocated-sources=%s\n\
1406 "), RELOC_SRCDIR);
1407 #endif
1408  if (DEBUGDIR[0])
1409  fprintf_filtered (stream, _("\
1410  --with-separate-debug-dir=%s%s\n\
1411 "), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
1412  if (TARGET_SYSTEM_ROOT[0])
1413  fprintf_filtered (stream, _("\
1414  --with-sysroot=%s%s\n\
1415 "), TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE ? " (relocatable)" : "");
1416  if (SYSTEM_GDBINIT[0])
1417  fprintf_filtered (stream, _("\
1418  --with-system-gdbinit=%s%s\n\
1419 "), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
1420 #if HAVE_LIBBABELTRACE
1421  fprintf_filtered (stream, _("\
1422  --with-babeltrace\n\
1423 "));
1424 #else
1425  fprintf_filtered (stream, _("\
1426  --without-babeltrace\n\
1427 "));
1428 #endif
1429  /* We assume "relocatable" will be printed at least once, thus we always
1430  print this text. It's a reasonably safe assumption for now. */
1431  fprintf_filtered (stream, _("\n\
1432 (\"Relocatable\" means the directory can be moved with the GDB installation\n\
1433 tree, and GDB will still find it.)\n\
1434 "));
1435 }
1436 
1437 
1438 /* The current top level prompt, settable with "set prompt", and/or
1439  with the python `gdb.prompt_hook' hook. */
1440 static char *top_prompt;
1441 
1442 /* Access method for the GDB prompt string. */
1443 
1444 char *
1446 {
1447  return top_prompt;
1448 }
1449 
1450 /* Set method for the GDB prompt string. */
1451 
1452 void
1453 set_prompt (const char *s)
1454 {
1455  char *p = xstrdup (s);
1456 
1457  xfree (top_prompt);
1458  top_prompt = p;
1459 }
1460 
1461 
1462 struct qt_args
1463 {
1464  char *args;
1466 };
1467 
1468 /* Callback for iterate_over_inferiors. Kills or detaches the given
1469  inferior, depending on how we originally gained control of it. */
1470 
1471 static int
1472 kill_or_detach (struct inferior *inf, void *args)
1473 {
1474  struct qt_args *qt = (struct qt_args *) args;
1475  struct thread_info *thread;
1476 
1477  if (inf->pid == 0)
1478  return 0;
1479 
1480  thread = any_thread_of_process (inf->pid);
1481  if (thread != NULL)
1482  {
1483  switch_to_thread (thread->ptid);
1484 
1485  /* Leave core files alone. */
1487  {
1488  if (inf->attach_flag)
1489  target_detach (qt->args, qt->from_tty);
1490  else
1491  target_kill ();
1492  }
1493  }
1494 
1495  return 0;
1496 }
1497 
1498 /* Callback for iterate_over_inferiors. Prints info about what GDB
1499  will do to each inferior on a "quit". ARG points to a struct
1500  ui_out where output is to be collected. */
1501 
1502 static int
1504 {
1505  struct ui_file *stb = (struct ui_file *) arg;
1506 
1507  if (inf->pid == 0)
1508  return 0;
1509 
1510  if (inf->attach_flag)
1511  fprintf_filtered (stb,
1512  _("\tInferior %d [%s] will be detached.\n"), inf->num,
1514  else
1515  fprintf_filtered (stb,
1516  _("\tInferior %d [%s] will be killed.\n"), inf->num,
1518 
1519  return 0;
1520 }
1521 
1522 /* If necessary, make the user confirm that we should quit. Return
1523  non-zero if we should quit, zero if we shouldn't. */
1524 
1525 int
1527 {
1528  /* Don't even ask if we're only debugging a core file inferior. */
1529  if (!have_live_inferiors ())
1530  return 1;
1531 
1532  /* Build the query string as a single string. */
1533  string_file stb;
1534 
1535  stb.puts (_("A debugging session is active.\n\n"));
1537  stb.puts (_("\nQuit anyway? "));
1538 
1539  return query ("%s", stb.c_str ());
1540 }
1541 
1542 /* Prepare to exit GDB cleanly by undoing any changes made to the
1543  terminal so that we leave the terminal in the state we acquired it. */
1544 
1545 static void
1547 {
1548  struct ui *saved_top_level = current_ui;
1549 
1551 
1552  current_ui = main_ui;
1553 
1554 #if defined(TUI)
1555  tui_disable ();
1556 #endif
1558 
1559  current_ui = saved_top_level;
1560 }
1561 
1562 
1563 /* Quit without asking for confirmation. */
1564 
1565 void
1566 quit_force (int *exit_arg, int from_tty)
1567 {
1568  int exit_code = 0;
1569  struct qt_args qt;
1570 
1572 
1573  /* An optional expression may be used to cause gdb to terminate with the
1574  value of that expression. */
1575  if (exit_arg)
1576  exit_code = *exit_arg;
1577  else if (return_child_result)
1578  exit_code = return_child_result_value;
1579 
1580  qt.args = NULL;
1581  qt.from_tty = from_tty;
1582 
1583  /* We want to handle any quit errors and exit regardless. */
1584 
1585  /* Get out of tfind mode, and kill or detach all inferiors. */
1586  TRY
1587  {
1588  disconnect_tracing ();
1590  }
1591  CATCH (ex, RETURN_MASK_ALL)
1592  {
1594  }
1595  END_CATCH
1596 
1597  /* Give all pushed targets a chance to do minimal cleanup, and pop
1598  them all out. */
1599  TRY
1600  {
1601  pop_all_targets ();
1602  }
1603  CATCH (ex, RETURN_MASK_ALL)
1604  {
1606  }
1607  END_CATCH
1608 
1609  /* Save the history information if it is appropriate to do so. */
1610  TRY
1611  {
1613  {
1614  struct ui *ui;
1615  int save = 0;
1616 
1617  /* History is currently shared between all UIs. If there's
1618  any UI with a terminal, save history. */
1619  ALL_UIS (ui)
1620  {
1621  if (input_interactive_p (ui))
1622  {
1623  save = 1;
1624  break;
1625  }
1626  }
1627 
1628  if (save)
1630  }
1631  }
1632  CATCH (ex, RETURN_MASK_ALL)
1633  {
1635  }
1636  END_CATCH
1637 
1638  /* Do any final cleanups before exiting. */
1639  TRY
1640  {
1642  }
1643  CATCH (ex, RETURN_MASK_ALL)
1644  {
1646  }
1647  END_CATCH
1648 
1649  exit (exit_code);
1650 }
1651 
1652 /* The value of the "interactive-mode" setting. */
1654 
1655 /* Implement the "show interactive-mode" option. */
1656 
1657 static void
1658 show_interactive_mode (struct ui_file *file, int from_tty,
1659  struct cmd_list_element *c,
1660  const char *value)
1661 {
1663  fprintf_filtered (file, "Debugger's interactive mode "
1664  "is %s (currently %s).\n",
1665  value, input_interactive_p (current_ui) ? "on" : "off");
1666  else
1667  fprintf_filtered (file, "Debugger's interactive mode is %s.\n", value);
1668 }
1669 
1670 /* Returns whether GDB is running on an interactive terminal. */
1671 
1672 int
1674 {
1675  if (batch_flag)
1676  return 0;
1677 
1680 
1681  return ui->input_interactive_p;
1682 }
1683 
1684 static void
1685 dont_repeat_command (const char *ignored, int from_tty)
1686 {
1687  /* Can't call dont_repeat here because we're not necessarily reading
1688  from stdin. */
1689  *saved_command_line = 0;
1690 }
1691 
1692 /* Functions to manipulate command line editing control variables. */
1693 
1694 /* Number of commands to print in each call to show_commands. */
1695 #define Hist_print 10
1696 void
1697 show_commands (const char *args, int from_tty)
1698 {
1699  /* Index for history commands. Relative to history_base. */
1700  int offset;
1701 
1702  /* Number of the history entry which we are planning to display next.
1703  Relative to history_base. */
1704  static int num = 0;
1705 
1706  /* Print out some of the commands from the command history. */
1707 
1708  if (args)
1709  {
1710  if (args[0] == '+' && args[1] == '\0')
1711  /* "info editing +" should print from the stored position. */
1712  ;
1713  else
1714  /* "info editing <exp>" should print around command number <exp>. */
1715  num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1716  }
1717  /* "show commands" means print the last Hist_print commands. */
1718  else
1719  {
1720  num = history_length - Hist_print;
1721  }
1722 
1723  if (num < 0)
1724  num = 0;
1725 
1726  /* If there are at least Hist_print commands, we want to display the last
1727  Hist_print rather than, say, the last 6. */
1728  if (history_length - num < Hist_print)
1729  {
1730  num = history_length - Hist_print;
1731  if (num < 0)
1732  num = 0;
1733  }
1734 
1735  for (offset = num;
1736  offset < num + Hist_print && offset < history_length;
1737  offset++)
1738  {
1739  printf_filtered ("%5d %s\n", history_base + offset,
1740  (history_get (history_base + offset))->line);
1741  }
1742 
1743  /* The next command we want to display is the next one that we haven't
1744  displayed yet. */
1745  num += Hist_print;
1746 
1747  /* If the user repeats this command with return, it should do what
1748  "show commands +" does. This is unnecessary if arg is null,
1749  because "show commands +" is not useful after "show commands". */
1750  if (from_tty && args)
1751  set_repeat_arguments ("+");
1752 }
1753 
1754 /* Update the size of our command history file to HISTORY_SIZE.
1755 
1756  A HISTORY_SIZE of -1 stands for unlimited. */
1757 
1758 static void
1759 set_readline_history_size (int history_size)
1760 {
1761  gdb_assert (history_size >= -1);
1762 
1763  if (history_size == -1)
1764  unstifle_history ();
1765  else
1766  stifle_history (history_size);
1767 }
1768 
1769 /* Called by do_setshow_command. */
1770 static void
1771 set_history_size_command (const char *args,
1772  int from_tty, struct cmd_list_element *c)
1773 {
1775 }
1776 
1777 void
1778 set_history (const char *args, int from_tty)
1779 {
1780  printf_unfiltered (_("\"set history\" must be followed "
1781  "by the name of a history subcommand.\n"));
1782  help_list (sethistlist, "set history ", all_commands, gdb_stdout);
1783 }
1784 
1785 void
1786 show_history (const char *args, int from_tty)
1787 {
1788  cmd_show_list (showhistlist, from_tty, "");
1789 }
1790 
1791 int info_verbose = 0; /* Default verbose msgs off. */
1792 
1793 /* Called by do_setshow_command. An elaborate joke. */
1794 void
1795 set_verbose (const char *args, int from_tty, struct cmd_list_element *c)
1796 {
1797  const char *cmdname = "verbose";
1798  struct cmd_list_element *showcmd;
1799 
1800  showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1801  gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
1802 
1803  if (info_verbose)
1804  {
1805  c->doc = "Set verbose printing of informational messages.";
1806  showcmd->doc = "Show verbose printing of informational messages.";
1807  }
1808  else
1809  {
1810  c->doc = "Set verbosity.";
1811  showcmd->doc = "Show verbosity.";
1812  }
1813 }
1814 
1815 /* Init the history buffer. Note that we are called after the init file(s)
1816  have been read so that the user can change the history file via his
1817  .gdbinit file (for instance). The GDBHISTFILE environment variable
1818  overrides all of this. */
1819 
1820 void
1822 {
1823  char *tmpenv;
1824 
1825  tmpenv = getenv ("GDBHISTSIZE");
1826  if (tmpenv)
1827  {
1828  long var;
1829  int saved_errno;
1830  char *endptr;
1831 
1832  tmpenv = skip_spaces (tmpenv);
1833  errno = 0;
1834  var = strtol (tmpenv, &endptr, 10);
1835  saved_errno = errno;
1836  endptr = skip_spaces (endptr);
1837 
1838  /* If GDBHISTSIZE is non-numeric then ignore it. If GDBHISTSIZE is the
1839  empty string, a negative number or a huge positive number (larger than
1840  INT_MAX) then set the history size to unlimited. Otherwise set our
1841  history size to the number we have read. This behavior is consistent
1842  with how bash handles HISTSIZE. */
1843  if (*endptr != '\0')
1844  ;
1845  else if (*tmpenv == '\0'
1846  || var < 0
1847  || var > INT_MAX
1848  /* On targets where INT_MAX == LONG_MAX, we have to look at
1849  errno after calling strtol to distinguish between a value that
1850  is exactly INT_MAX and an overflowing value that was clamped
1851  to INT_MAX. */
1852  || (var == INT_MAX && saved_errno == ERANGE))
1854  else
1856  }
1857 
1858  /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
1859  default. */
1860  if (history_size_setshow_var == -2)
1862 
1864 
1865  tmpenv = getenv ("GDBHISTFILE");
1866  if (tmpenv)
1867  history_filename = xstrdup (tmpenv);
1868  else if (!history_filename)
1869  {
1870  /* We include the current directory so that if the user changes
1871  directories the file written will be the same as the one
1872  that was read. */
1873 #ifdef __MSDOS__
1874  /* No leading dots in file names are allowed on MSDOS. */
1875  history_filename = concat (current_directory, "/_gdb_history",
1876  (char *)NULL);
1877 #else
1878  history_filename = concat (current_directory, "/.gdb_history",
1879  (char *)NULL);
1880 #endif
1881  }
1882  read_history (history_filename);
1883 }
1884 
1885 static void
1886 show_prompt (struct ui_file *file, int from_tty,
1887  struct cmd_list_element *c, const char *value)
1888 {
1889  fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1890 }
1891 
1892 /* "set editing" command. */
1893 
1894 static void
1895 set_editing (const char *args, int from_tty, struct cmd_list_element *c)
1896 {
1898  /* Update the control variable so that MI's =cmd-param-changed event
1899  shows the correct value. */
1901 }
1902 
1903 static void
1904 show_editing (struct ui_file *file, int from_tty,
1905  struct cmd_list_element *c, const char *value)
1906 {
1907  fprintf_filtered (file, _("Editing of command lines as "
1908  "they are typed is %s.\n"),
1909  current_ui->command_editing ? _("on") : _("off"));
1910 }
1911 
1912 static void
1913 show_annotation_level (struct ui_file *file, int from_tty,
1914  struct cmd_list_element *c, const char *value)
1915 {
1916  fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1917 }
1918 
1919 static void
1920 show_exec_done_display_p (struct ui_file *file, int from_tty,
1921  struct cmd_list_element *c, const char *value)
1922 {
1923  fprintf_filtered (file, _("Notification of completion for "
1924  "asynchronous execution commands is %s.\n"),
1925  value);
1926 }
1927 
1928 /* New values of the "data-directory" parameter are staged here. */
1929 static char *staged_gdb_datadir;
1930 
1931 /* "set" command for the gdb_datadir configuration variable. */
1932 
1933 static void
1934 set_gdb_datadir (const char *args, int from_tty, struct cmd_list_element *c)
1935 {
1938 }
1939 
1940 /* "show" command for the gdb_datadir configuration variable. */
1941 
1942 static void
1943 show_gdb_datadir (struct ui_file *file, int from_tty,
1944  struct cmd_list_element *c, const char *value)
1945 {
1946  fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
1947  gdb_datadir);
1948 }
1949 
1950 static void
1951 set_history_filename (const char *args,
1952  int from_tty, struct cmd_list_element *c)
1953 {
1954  /* We include the current directory so that if the user changes
1955  directories the file written will be the same as the one
1956  that was read. */
1957  if (!IS_ABSOLUTE_PATH (history_filename))
1959  history_filename, (char *) NULL);
1960 }
1961 
1962 static void
1964 {
1965  struct cmd_list_element *c;
1966 
1967  /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
1968  the DEFAULT_PROMPT is. */
1970 
1971  /* Set the important stuff up for command editing. */
1972  command_editing_p = 1;
1973  history_expansion_p = 0;
1974  write_history_p = 0;
1975 
1976  /* Setup important stuff for command line editing. */
1977  rl_completion_word_break_hook = gdb_completion_word_break_characters;
1978  rl_attempted_completion_function = gdb_rl_attempted_completion_function;
1980  rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1981  rl_completion_display_matches_hook = cli_display_match_list;
1982  rl_readline_name = "gdb";
1983  rl_terminal_name = getenv ("TERM");
1984 
1985  /* The name for this defun comes from Bash, where it originated.
1986  15 is Control-o, the same binding this function has in Bash. */
1987  rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1988 
1990  &top_prompt,
1991  _("Set gdb's prompt"),
1992  _("Show gdb's prompt"),
1993  NULL, NULL,
1994  show_prompt,
1995  &setlist, &showlist);
1996 
1997  add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1998 Don't repeat this command.\nPrimarily \
1999 used inside of user-defined commands that should not be repeated when\n\
2000 hitting return."));
2001 
2003  &set_editing_cmd_var, _("\
2004 Set editing of command lines as they are typed."), _("\
2005 Show editing of command lines as they are typed."), _("\
2006 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
2007 Without an argument, command line editing is enabled. To edit, use\n\
2008 EMACS-like or VI-like commands like control-P or ESC."),
2009  set_editing,
2010  show_editing,
2011  &setlist, &showlist);
2012 
2014 Set saving of the history record on exit."), _("\
2015 Show saving of the history record on exit."), _("\
2016 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
2017 Without an argument, saving is enabled."),
2018  NULL,
2021 
2024 Set the size of the command history,"), _("\
2025 Show the size of the command history,"), _("\
2026 ie. the number of previous commands to keep a record of.\n\
2027 If set to \"unlimited\", the number of commands kept in the history\n\
2028 list is unlimited. This defaults to the value of the environment\n\
2029 variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
2033 
2034  add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
2036 Set how far back in history to look for and remove duplicate entries."), _("\
2037 Show how far back in history to look for and remove duplicate entries."), _("\
2038 If set to a nonzero value N, GDB will look back at the last N history entries\n\
2039 and remove the first history entry that is a duplicate of the most recent\n\
2040 entry, each time a new history entry is added.\n\
2041 If set to \"unlimited\", this lookbehind is unbounded.\n\
2042 Only history entries added during this session are considered for removal.\n\
2043 If set to 0, removal of duplicate history entries is disabled.\n\
2044 By default this option is set to 0."),
2045  NULL,
2048 
2050 Set the filename in which to record the command history"), _("\
2051 Show the filename in which to record the command history"), _("\
2052 (the list of previous commands of which a record is kept)."),
2056 
2058 Set whether to confirm potentially dangerous operations."), _("\
2059 Show whether to confirm potentially dangerous operations."), NULL,
2060  NULL,
2061  show_confirm,
2062  &setlist, &showlist);
2063 
2065 Set annotation_level."), _("\
2066 Show annotation_level."), _("\
2067 0 == normal; 1 == fullname (for use when running under emacs)\n\
2068 2 == output annotated suitably for use by programs that control GDB."),
2069  NULL,
2071  &setlist, &showlist);
2072 
2073  add_setshow_boolean_cmd ("exec-done-display", class_support,
2074  &exec_done_display_p, _("\
2075 Set notification of completion for asynchronous execution commands."), _("\
2076 Show notification of completion for asynchronous execution commands."), _("\
2077 Use \"on\" to enable the notification, and \"off\" to disable it."),
2078  NULL,
2080  &setlist, &showlist);
2081 
2082  add_setshow_filename_cmd ("data-directory", class_maintenance,
2083  &staged_gdb_datadir, _("Set GDB's data directory."),
2084  _("Show GDB's data directory."),
2085  _("\
2086 When set, GDB uses the specified path to search for data files."),
2088  &setlist,
2089  &showlist);
2090 
2091  add_setshow_auto_boolean_cmd ("interactive-mode", class_support,
2092  &interactive_mode, _("\
2093 Set whether GDB's standard input is a terminal."), _("\
2094 Show whether GDB's standard input is a terminal."), _("\
2095 If on, GDB assumes that standard input is a terminal. In practice, it\n\
2096 means that GDB should wait for the user to answer queries associated to\n\
2097 commands entered at the command prompt. If off, GDB assumes that standard\n\
2098 input is not a terminal, and uses the default answer to all queries.\n\
2099 If auto (the default), determine which mode to use based on the standard\n\
2100 input settings."),
2101  NULL,
2103  &setlist, &showlist);
2104 
2105  c = add_cmd ("new-ui", class_support, new_ui_command, _("\
2106 Create a new UI. It takes two arguments:\n\
2107 The first argument is the name of the interpreter to run.\n\
2108 The second argument is the terminal the UI runs on.\n"), &cmdlist);
2110 }
2111 
2112 void
2113 gdb_init (char *argv0)
2114 {
2115  if (pre_init_ui_hook)
2116  pre_init_ui_hook ();
2117 
2118  /* Run the init function of each source file. */
2119 
2120 #ifdef __MSDOS__
2121  /* Make sure we return to the original directory upon exit, come
2122  what may, since the OS doesn't do that for us. */
2123  make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
2124 #endif
2125 
2126  init_cmd_lists (); /* This needs to be done first. */
2127  initialize_targets (); /* Setup target_terminal macros for utils.c. */
2128  initialize_utils (); /* Make errors and warnings possible. */
2129 
2130  init_page_info ();
2131 
2132  /* Here is where we call all the _initialize_foo routines. */
2134 
2135  /* This creates the current_program_space. Do this after all the
2136  _initialize_foo routines have had a chance to install their
2137  per-sspace data keys. Also do this before
2138  initialize_current_architecture is called, because it accesses
2139  exec_bfd of the current program space. */
2143  init_cli_cmds();
2144  init_main (); /* But that omits this file! Do it now. */
2145 
2147 
2148  /* Take a snapshot of our tty state before readline/ncurses have had a chance
2149  to alter it. */
2151 
2152  async_init_signals ();
2153 
2154  /* We need a default language for parsing expressions, so simple
2155  things like "set width 0" won't fail if no language is explicitly
2156  set in a config file or implicitly set by reading an executable
2157  during startup. */
2159  expected_language = current_language; /* Don't warn about the change. */
2160 
2161  /* Python initialization, for example, can require various commands to be
2162  installed. For example "info pretty-printer" needs the "info"
2163  prefix to be installed. Keep things simple and just do final
2164  script initialization here. */
2166 }
static int command_count
Definition: top.c:1062
const char * string
Definition: signals.c:50
int confirm
void add_setshow_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:591
int have_live_inferiors(void)
Definition: inferior.c:451
void gdb_add_history(const char *command)
Definition: top.c:1067
void dont_repeat(void)
Definition: top.c:695
unsigned int deprecated_warn_user
Definition: cli-decode.h:66
#define ALL_UIS(UI)
Definition: top.h:210
void(* after_char_processing_hook)(void)
Definition: event-top.c:121
struct cmd_list_element * next
Definition: cli-decode.h:49
static void show_history_filename(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:845
static void set_history_size_command(const char *args, int from_tty, struct cmd_list_element *c)
Definition: top.c:1771
void async_init_signals(void)
Definition: event-top.c:872
void language_info(int quietly)
Definition: language.c:394
#define JIT_READER_DIR
Definition: config.h:596
char * lim_at_start
Definition: top.c:175
struct ui * current_ui
Definition: event-top.c:453
void execute_cmd_pre_hook(struct cmd_list_element *c)
Definition: cli-script.c:366
void init_history(void)
Definition: top.c:1821
struct ui_file * m_gdb_stdin
Definition: top.h:141
#define PKGVERSION
Definition: config.h:624
void initialize_inferiors(void)
Definition: inferior.c:968
int command_editing
Definition: top.h:89
static void dont_repeat_command(const char *ignored, int from_tty)
Definition: top.c:1685
void fputs_unfiltered(const char *buf, struct ui_file *file)
Definition: ui-file.c:127
int from_tty
Definition: top.c:1465
void xfree(void *)
#define REPORT_BUGS_TO
Definition: config.h:660
void finish_ext_lang_initialization(void)
Definition: extension.c:329
#define Hist_print
Definition: top.c:1695
__extension__ enum cmd_types type
Definition: cli-decode.h:100
void add_setshow_auto_boolean_cmd(const char *name, enum command_class theclass, enum auto_boolean *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:544
#define JIT_READER_DIR_RELOCATABLE
Definition: config.h:600
void init_cli_cmds(void)
Definition: cli-cmds.c:1933
#define INT_MAX
Definition: defs.h:477
const char * default_word_break_characters(void)
Definition: language.c:679
void warning(const char *fmt,...)
Definition: errors.c:26
int num
Definition: top.h:68
int async
Definition: top.h:102
#define GDB_DATADIR
Definition: config.h:45
void cli_display_match_list(char **matches, int len, int max)
Definition: cli-out.c:361
void do_final_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:183
int query(const char *ctlstr,...)
Definition: utils.c:1063
struct ui * ui_list
Definition: event-top.c:454
void(* deprecated_attach_hook)(void)
Definition: top.c:221
static enum auto_boolean interactive_mode
Definition: top.c:1653
enum language set_language(enum language lang)
Definition: language.c:379
void change_line_handler(int editing)
Definition: event-top.c:246
void target_detach(const char *args, int from_tty)
Definition: target.c:2147
int(* deprecated_ui_loop_hook)(int)
Definition: top.c:185
int history_expansion_p
Definition: top.c:806
#define gdb_stdin
Definition: utils.h:342
static char * history_filename
Definition: top.c:843
char * buffer
Definition: buffer.h:25
static const char * repeat_arguments
Definition: top.c:526
struct cmd_list_element * lookup_cmd(const char **line, struct cmd_list_element *list, const char *cmdtype, int allow_unknown, int ignore_help_classes)
Definition: cli-decode.c:1515
void initialize_targets(void)
Definition: target.c:4070
#define target_log_command(p)
Definition: target.h:2226
#define AUTO_LOAD_SAFE_PATH
Definition: config.h:11
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
Definition: cli-decode.c:262
void interpreter_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
Definition: interps.c:432
struct cmd_list_element * lookup_cmd_1(const char **text, struct cmd_list_element *clist, struct cmd_list_element **result_list, int ignore_help_classes)
Definition: cli-decode.c:1385
void target_async(int enable)
Definition: target.c:3860
static int history_remove_duplicates
Definition: top.c:831
enum language la_language
Definition: language.h:144
static void set_readline_history_size(int history_size)
Definition: top.c:1759
struct cmd_list_element * cmdlist
Definition: cli-cmds.c:79
struct inferior * iterate_over_inferiors(int(*callback)(struct inferior *, void *), void *data)
Definition: inferior.c:346
void print_gdb_configuration(struct ui_file *stream)
Definition: top.c:1339
void target_kill(void)
Definition: target.c:420
char * skip_spaces(char *chp)
Definition: common-utils.c:337
void set_rl_completer_word_break_characters(const char *break_chars)
Definition: completer.c:1086
char * gdb_completion_word_break_characters()
Definition: completer.c:1863
char * command_line_input(const char *prompt_arg, int repeat, const char *annotation_suffix)
Definition: top.c:1173
#define _(String)
Definition: gdb_locale.h:35
const char gdbinit[]
void(* deprecated_readline_end_hook)(void)
Definition: top.c:216
void deprecated_cmd_warning(const char *text)
Definition: cli-decode.c:1638
static void show_annotation_level(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:1913
void set_repeat_arguments(const char *args)
Definition: top.c:531
static void undo_terminal_modifications_before_exit(void)
Definition: top.c:1546
void gdb_disable_readline(void)
Definition: event-top.c:1226
size_t used_size
Definition: buffer.h:27
static void show_history_remove_duplicates(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:834
static int gdb_readline_wrapper_done
Definition: top.c:870
#define END_CATCH
void initialize_all_files(void)
Definition: init.c:165
std::string execute_command_to_string(const char *p, int from_tty)
Definition: top.c:655
void set_initial_gdb_ttystate(void)
Definition: inflow.c:158
static void ours()
Definition: target.c:483
void execute_user_command(struct cmd_list_element *c, const char *args)
Definition: cli-script.c:388
static int command_editing_p
Definition: top.c:800
void printf_filtered(const char *format,...)
Definition: utils.c:2045
static void show_interactive_mode(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:1658
static void init_main(void)
Definition: top.c:1963
#define WITH_PYTHON_PATH
Definition: config.h:751
char lang_frame_mismatch_warn[]
Definition: language.c:119
char * args
Definition: top.c:1464
struct command_line * user_commands
Definition: cli-decode.h:188
#define XNEW(T)
Definition: poison.h:109
void(* input_handler)(char *)
Definition: top.h:84
struct cleanup * all_cleanups(void)
Definition: cleanups.c:165
#define TARGET_SYSTEM_ROOT_RELOCATABLE
Definition: config.h:705
scoped_restore_tmpl< T > make_scoped_restore(T *var)
#define DEFAULT_PROMPT
Definition: top.c:90
#define TRY
void switch_to_thread(ptid_t ptid)
Definition: thread.c:1445
static int write_history_p
Definition: top.c:808
struct cmd_list_element * setlist
Definition: cli-cmds.c:111
int info_verbose
Definition: top.c:1791
const char *const name
Definition: aarch64-tdep.c:76
static void gdb_readline_wrapper_line(char *line)
Definition: top.c:898
static void show_editing(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:1904
void show_history(const char *args, int from_tty)
Definition: top.c:1786
void interp_pre_command_loop(struct interp *interp)
Definition: interps.c:334
void set_gdb_data_directory(const char *new_datadir)
Definition: main.c:108
void target_dcache_invalidate(void)
Definition: target-dcache.c:52
#define CATCH(EXCEPTION, MASK)
std::unique_ptr< FILE, gdb_file_deleter > gdb_file_up
Definition: filestuff.h:59
ui(FILE *instream, FILE *outstream, FILE *errstream)
Definition: top.c:251
static int suppress_dont_repeat
Definition: top.c:690
const char * source_file_name
Definition: top.c:402
static int highest_ui_num
Definition: top.c:247
FILE * instream
Definition: top.h:115
char ** gdb_rl_attempted_completion_function(const char *text, int start, int end)
Definition: completer.c:2200
void command_handler(const char *command)
Definition: event-top.c:568
void cmd_func(struct cmd_list_element *cmd, const char *args, int from_tty)
Definition: cli-decode.c:1877
void fprintf_filtered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2008
static void show_gdb_datadir(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:1943
void set_cmd_completer(struct cmd_list_element *cmd, completer_ftype *completer)
Definition: cli-decode.c:160
#define gen_ret_current_ui_field_ptr(type, name)
Definition: top.c:96
static gdb_file_up open_terminal_stream(const char *name)
Definition: top.c:313
enum prompt_state prompt_state
Definition: top.h:131
void add_setshow_zinteger_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:748
Definition: ptid.h:35
void(* deprecated_warning_hook)(const char *, va_list)
Definition: top.c:200
struct cmd_list_element * showlist
Definition: cli-cmds.c:119
void exception_print(struct ui_file *file, struct gdb_exception e)
Definition: exceptions.c:109
void quit_force(int *exit_arg, int from_tty)
Definition: top.c:1566
struct ui * next
Definition: top.h:65
ptid_t pid_to_ptid(int pid)
Definition: ptid.c:39
void tui_disable(void)
Definition: tui.c:518
#define current_uiout
Definition: ui-out.h:39
int job_control
Definition: job-control.c:29
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
Definition: cleanups.c:116
struct frame_info * deprecated_safe_get_selected_frame(void)
Definition: frame.c:1667
int secondary_prompt_depth
Definition: top.h:106
int gdb_in_secondary_prompt_p(struct ui *ui)
Definition: top.c:888
void print_gdb_version(struct ui_file *stream)
Definition: top.c:1284
int return_child_result
Definition: main.c:87
const char version[]
Definition: version.c:2
#define GDB_DATADIR_RELOCATABLE
Definition: config.h:49
int annotation_level
Definition: stack.c:111
int(* deprecated_query_hook)(const char *, va_list)
Definition: top.c:196
void add_setshow_string_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:613
int quit_confirm(void)
Definition: top.c:1526
char * gdb_datadir
Definition: main.c:62
struct ui * main_ui
Definition: event-top.c:452
Definition: gnu-nat.c:174
void pop_all_targets(void)
Definition: target.c:759
int remote_debug
Definition: top.c:171
Definition: top.h:56
static void gdb_rl_operate_and_get_next_completion(void)
Definition: top.c:1020
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
Definition: gnu-nat.c:1822
#define target_is_async_p()
Definition: target.h:1781
static int gdb_rl_operate_and_get_next(int count, int key)
Definition: top.c:1041
void init_cmd_lists(void)
Definition: cli-cmds.c:1606
#define CMD_LIST_AMBIGUOUS
Definition: command.h:228
char * get_prompt(void)
Definition: top.c:1445
static int kill_or_detach(struct inferior *inf, void *args)
Definition: top.c:1472
ptid_t ptid
Definition: gdbthread.h:219
language_mode
Definition: language.h:468
#define target_has_execution
Definition: target.h:1756
void(* pre_init_ui_hook)(void)
Definition: top.c:428
int is_complete_command(struct cmd_list_element *c)
Definition: cli-cmds.c:310
static int history_size_setshow_var
Definition: top.c:819
int batch_flag
Definition: main.c:79
void printf_unfiltered(const char *format,...)
Definition: utils.c:2056
~ui()
Definition: top.c:287
virtual void puts(const char *str)
Definition: ui-file.h:63
#define O_NOCTTY
Definition: top.c:78
void maybe_wait_sync_command_done(int was_sync)
Definition: top.c:511
struct cmd_list_element * sethistlist
Definition: cli-cmds.c:123
void quit_command(const char *args, int from_tty)
Definition: cli-cmds.c:331
char * handle_line_of_input(struct buffer *cmd_line_buffer, char *rl, int repeat, const char *annotation_suffix)
Definition: event-top.c:645
#define DEBUGDIR_RELOCATABLE
Definition: config.h:29
void(* deprecated_context_hook)(int id)
Definition: top.c:244
const char * get_gdb_completer_quote_characters(void)
Definition: completer.c:134
static char * staged_gdb_datadir
Definition: top.c:1929
void cmd_show_list(struct cmd_list_element *list, int from_tty, const char *prefix)
Definition: cli-setshow.c:657
char * gdb_readline_wrapper(const char *prompt)
Definition: top.c:964
void quit_cover(void)
struct ui_file * m_gdb_stdout
Definition: top.h:139
std::string & string()
Definition: ui-file.h:132
#define gdb_assert(expr)
Definition: gdb_assert.h:32
Definition: value.c:169
void initialize_progspace(void)
Definition: progspace.c:422
void initialize_stdin_serial(void)
Definition: inflow.c:762
void wrap_here(const char *indent)
Definition: utils.c:1596
Definition: ui-out.h:77
#define SYSTEM_GDBINIT_RELOCATABLE
Definition: config.h:699
int remote_timeout
Definition: top.c:167
static void new_ui_command(const char *args, int from_tty)
Definition: top.c:327
scoped_restore_tmpl< int > prevent_dont_repeat(void)
Definition: top.c:713
int input_interactive_p(struct ui *ui)
Definition: top.c:1673
#define PYTHON_PATH_RELOCATABLE
Definition: config.h:654
void(* deprecated_readline_begin_hook)(const char *,...)
Definition: top.c:214
static int print_inferior_quit_action(struct inferior *inf, void *arg)
Definition: top.c:1503
void show_commands(const char *args, int from_tty)
Definition: top.c:1697
void initialize_utils(void)
Definition: utils.c:2677
Definition: top.c:1462
void help_list(struct cmd_list_element *list, const char *cmdtype, enum command_class theclass, struct ui_file *stream)
Definition: cli-decode.c:1071
void discard_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:212
int non_stop
Definition: infrun.c:204
const struct language_defn * current_language
Definition: language.c:81
void puts_unfiltered(const char *string)
Definition: utils.c:2091
static void set_gdb_datadir(const char *args, int from_tty, struct cmd_list_element *c)
Definition: top.c:1934
void void void void void void void void void perror_with_name(const char *string) ATTRIBUTE_NORETURN
Definition: utils.c:692
void buffer_init(struct buffer *buffer)
Definition: buffer.c:60
void execute_cmd_post_hook(struct cmd_list_element *c)
Definition: cli-script.c:377
enum language get_frame_language(struct frame_info *frame)
Definition: frame.c:2740
void check_frame_language_change(void)
Definition: top.c:456
struct cleanup * make_bpstat_clear_actions_cleanup(void)
Definition: utils.c:3168
static void(* saved_after_char_processing_hook)(void)
Definition: top.c:882
static char * top_prompt
Definition: top.c:1440
#define gdb_stderr
Definition: utils.h:344
pid_t pid
Definition: gnu-nat.c:187
int gdb_do_one_event(void)
Definition: event-loop.c:295
static void show_history_size(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:822
const char * c_str() const
Definition: ui-file.h:137
void wait_sync_command_done(void)
Definition: top.c:497
prompt_state
Definition: top.h:31
scoped_value_mark prepare_execute_command()
Definition: top.c:440
static void show_prompt(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:1886
void gdb_rl_callback_handler_remove(void)
Definition: event-top.c:294
#define SYSTEM_GDBINIT
Definition: config.h:695
char * safe_strerror(int)
void set_top_level_interpreter(const char *name)
Definition: interps.c:243
static int operate_saved_history
Definition: top.c:1015
const char * target_pid_to_str(ptid_t ptid)
Definition: target.c:2194
const struct language_defn * expected_language
Definition: language.c:87
void set_prompt(const char *s)
Definition: top.c:1453
const char host_name[]
Definition: version.c:3
int offset
Definition: agent.c:65
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:569
#define GDBINIT
Definition: config.h:42
static void set_history_filename(const char *args, int from_tty, struct cmd_list_element *c)
Definition: top.c:1951
static void show_write_history_p(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:810
Definition: buffer.h:23
#define AUTO_LOAD_DIR
Definition: config.h:8
enum command_class theclass
Definition: cli-decode.h:55
#define TARGET_SYSTEM_ROOT
Definition: config.h:702
std::string string_printf(const char *fmt,...)
Definition: common-utils.c:150
const char target_name[]
Definition: version.c:4
struct ui_file * gdb_stdtarg
Definition: main.c:75
char * current_directory
Definition: top.c:133
int gdb_open_cloexec(const char *filename, int flags, unsigned long mode)
Definition: filestuff.c:283
struct cleanup * make_final_cleanup(make_cleanup_ftype *function, void *arg)
Definition: cleanups.c:135
auto_boolean
Definition: defs.h:237
int input_interactive_p
Definition: top.h:128
int source_line_number
Definition: top.c:396
language
Definition: defs.h:203
struct buffer line_buffer
Definition: top.h:72
void(* deprecated_call_command_hook)(struct cmd_list_element *c, const char *cmd, int from_tty)
Definition: top.c:239
void display_gdb_prompt(const char *new_prompt)
Definition: event-top.c:353
FILE * stdin_stream
Definition: top.h:109
void disconnect_tracing(void)
Definition: tracepoint.c:2094
struct interp * top_level_interpreter(void)
Definition: interps.c:449
#define gdb_stdlog
Definition: utils.h:349
void do_set_command(const char *arg, int from_tty, struct cmd_list_element *c)
Definition: cli-setshow.c:150
int server_command
Definition: top.c:145
void(* handler_orig)(char *)
Definition: top.c:922
struct cmd_list_element * showhistlist
Definition: cli-cmds.c:127
const char * doc
Definition: cli-decode.h:130
static void gdb_readline_wrapper_cleanup(void *arg)
Definition: top.c:930
void gdb_init(char *argv0)
Definition: top.c:2113
void do_show_command(const char *arg, int from_tty, struct cmd_list_element *c)
Definition: cli-setshow.c:560
void set_verbose(const char *args, int from_tty, struct cmd_list_element *c)
Definition: top.c:1795
void init_page_info(void)
Definition: utils.c:1342
argv
Definition: __init__.py:63
struct ui_file * gdb_stdtargerr
Definition: main.c:76
void initialize_current_architecture(void)
Definition: arch-utils.c:626
static void gdb_safe_append_history(void)
Definition: top.c:1112
static char * gdb_readline_no_editing(const char *prompt)
Definition: top.c:728
int interruptible_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
Definition: event-top.c:985
void print_command_trace(const char *cmd)
Definition: cli-script.c:447
int inhibit_gdbinit
void gdb_flush(struct ui_file *file)
Definition: ui-file.c:93
#define QUIT
Definition: defs.h:179
void observer_notify_gdb_datadir_changed(void)
static void show_exec_done_display_p(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: top.c:1920
char * saved_command_line
Definition: top.c:137
struct cmd_list_element * add_com(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc)
Definition: cli-decode.c:902
char *(* deprecated_readline_hook)(const char *)
Definition: top.c:215
#define ISATTY(FP)
Definition: defs.h:671
char * buffer_finish(struct buffer *buffer)
Definition: buffer.c:66
void(* deprecated_interactive_hook)(void)
Definition: top.c:227
void execute_command(const char *p, int from_tty)
Definition: top.c:540
int has_stack_frames(void)
Definition: frame.c:1609
void(* deprecated_print_frame_info_listing_hook)(struct symtab *s, int line, int stopline, int noerror)
Definition: top.c:190
struct thread_info * any_thread_of_process(int pid)
Definition: thread.c:656
void set_history(const char *args, int from_tty)
Definition: top.c:1778
void add_setshow_zuinteger_unlimited_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:765
void error(const char *fmt,...)
Definition: errors.c:38
int return_child_result_value
Definition: main.c:88
static char * gdb_readline_wrapper_result
Definition: top.c:874
#define DEBUGDIR
Definition: config.h:25
int set_editing_cmd_var
Definition: event-top.c:89
int cmd_func_p(struct cmd_list_element *cmd)
Definition: cli-decode.c:1869
void do_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:174
void(* deprecated_detach_hook)(void)
Definition: top.c:222
static void buffer_grow_char(struct buffer *buffer, char c)
Definition: buffer.h:38
int exec_done_display_p
Definition: event-top.c:93
#define gdb_stdout
Definition: utils.h:340
void read_command_file(FILE *stream)
Definition: top.c:406
ptid_t(* deprecated_target_wait_hook)(ptid_t ptid, struct target_waitstatus *status, int options)
Definition: top.c:232
struct ui_file * m_gdb_stderr
Definition: top.h:143
static void set_editing(const char *args, int from_tty, struct cmd_list_element *c)
Definition: top.c:1895
LONGEST parse_and_eval_long(const char *exp)
Definition: eval.c:111