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