PR python/17372 - Python hangs when displaying help()
[external/binutils.git] / gdb / event-top.c
1 /* Top level stuff for GDB, the GNU debugger.
2
3    Copyright (C) 1999-2014 Free Software Foundation, Inc.
4
5    Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "top.h"
24 #include "inferior.h"
25 #include "infrun.h"
26 #include "target.h"
27 #include "terminal.h"           /* for job_control */
28 #include "event-loop.h"
29 #include "event-top.h"
30 #include "interps.h"
31 #include <signal.h>
32 #include "cli/cli-script.h"     /* for reset_command_nest_depth */
33 #include "main.h"
34 #include "gdbthread.h"
35 #include "observer.h"
36 #include "continuations.h"
37 #include "gdbcmd.h"             /* for dont_repeat() */
38 #include "annotate.h"
39 #include "maint.h"
40
41 /* readline include files.  */
42 #include "readline/readline.h"
43 #include "readline/history.h"
44
45 /* readline defines this.  */
46 #undef savestring
47
48 static void rl_callback_read_char_wrapper (gdb_client_data client_data);
49 static void command_line_handler (char *rl);
50 static void change_line_handler (void);
51 static void command_handler (char *command);
52 static char *top_level_prompt (void);
53
54 /* Signal handlers.  */
55 #ifdef SIGQUIT
56 static void handle_sigquit (int sig);
57 #endif
58 #ifdef SIGHUP
59 static void handle_sighup (int sig);
60 #endif
61 static void handle_sigfpe (int sig);
62
63 /* Functions to be invoked by the event loop in response to
64    signals.  */
65 #if defined (SIGQUIT) || defined (SIGHUP)
66 static void async_do_nothing (gdb_client_data);
67 #endif
68 #ifdef SIGHUP
69 static void async_disconnect (gdb_client_data);
70 #endif
71 static void async_float_handler (gdb_client_data);
72 #ifdef STOP_SIGNAL
73 static void async_stop_sig (gdb_client_data);
74 #endif
75 static void async_sigterm_handler (gdb_client_data arg);
76
77 /* Readline offers an alternate interface, via callback
78    functions.  These are all included in the file callback.c in the
79    readline distribution.  This file provides (mainly) a function, which
80    the event loop uses as callback (i.e. event handler) whenever an event
81    is detected on the standard input file descriptor.
82    readline_callback_read_char is called (by the GDB event loop) whenever
83    there is a new character ready on the input stream.  This function
84    incrementally builds a buffer internal to readline where it
85    accumulates the line read up to the point of invocation.  In the
86    special case in which the character read is newline, the function
87    invokes a GDB supplied callback routine, which does the processing of
88    a full command line.  This latter routine is the asynchronous analog
89    of the old command_line_input in gdb.  Instead of invoking (and waiting
90    for) readline to read the command line and pass it back to
91    command_loop for processing, the new command_line_handler function has
92    the command line already available as its parameter.  INPUT_HANDLER is
93    to be set to the function that readline will invoke when a complete
94    line of input is ready.  CALL_READLINE is to be set to the function
95    that readline offers as callback to the event_loop.  */
96
97 void (*input_handler) (char *);
98 void (*call_readline) (gdb_client_data);
99
100 /* Important variables for the event loop.  */
101
102 /* This is used to determine if GDB is using the readline library or
103    its own simplified form of readline.  It is used by the asynchronous
104    form of the set editing command.
105    ezannoni: as of 1999-04-29 I expect that this
106    variable will not be used after gdb is changed to use the event
107    loop as default engine, and event-top.c is merged into top.c.  */
108 int async_command_editing_p;
109
110 /* This is the annotation suffix that will be used when the
111    annotation_level is 2.  */
112 char *async_annotation_suffix;
113
114 /* This is used to display the notification of the completion of an
115    asynchronous execution command.  */
116 int exec_done_display_p = 0;
117
118 /* This is the file descriptor for the input stream that GDB uses to
119    read commands from.  */
120 int input_fd;
121
122 /* Signal handling variables.  */
123 /* Each of these is a pointer to a function that the event loop will
124    invoke if the corresponding signal has received.  The real signal
125    handlers mark these functions as ready to be executed and the event
126    loop, in a later iteration, calls them.  See the function
127    invoke_async_signal_handler.  */
128 static struct async_signal_handler *sigint_token;
129 #ifdef SIGHUP
130 static struct async_signal_handler *sighup_token;
131 #endif
132 #ifdef SIGQUIT
133 static struct async_signal_handler *sigquit_token;
134 #endif
135 static struct async_signal_handler *sigfpe_token;
136 #ifdef STOP_SIGNAL
137 static struct async_signal_handler *sigtstp_token;
138 #endif
139 static struct async_signal_handler *async_sigterm_token;
140
141 /* Structure to save a partially entered command.  This is used when
142    the user types '\' at the end of a command line.  This is necessary
143    because each line of input is handled by a different call to
144    command_line_handler, and normally there is no state retained
145    between different calls.  */
146 static int more_to_come = 0;
147
148 struct readline_input_state
149   {
150     char *linebuffer;
151     char *linebuffer_ptr;
152   }
153 readline_input_state;
154
155 /* This hook is called by rl_callback_read_char_wrapper after each
156    character is processed.  */
157 void (*after_char_processing_hook) (void);
158 \f
159
160 /* Wrapper function for calling into the readline library.  The event
161    loop expects the callback function to have a paramter, while
162    readline expects none.  */
163 static void
164 rl_callback_read_char_wrapper (gdb_client_data client_data)
165 {
166   rl_callback_read_char ();
167   if (after_char_processing_hook)
168     (*after_char_processing_hook) ();
169 }
170
171 /* Initialize all the necessary variables, start the event loop,
172    register readline, and stdin, start the loop.  The DATA is the
173    interpreter data cookie, ignored for now.  */
174
175 void
176 cli_command_loop (void *data)
177 {
178   display_gdb_prompt (0);
179
180   /* Now it's time to start the event loop.  */
181   start_event_loop ();
182 }
183
184 /* Change the function to be invoked every time there is a character
185    ready on stdin.  This is used when the user sets the editing off,
186    therefore bypassing readline, and letting gdb handle the input
187    itself, via gdb_readline2.  Also it is used in the opposite case in
188    which the user sets editing on again, by restoring readline
189    handling of the input.  */
190 static void
191 change_line_handler (void)
192 {
193   /* NOTE: this operates on input_fd, not instream.  If we are reading
194      commands from a file, instream will point to the file.  However in
195      async mode, we always read commands from a file with editing
196      off.  This means that the 'set editing on/off' will have effect
197      only on the interactive session.  */
198
199   if (async_command_editing_p)
200     {
201       /* Turn on editing by using readline.  */
202       call_readline = rl_callback_read_char_wrapper;
203       input_handler = command_line_handler;
204     }
205   else
206     {
207       /* Turn off editing by using gdb_readline2.  */
208       gdb_rl_callback_handler_remove ();
209       call_readline = gdb_readline2;
210
211       /* Set up the command handler as well, in case we are called as
212          first thing from .gdbinit.  */
213       input_handler = command_line_handler;
214     }
215 }
216
217 /* The functions below are wrappers for rl_callback_handler_remove and
218    rl_callback_handler_install that keep track of whether the callback
219    handler is installed in readline.  This is necessary because after
220    handling a target event of a background execution command, we may
221    need to reinstall the callback handler if it was removed due to a
222    secondary prompt.  See gdb_readline_wrapper_line.  We don't
223    unconditionally install the handler for every target event because
224    that also clears the line buffer, thus installing it while the user
225    is typing would lose input.  */
226
227 /* Whether we've registered a callback handler with readline.  */
228 static int callback_handler_installed;
229
230 /* See event-top.h, and above.  */
231
232 void
233 gdb_rl_callback_handler_remove (void)
234 {
235   rl_callback_handler_remove ();
236   callback_handler_installed = 0;
237 }
238
239 /* See event-top.h, and above.  Note this wrapper doesn't have an
240    actual callback parameter because we always install
241    INPUT_HANDLER.  */
242
243 void
244 gdb_rl_callback_handler_install (const char *prompt)
245 {
246   /* Calling rl_callback_handler_install resets readline's input
247      buffer.  Calling this when we were already processing input
248      therefore loses input.  */
249   gdb_assert (!callback_handler_installed);
250
251   rl_callback_handler_install (prompt, input_handler);
252   callback_handler_installed = 1;
253 }
254
255 /* See event-top.h, and above.  */
256
257 void
258 gdb_rl_callback_handler_reinstall (void)
259 {
260   if (!callback_handler_installed)
261     {
262       /* Passing NULL as prompt argument tells readline to not display
263          a prompt.  */
264       gdb_rl_callback_handler_install (NULL);
265     }
266 }
267
268 /* Displays the prompt.  If the argument NEW_PROMPT is NULL, the
269    prompt that is displayed is the current top level prompt.
270    Otherwise, it displays whatever NEW_PROMPT is as a local/secondary
271    prompt.
272
273    This is used after each gdb command has completed, and in the
274    following cases:
275
276    1. When the user enters a command line which is ended by '\'
277    indicating that the command will continue on the next line.  In
278    that case the prompt that is displayed is the empty string.
279
280    2. When the user is entering 'commands' for a breakpoint, or
281    actions for a tracepoint.  In this case the prompt will be '>'
282
283    3. On prompting for pagination.  */
284
285 void
286 display_gdb_prompt (char *new_prompt)
287 {
288   char *actual_gdb_prompt = NULL;
289   struct cleanup *old_chain;
290
291   annotate_display_prompt ();
292
293   /* Reset the nesting depth used when trace-commands is set.  */
294   reset_command_nest_depth ();
295
296   old_chain = make_cleanup (free_current_contents, &actual_gdb_prompt);
297
298   /* Do not call the python hook on an explicit prompt change as
299      passed to this function, as this forms a secondary/local prompt,
300      IE, displayed but not set.  */
301   if (! new_prompt)
302     {
303       if (sync_execution)
304         {
305           /* This is to trick readline into not trying to display the
306              prompt.  Even though we display the prompt using this
307              function, readline still tries to do its own display if
308              we don't call rl_callback_handler_install and
309              rl_callback_handler_remove (which readline detects
310              because a global variable is not set).  If readline did
311              that, it could mess up gdb signal handlers for SIGINT.
312              Readline assumes that between calls to rl_set_signals and
313              rl_clear_signals gdb doesn't do anything with the signal
314              handlers.  Well, that's not the case, because when the
315              target executes we change the SIGINT signal handler.  If
316              we allowed readline to display the prompt, the signal
317              handler change would happen exactly between the calls to
318              the above two functions.  Calling
319              rl_callback_handler_remove(), does the job.  */
320
321           gdb_rl_callback_handler_remove ();
322           do_cleanups (old_chain);
323           return;
324         }
325       else
326         {
327           /* Display the top level prompt.  */
328           actual_gdb_prompt = top_level_prompt ();
329         }
330     }
331   else
332     actual_gdb_prompt = xstrdup (new_prompt);
333
334   if (async_command_editing_p)
335     {
336       gdb_rl_callback_handler_remove ();
337       gdb_rl_callback_handler_install (actual_gdb_prompt);
338     }
339   /* new_prompt at this point can be the top of the stack or the one
340      passed in.  It can't be NULL.  */
341   else
342     {
343       /* Don't use a _filtered function here.  It causes the assumed
344          character position to be off, since the newline we read from
345          the user is not accounted for.  */
346       fputs_unfiltered (actual_gdb_prompt, gdb_stdout);
347       gdb_flush (gdb_stdout);
348     }
349
350   do_cleanups (old_chain);
351 }
352
353 /* Return the top level prompt, as specified by "set prompt", possibly
354    overriden by the python gdb.prompt_hook hook, and then composed
355    with the prompt prefix and suffix (annotations).  The caller is
356    responsible for freeing the returned string.  */
357
358 static char *
359 top_level_prompt (void)
360 {
361   char *prefix;
362   char *prompt = NULL;
363   char *suffix;
364   char *composed_prompt;
365   size_t prompt_length;
366
367   /* Give observers a chance of changing the prompt.  E.g., the python
368      `gdb.prompt_hook' is installed as an observer.  */
369   observer_notify_before_prompt (get_prompt ());
370
371   prompt = xstrdup (get_prompt ());
372
373   if (annotation_level >= 2)
374     {
375       /* Prefix needs to have new line at end.  */
376       prefix = (char *) alloca (strlen (async_annotation_suffix) + 10);
377       strcpy (prefix, "\n\032\032pre-");
378       strcat (prefix, async_annotation_suffix);
379       strcat (prefix, "\n");
380
381       /* Suffix needs to have a new line at end and \032 \032 at
382          beginning.  */
383       suffix = (char *) alloca (strlen (async_annotation_suffix) + 6);
384       strcpy (suffix, "\n\032\032");
385       strcat (suffix, async_annotation_suffix);
386       strcat (suffix, "\n");
387     }
388   else
389     {
390       prefix = "";
391       suffix = "";
392     }
393
394   prompt_length = strlen (prefix) + strlen (prompt) + strlen (suffix);
395   composed_prompt = xmalloc (prompt_length + 1);
396
397   strcpy (composed_prompt, prefix);
398   strcat (composed_prompt, prompt);
399   strcat (composed_prompt, suffix);
400
401   xfree (prompt);
402
403   return composed_prompt;
404 }
405
406 /* When there is an event ready on the stdin file desriptor, instead
407    of calling readline directly throught the callback function, or
408    instead of calling gdb_readline2, give gdb a chance to detect
409    errors and do something.  */
410 void
411 stdin_event_handler (int error, gdb_client_data client_data)
412 {
413   if (error)
414     {
415       printf_unfiltered (_("error detected on stdin\n"));
416       delete_file_handler (input_fd);
417       discard_all_continuations ();
418       discard_all_intermediate_continuations ();
419       /* If stdin died, we may as well kill gdb.  */
420       quit_command ((char *) 0, stdin == instream);
421     }
422   else
423     (*call_readline) (client_data);
424 }
425
426 /* Re-enable stdin after the end of an execution command in
427    synchronous mode, or after an error from the target, and we aborted
428    the exec operation.  */
429
430 void
431 async_enable_stdin (void)
432 {
433   if (sync_execution)
434     {
435       /* See NOTE in async_disable_stdin().  */
436       /* FIXME: cagney/1999-09-27: Call this before clearing
437          sync_execution.  Current target_terminal_ours() implementations
438          check for sync_execution before switching the terminal.  */
439       target_terminal_ours ();
440       sync_execution = 0;
441     }
442 }
443
444 /* Disable reads from stdin (the console) marking the command as
445    synchronous.  */
446
447 void
448 async_disable_stdin (void)
449 {
450   sync_execution = 1;
451 }
452 \f
453
454 /* Handles a gdb command.  This function is called by
455    command_line_handler, which has processed one or more input lines
456    into COMMAND.  */
457 /* NOTE: 1999-04-30 This is the asynchronous version of the command_loop
458    function.  The command_loop function will be obsolete when we
459    switch to use the event loop at every execution of gdb.  */
460 static void
461 command_handler (char *command)
462 {
463   int stdin_is_tty = ISATTY (stdin);
464   struct cleanup *stat_chain;
465
466   clear_quit_flag ();
467   if (instream == stdin && stdin_is_tty)
468     reinitialize_more_filter ();
469
470   /* If readline returned a NULL command, it means that the connection
471      with the terminal is gone.  This happens at the end of a
472      testsuite run, after Expect has hung up but GDB is still alive.
473      In such a case, we just quit gdb killing the inferior program
474      too.  */
475   if (command == 0)
476     {
477       printf_unfiltered ("quit\n");
478       execute_command ("quit", stdin == instream);
479     }
480
481   stat_chain = make_command_stats_cleanup (1);
482
483   execute_command (command, instream == stdin);
484
485   /* Do any commands attached to breakpoint we stopped at.  */
486   bpstat_do_actions ();
487
488   do_cleanups (stat_chain);
489 }
490
491 /* Handle a complete line of input.  This is called by the callback
492    mechanism within the readline library.  Deal with incomplete
493    commands as well, by saving the partial input in a global
494    buffer.  */
495
496 /* NOTE: 1999-04-30 This is the asynchronous version of the
497    command_line_input function; command_line_input will become
498    obsolete once we use the event loop as the default mechanism in
499    GDB.  */
500 static void
501 command_line_handler (char *rl)
502 {
503   static char *linebuffer = 0;
504   static unsigned linelength = 0;
505   char *p;
506   char *p1;
507   char *nline;
508   int repeat = (instream == stdin);
509
510   if (annotation_level > 1 && instream == stdin)
511     {
512       printf_unfiltered (("\n\032\032post-"));
513       puts_unfiltered (async_annotation_suffix);
514       printf_unfiltered (("\n"));
515     }
516
517   if (linebuffer == 0)
518     {
519       linelength = 80;
520       linebuffer = (char *) xmalloc (linelength);
521       linebuffer[0] = '\0';
522     }
523
524   p = linebuffer;
525
526   if (more_to_come)
527     {
528       strcpy (linebuffer, readline_input_state.linebuffer);
529       p = readline_input_state.linebuffer_ptr;
530       xfree (readline_input_state.linebuffer);
531       more_to_come = 0;
532     }
533
534 #ifdef STOP_SIGNAL
535   if (job_control)
536     signal (STOP_SIGNAL, handle_stop_sig);
537 #endif
538
539   /* Make sure that all output has been output.  Some machines may let
540      you get away with leaving out some of the gdb_flush, but not
541      all.  */
542   wrap_here ("");
543   gdb_flush (gdb_stdout);
544   gdb_flush (gdb_stderr);
545
546   if (source_file_name != NULL)
547     ++source_line_number;
548
549   /* If we are in this case, then command_handler will call quit 
550      and exit from gdb.  */
551   if (!rl || rl == (char *) EOF)
552     {
553       command_handler (0);
554       return;                   /* Lint.  */
555     }
556   if (strlen (rl) + 1 + (p - linebuffer) > linelength)
557     {
558       linelength = strlen (rl) + 1 + (p - linebuffer);
559       nline = (char *) xrealloc (linebuffer, linelength);
560       p += nline - linebuffer;
561       linebuffer = nline;
562     }
563   p1 = rl;
564   /* Copy line.  Don't copy null at end.  (Leaves line alone
565      if this was just a newline).  */
566   while (*p1)
567     *p++ = *p1++;
568
569   xfree (rl);                   /* Allocated in readline.  */
570
571   if (p > linebuffer && *(p - 1) == '\\')
572     {
573       *p = '\0';
574       p--;                      /* Put on top of '\'.  */
575
576       readline_input_state.linebuffer = xstrdup (linebuffer);
577       readline_input_state.linebuffer_ptr = p;
578
579       /* We will not invoke a execute_command if there is more
580          input expected to complete the command.  So, we need to
581          print an empty prompt here.  */
582       more_to_come = 1;
583       display_gdb_prompt ("");
584       return;
585     }
586
587 #ifdef STOP_SIGNAL
588   if (job_control)
589     signal (STOP_SIGNAL, SIG_DFL);
590 #endif
591
592 #define SERVER_COMMAND_LENGTH 7
593   server_command =
594     (p - linebuffer > SERVER_COMMAND_LENGTH)
595     && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
596   if (server_command)
597     {
598       /* Note that we don't set `line'.  Between this and the check in
599          dont_repeat, this insures that repeating will still do the
600          right thing.  */
601       *p = '\0';
602       command_handler (linebuffer + SERVER_COMMAND_LENGTH);
603       display_gdb_prompt (0);
604       return;
605     }
606
607   /* Do history expansion if that is wished.  */
608   if (history_expansion_p && instream == stdin
609       && ISATTY (instream))
610     {
611       char *history_value;
612       int expanded;
613
614       *p = '\0';                /* Insert null now.  */
615       expanded = history_expand (linebuffer, &history_value);
616       if (expanded)
617         {
618           /* Print the changes.  */
619           printf_unfiltered ("%s\n", history_value);
620
621           /* If there was an error, call this function again.  */
622           if (expanded < 0)
623             {
624               xfree (history_value);
625               return;
626             }
627           if (strlen (history_value) > linelength)
628             {
629               linelength = strlen (history_value) + 1;
630               linebuffer = (char *) xrealloc (linebuffer, linelength);
631             }
632           strcpy (linebuffer, history_value);
633           p = linebuffer + strlen (linebuffer);
634         }
635       xfree (history_value);
636     }
637
638   /* If we just got an empty line, and that is supposed to repeat the
639      previous command, return the value in the global buffer.  */
640   if (repeat && p == linebuffer && *p != '\\')
641     {
642       command_handler (saved_command_line);
643       display_gdb_prompt (0);
644       return;
645     }
646
647   for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
648   if (repeat && !*p1)
649     {
650       command_handler (saved_command_line);
651       display_gdb_prompt (0);
652       return;
653     }
654
655   *p = 0;
656
657   /* Add line to history if appropriate.  */
658   if (*linebuffer && input_from_terminal_p ())
659     add_history (linebuffer);
660
661   /* Note: lines consisting solely of comments are added to the command
662      history.  This is useful when you type a command, and then
663      realize you don't want to execute it quite yet.  You can comment
664      out the command and then later fetch it from the value history
665      and remove the '#'.  The kill ring is probably better, but some
666      people are in the habit of commenting things out.  */
667   if (*p1 == '#')
668     *p1 = '\0';                 /* Found a comment.  */
669
670   /* Save into global buffer if appropriate.  */
671   if (repeat)
672     {
673       if (linelength > saved_command_line_size)
674         {
675           saved_command_line = xrealloc (saved_command_line, linelength);
676           saved_command_line_size = linelength;
677         }
678       strcpy (saved_command_line, linebuffer);
679       if (!more_to_come)
680         {
681           command_handler (saved_command_line);
682           display_gdb_prompt (0);
683         }
684       return;
685     }
686
687   command_handler (linebuffer);
688   display_gdb_prompt (0);
689   return;
690 }
691
692 /* Does reading of input from terminal w/o the editing features
693    provided by the readline library.  */
694
695 /* NOTE: 1999-04-30 Asynchronous version of gdb_readline; gdb_readline
696    will become obsolete when the event loop is made the default
697    execution for gdb.  */
698 void
699 gdb_readline2 (gdb_client_data client_data)
700 {
701   int c;
702   char *result;
703   int input_index = 0;
704   int result_size = 80;
705   static int done_once = 0;
706
707   /* Unbuffer the input stream, so that, later on, the calls to fgetc
708      fetch only one char at the time from the stream.  The fgetc's will
709      get up to the first newline, but there may be more chars in the
710      stream after '\n'.  If we buffer the input and fgetc drains the
711      stream, getting stuff beyond the newline as well, a select, done
712      afterwards will not trigger.  */
713   if (!done_once && !ISATTY (instream))
714     {
715       setbuf (instream, NULL);
716       done_once = 1;
717     }
718
719   result = (char *) xmalloc (result_size);
720
721   /* We still need the while loop here, even though it would seem
722      obvious to invoke gdb_readline2 at every character entered.  If
723      not using the readline library, the terminal is in cooked mode,
724      which sends the characters all at once.  Poll will notice that the
725      input fd has changed state only after enter is pressed.  At this
726      point we still need to fetch all the chars entered.  */
727
728   while (1)
729     {
730       /* Read from stdin if we are executing a user defined command.
731          This is the right thing for prompt_for_continue, at least.  */
732       c = fgetc (instream ? instream : stdin);
733
734       if (c == EOF)
735         {
736           if (input_index > 0)
737             /* The last line does not end with a newline.  Return it,
738                and if we are called again fgetc will still return EOF
739                and we'll return NULL then.  */
740             break;
741           xfree (result);
742           (*input_handler) (0);
743           return;
744         }
745
746       if (c == '\n')
747         {
748           if (input_index > 0 && result[input_index - 1] == '\r')
749             input_index--;
750           break;
751         }
752
753       result[input_index++] = c;
754       while (input_index >= result_size)
755         {
756           result_size *= 2;
757           result = (char *) xrealloc (result, result_size);
758         }
759     }
760
761   result[input_index++] = '\0';
762   (*input_handler) (result);
763 }
764 \f
765
766 /* Initialization of signal handlers and tokens.  There is a function
767    handle_sig* for each of the signals GDB cares about.  Specifically:
768    SIGINT, SIGFPE, SIGQUIT, SIGTSTP, SIGHUP, SIGWINCH.  These
769    functions are the actual signal handlers associated to the signals
770    via calls to signal().  The only job for these functions is to
771    enqueue the appropriate event/procedure with the event loop.  Such
772    procedures are the old signal handlers.  The event loop will take
773    care of invoking the queued procedures to perform the usual tasks
774    associated with the reception of the signal.  */
775 /* NOTE: 1999-04-30 This is the asynchronous version of init_signals.
776    init_signals will become obsolete as we move to have to event loop
777    as the default for gdb.  */
778 void
779 async_init_signals (void)
780 {
781   signal (SIGINT, handle_sigint);
782   sigint_token =
783     create_async_signal_handler (async_request_quit, NULL);
784   signal (SIGTERM, handle_sigterm);
785   async_sigterm_token
786     = create_async_signal_handler (async_sigterm_handler, NULL);
787
788   /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
789      to the inferior and breakpoints will be ignored.  */
790 #ifdef SIGTRAP
791   signal (SIGTRAP, SIG_DFL);
792 #endif
793
794 #ifdef SIGQUIT
795   /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
796      passed to the inferior, which we don't want.  It would be
797      possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
798      on BSD4.3 systems using vfork, that can affect the
799      GDB process as well as the inferior (the signal handling tables
800      might be in memory, shared between the two).  Since we establish
801      a handler for SIGQUIT, when we call exec it will set the signal
802      to SIG_DFL for us.  */
803   signal (SIGQUIT, handle_sigquit);
804   sigquit_token =
805     create_async_signal_handler (async_do_nothing, NULL);
806 #endif
807 #ifdef SIGHUP
808   if (signal (SIGHUP, handle_sighup) != SIG_IGN)
809     sighup_token =
810       create_async_signal_handler (async_disconnect, NULL);
811   else
812     sighup_token =
813       create_async_signal_handler (async_do_nothing, NULL);
814 #endif
815   signal (SIGFPE, handle_sigfpe);
816   sigfpe_token =
817     create_async_signal_handler (async_float_handler, NULL);
818
819 #ifdef STOP_SIGNAL
820   sigtstp_token =
821     create_async_signal_handler (async_stop_sig, NULL);
822 #endif
823 }
824
825 /* Tell the event loop what to do if SIGINT is received.
826    See event-signal.c.  */
827 void
828 handle_sigint (int sig)
829 {
830   signal (sig, handle_sigint);
831
832   /* We could be running in a loop reading in symfiles or something so
833      it may be quite a while before we get back to the event loop.  So
834      set quit_flag to 1 here.  Then if QUIT is called before we get to
835      the event loop, we will unwind as expected.  */
836
837   set_quit_flag ();
838
839   /* If immediate_quit is set, we go ahead and process the SIGINT right
840      away, even if we usually would defer this to the event loop.  The
841      assumption here is that it is safe to process ^C immediately if
842      immediate_quit is set.  If we didn't, SIGINT would be really
843      processed only the next time through the event loop.  To get to
844      that point, though, the command that we want to interrupt needs to
845      finish first, which is unacceptable.  If immediate quit is not set,
846      we process SIGINT the next time through the loop, which is fine.  */
847   gdb_call_async_signal_handler (sigint_token, immediate_quit);
848 }
849
850 /* Handle GDB exit upon receiving SIGTERM if target_can_async_p ().  */
851
852 static void
853 async_sigterm_handler (gdb_client_data arg)
854 {
855   quit_force (NULL, stdin == instream);
856 }
857
858 /* See defs.h.  */
859 volatile int sync_quit_force_run;
860
861 /* Quit GDB if SIGTERM is received.
862    GDB would quit anyway, but this way it will clean up properly.  */
863 void
864 handle_sigterm (int sig)
865 {
866   signal (sig, handle_sigterm);
867
868   /* Call quit_force in a signal safe way.
869      quit_force itself is not signal safe.  */
870   if (target_can_async_p ())
871     mark_async_signal_handler (async_sigterm_token);
872   else
873     {
874       sync_quit_force_run = 1;
875       set_quit_flag ();
876     }
877 }
878
879 /* Do the quit.  All the checks have been done by the caller.  */
880 void
881 async_request_quit (gdb_client_data arg)
882 {
883   /* If the quit_flag has gotten reset back to 0 by the time we get
884      back here, that means that an exception was thrown to unwind the
885      current command before we got back to the event loop.  So there
886      is no reason to call quit again here.  */
887
888   if (check_quit_flag ())
889     quit ();
890 }
891
892 #ifdef SIGQUIT
893 /* Tell the event loop what to do if SIGQUIT is received.
894    See event-signal.c.  */
895 static void
896 handle_sigquit (int sig)
897 {
898   mark_async_signal_handler (sigquit_token);
899   signal (sig, handle_sigquit);
900 }
901 #endif
902
903 #if defined (SIGQUIT) || defined (SIGHUP)
904 /* Called by the event loop in response to a SIGQUIT or an
905    ignored SIGHUP.  */
906 static void
907 async_do_nothing (gdb_client_data arg)
908 {
909   /* Empty function body.  */
910 }
911 #endif
912
913 #ifdef SIGHUP
914 /* Tell the event loop what to do if SIGHUP is received.
915    See event-signal.c.  */
916 static void
917 handle_sighup (int sig)
918 {
919   mark_async_signal_handler (sighup_token);
920   signal (sig, handle_sighup);
921 }
922
923 /* Called by the event loop to process a SIGHUP.  */
924 static void
925 async_disconnect (gdb_client_data arg)
926 {
927   volatile struct gdb_exception exception;
928
929   TRY_CATCH (exception, RETURN_MASK_ALL)
930     {
931       quit_cover ();
932     }
933
934   if (exception.reason < 0)
935     {
936       fputs_filtered ("Could not kill the program being debugged",
937                       gdb_stderr);
938       exception_print (gdb_stderr, exception);
939     }
940
941   TRY_CATCH (exception, RETURN_MASK_ALL)
942     {
943       pop_all_targets ();
944     }
945
946   signal (SIGHUP, SIG_DFL);     /*FIXME: ???????????  */
947   raise (SIGHUP);
948 }
949 #endif
950
951 #ifdef STOP_SIGNAL
952 void
953 handle_stop_sig (int sig)
954 {
955   mark_async_signal_handler (sigtstp_token);
956   signal (sig, handle_stop_sig);
957 }
958
959 static void
960 async_stop_sig (gdb_client_data arg)
961 {
962   char *prompt = get_prompt ();
963
964 #if STOP_SIGNAL == SIGTSTP
965   signal (SIGTSTP, SIG_DFL);
966 #if HAVE_SIGPROCMASK
967   {
968     sigset_t zero;
969
970     sigemptyset (&zero);
971     sigprocmask (SIG_SETMASK, &zero, 0);
972   }
973 #elif HAVE_SIGSETMASK
974   sigsetmask (0);
975 #endif
976   raise (SIGTSTP);
977   signal (SIGTSTP, handle_stop_sig);
978 #else
979   signal (STOP_SIGNAL, handle_stop_sig);
980 #endif
981   printf_unfiltered ("%s", prompt);
982   gdb_flush (gdb_stdout);
983
984   /* Forget about any previous command -- null line now will do
985      nothing.  */
986   dont_repeat ();
987 }
988 #endif /* STOP_SIGNAL */
989
990 /* Tell the event loop what to do if SIGFPE is received.
991    See event-signal.c.  */
992 static void
993 handle_sigfpe (int sig)
994 {
995   mark_async_signal_handler (sigfpe_token);
996   signal (sig, handle_sigfpe);
997 }
998
999 /* Event loop will call this functin to process a SIGFPE.  */
1000 static void
1001 async_float_handler (gdb_client_data arg)
1002 {
1003   /* This message is based on ANSI C, section 4.7.  Note that integer
1004      divide by zero causes this, so "float" is a misnomer.  */
1005   error (_("Erroneous arithmetic operation."));
1006 }
1007 \f
1008
1009 /* Called by do_setshow_command.  */
1010 void
1011 set_async_editing_command (char *args, int from_tty,
1012                            struct cmd_list_element *c)
1013 {
1014   change_line_handler ();
1015 }
1016
1017 /* Set things up for readline to be invoked via the alternate
1018    interface, i.e. via a callback function (rl_callback_read_char),
1019    and hook up instream to the event loop.  */
1020 void
1021 gdb_setup_readline (void)
1022 {
1023   /* This function is a noop for the sync case.  The assumption is
1024      that the sync setup is ALL done in gdb_init, and we would only
1025      mess it up here.  The sync stuff should really go away over
1026      time.  */
1027   if (!batch_silent)
1028     gdb_stdout = stdio_fileopen (stdout);
1029   gdb_stderr = stderr_fileopen ();
1030   gdb_stdlog = gdb_stderr;  /* for moment */
1031   gdb_stdtarg = gdb_stderr; /* for moment */
1032   gdb_stdtargerr = gdb_stderr; /* for moment */
1033
1034   /* If the input stream is connected to a terminal, turn on
1035      editing.  */
1036   if (ISATTY (instream))
1037     {
1038       /* Tell gdb that we will be using the readline library.  This
1039          could be overwritten by a command in .gdbinit like 'set
1040          editing on' or 'off'.  */
1041       async_command_editing_p = 1;
1042           
1043       /* When a character is detected on instream by select or poll,
1044          readline will be invoked via this callback function.  */
1045       call_readline = rl_callback_read_char_wrapper;
1046     }
1047   else
1048     {
1049       async_command_editing_p = 0;
1050       call_readline = gdb_readline2;
1051     }
1052   
1053   /* When readline has read an end-of-line character, it passes the
1054      complete line to gdb for processing; command_line_handler is the
1055      function that does this.  */
1056   input_handler = command_line_handler;
1057       
1058   /* Tell readline to use the same input stream that gdb uses.  */
1059   rl_instream = instream;
1060
1061   /* Get a file descriptor for the input stream, so that we can
1062      register it with the event loop.  */
1063   input_fd = fileno (instream);
1064
1065   /* Now we need to create the event sources for the input file
1066      descriptor.  */
1067   /* At this point in time, this is the only event source that we
1068      register with the even loop.  Another source is going to be the
1069      target program (inferior), but that must be registered only when
1070      it actually exists (I.e. after we say 'run' or after we connect
1071      to a remote target.  */
1072   add_file_handler (input_fd, stdin_event_handler, 0);
1073 }
1074
1075 /* Disable command input through the standard CLI channels.  Used in
1076    the suspend proc for interpreters that use the standard gdb readline
1077    interface, like the cli & the mi.  */
1078 void
1079 gdb_disable_readline (void)
1080 {
1081   /* FIXME - It is too heavyweight to delete and remake these every
1082      time you run an interpreter that needs readline.  It is probably
1083      better to have the interpreters cache these, which in turn means
1084      that this needs to be moved into interpreter specific code.  */
1085
1086 #if 0
1087   ui_file_delete (gdb_stdout);
1088   ui_file_delete (gdb_stderr);
1089   gdb_stdlog = NULL;
1090   gdb_stdtarg = NULL;
1091   gdb_stdtargerr = NULL;
1092 #endif
1093
1094   gdb_rl_callback_handler_remove ();
1095   delete_file_handler (input_fd);
1096 }