Fix SIGTERM signal safety (PR gdb/15358).
[external/binutils.git] / gdb / utils.c
1 /* General utility routines for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2014 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 "dyn-string.h"
22 #include "gdb_assert.h"
23 #include <ctype.h>
24 #include <string.h>
25 #include "gdb_wait.h"
26 #include "event-top.h"
27 #include "exceptions.h"
28 #include "gdbthread.h"
29 #include "fnmatch.h"
30 #include "gdb_bfd.h"
31 #ifdef HAVE_SYS_RESOURCE_H
32 #include <sys/resource.h>
33 #endif /* HAVE_SYS_RESOURCE_H */
34
35 #ifdef TUI
36 #include "tui/tui.h"            /* For tui_get_command_dimension.   */
37 #endif
38
39 #ifdef __GO32__
40 #include <pc.h>
41 #endif
42
43 #include <signal.h>
44 #include "timeval-utils.h"
45 #include "gdbcmd.h"
46 #include "serial.h"
47 #include "bfd.h"
48 #include "target.h"
49 #include "gdb-demangle.h"
50 #include "expression.h"
51 #include "language.h"
52 #include "charset.h"
53 #include "annotate.h"
54 #include "filenames.h"
55 #include "symfile.h"
56 #include "gdb_obstack.h"
57 #include "gdbcore.h"
58 #include "top.h"
59 #include "main.h"
60 #include "solist.h"
61
62 #include "inferior.h"           /* for signed_pointer_to_address */
63
64 #include "gdb_curses.h"
65
66 #include "readline/readline.h"
67
68 #include <sys/time.h>
69 #include <time.h>
70
71 #include "gdb_usleep.h"
72 #include "interps.h"
73 #include "gdb_regex.h"
74
75 #if !HAVE_DECL_MALLOC
76 extern PTR malloc ();           /* ARI: PTR */
77 #endif
78 #if !HAVE_DECL_REALLOC
79 extern PTR realloc ();          /* ARI: PTR */
80 #endif
81 #if !HAVE_DECL_FREE
82 extern void free ();
83 #endif
84
85 void (*deprecated_error_begin_hook) (void);
86
87 /* Prototypes for local functions */
88
89 static void vfprintf_maybe_filtered (struct ui_file *, const char *,
90                                      va_list, int) ATTRIBUTE_PRINTF (2, 0);
91
92 static void fputs_maybe_filtered (const char *, struct ui_file *, int);
93
94 static void prompt_for_continue (void);
95
96 static void set_screen_size (void);
97 static void set_width (void);
98
99 /* Time spent in prompt_for_continue in the currently executing command
100    waiting for user to respond.
101    Initialized in make_command_stats_cleanup.
102    Modified in prompt_for_continue and defaulted_query.
103    Used in report_command_stats.  */
104
105 static struct timeval prompt_for_continue_wait_time;
106
107 /* A flag indicating whether to timestamp debugging messages.  */
108
109 static int debug_timestamp = 0;
110
111 /* Nonzero if we have job control.  */
112
113 int job_control;
114
115 /* Nonzero means quit immediately if Control-C is typed now, rather
116    than waiting until QUIT is executed.  Be careful in setting this;
117    code which executes with immediate_quit set has to be very careful
118    about being able to deal with being interrupted at any time.  It is
119    almost always better to use QUIT; the only exception I can think of
120    is being able to quit out of a system call (using EINTR loses if
121    the SIGINT happens between the previous QUIT and the system call).
122    To immediately quit in the case in which a SIGINT happens between
123    the previous QUIT and setting immediate_quit (desirable anytime we
124    expect to block), call QUIT after setting immediate_quit.  */
125
126 int immediate_quit;
127
128 /* Nonzero means that strings with character values >0x7F should be printed
129    as octal escapes.  Zero means just print the value (e.g. it's an
130    international character, and the terminal or window can cope.)  */
131
132 int sevenbit_strings = 0;
133 static void
134 show_sevenbit_strings (struct ui_file *file, int from_tty,
135                        struct cmd_list_element *c, const char *value)
136 {
137   fprintf_filtered (file, _("Printing of 8-bit characters "
138                             "in strings as \\nnn is %s.\n"),
139                     value);
140 }
141
142 /* String to be printed before warning messages, if any.  */
143
144 char *warning_pre_print = "\nwarning: ";
145
146 int pagination_enabled = 1;
147 static void
148 show_pagination_enabled (struct ui_file *file, int from_tty,
149                          struct cmd_list_element *c, const char *value)
150 {
151   fprintf_filtered (file, _("State of pagination is %s.\n"), value);
152 }
153
154 \f
155 /* Cleanup utilities.
156
157    These are not defined in cleanups.c (nor declared in cleanups.h)
158    because while they use the "cleanup API" they are not part of the
159    "cleanup API".  */
160
161 static void
162 do_freeargv (void *arg)
163 {
164   freeargv ((char **) arg);
165 }
166
167 struct cleanup *
168 make_cleanup_freeargv (char **arg)
169 {
170   return make_cleanup (do_freeargv, arg);
171 }
172
173 static void
174 do_dyn_string_delete (void *arg)
175 {
176   dyn_string_delete ((dyn_string_t) arg);
177 }
178
179 struct cleanup *
180 make_cleanup_dyn_string_delete (dyn_string_t arg)
181 {
182   return make_cleanup (do_dyn_string_delete, arg);
183 }
184
185 static void
186 do_bfd_close_cleanup (void *arg)
187 {
188   gdb_bfd_unref (arg);
189 }
190
191 struct cleanup *
192 make_cleanup_bfd_unref (bfd *abfd)
193 {
194   return make_cleanup (do_bfd_close_cleanup, abfd);
195 }
196
197 static void
198 do_close_cleanup (void *arg)
199 {
200   int *fd = arg;
201
202   close (*fd);
203 }
204
205 struct cleanup *
206 make_cleanup_close (int fd)
207 {
208   int *saved_fd = xmalloc (sizeof (fd));
209
210   *saved_fd = fd;
211   return make_cleanup_dtor (do_close_cleanup, saved_fd, xfree);
212 }
213
214 /* Helper function which does the work for make_cleanup_fclose.  */
215
216 static void
217 do_fclose_cleanup (void *arg)
218 {
219   FILE *file = arg;
220
221   fclose (file);
222 }
223
224 /* Return a new cleanup that closes FILE.  */
225
226 struct cleanup *
227 make_cleanup_fclose (FILE *file)
228 {
229   return make_cleanup (do_fclose_cleanup, file);
230 }
231
232 /* Helper function which does the work for make_cleanup_obstack_free.  */
233
234 static void
235 do_obstack_free (void *arg)
236 {
237   struct obstack *ob = arg;
238
239   obstack_free (ob, NULL);
240 }
241
242 /* Return a new cleanup that frees OBSTACK.  */
243
244 struct cleanup *
245 make_cleanup_obstack_free (struct obstack *obstack)
246 {
247   return make_cleanup (do_obstack_free, obstack);
248 }
249
250 static void
251 do_ui_file_delete (void *arg)
252 {
253   ui_file_delete (arg);
254 }
255
256 struct cleanup *
257 make_cleanup_ui_file_delete (struct ui_file *arg)
258 {
259   return make_cleanup (do_ui_file_delete, arg);
260 }
261
262 /* Helper function for make_cleanup_ui_out_redirect_pop.  */
263
264 static void
265 do_ui_out_redirect_pop (void *arg)
266 {
267   struct ui_out *uiout = arg;
268
269   if (ui_out_redirect (uiout, NULL) < 0)
270     warning (_("Cannot restore redirection of the current output protocol"));
271 }
272
273 /* Return a new cleanup that pops the last redirection by ui_out_redirect
274    with NULL parameter.  */
275
276 struct cleanup *
277 make_cleanup_ui_out_redirect_pop (struct ui_out *uiout)
278 {
279   return make_cleanup (do_ui_out_redirect_pop, uiout);
280 }
281
282 static void
283 do_free_section_addr_info (void *arg)
284 {
285   free_section_addr_info (arg);
286 }
287
288 struct cleanup *
289 make_cleanup_free_section_addr_info (struct section_addr_info *addrs)
290 {
291   return make_cleanup (do_free_section_addr_info, addrs);
292 }
293
294 struct restore_integer_closure
295 {
296   int *variable;
297   int value;
298 };
299
300 static void
301 restore_integer (void *p)
302 {
303   struct restore_integer_closure *closure = p;
304
305   *(closure->variable) = closure->value;
306 }
307
308 /* Remember the current value of *VARIABLE and make it restored when
309    the cleanup is run.  */
310
311 struct cleanup *
312 make_cleanup_restore_integer (int *variable)
313 {
314   struct restore_integer_closure *c =
315     xmalloc (sizeof (struct restore_integer_closure));
316
317   c->variable = variable;
318   c->value = *variable;
319
320   return make_cleanup_dtor (restore_integer, (void *) c, xfree);
321 }
322
323 /* Remember the current value of *VARIABLE and make it restored when
324    the cleanup is run.  */
325
326 struct cleanup *
327 make_cleanup_restore_uinteger (unsigned int *variable)
328 {
329   return make_cleanup_restore_integer ((int *) variable);
330 }
331
332 /* Helper for make_cleanup_unpush_target.  */
333
334 static void
335 do_unpush_target (void *arg)
336 {
337   struct target_ops *ops = arg;
338
339   unpush_target (ops);
340 }
341
342 /* Return a new cleanup that unpushes OPS.  */
343
344 struct cleanup *
345 make_cleanup_unpush_target (struct target_ops *ops)
346 {
347   return make_cleanup (do_unpush_target, ops);
348 }
349
350 /* Helper for make_cleanup_htab_delete compile time checking the types.  */
351
352 static void
353 do_htab_delete_cleanup (void *htab_voidp)
354 {
355   htab_t htab = htab_voidp;
356
357   htab_delete (htab);
358 }
359
360 /* Return a new cleanup that deletes HTAB.  */
361
362 struct cleanup *
363 make_cleanup_htab_delete (htab_t htab)
364 {
365   return make_cleanup (do_htab_delete_cleanup, htab);
366 }
367
368 struct restore_ui_file_closure
369 {
370   struct ui_file **variable;
371   struct ui_file *value;
372 };
373
374 static void
375 do_restore_ui_file (void *p)
376 {
377   struct restore_ui_file_closure *closure = p;
378
379   *(closure->variable) = closure->value;
380 }
381
382 /* Remember the current value of *VARIABLE and make it restored when
383    the cleanup is run.  */
384
385 struct cleanup *
386 make_cleanup_restore_ui_file (struct ui_file **variable)
387 {
388   struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure);
389
390   c->variable = variable;
391   c->value = *variable;
392
393   return make_cleanup_dtor (do_restore_ui_file, (void *) c, xfree);
394 }
395
396 /* Helper for make_cleanup_value_free_to_mark.  */
397
398 static void
399 do_value_free_to_mark (void *value)
400 {
401   value_free_to_mark ((struct value *) value);
402 }
403
404 /* Free all values allocated since MARK was obtained by value_mark
405    (except for those released) when the cleanup is run.  */
406
407 struct cleanup *
408 make_cleanup_value_free_to_mark (struct value *mark)
409 {
410   return make_cleanup (do_value_free_to_mark, mark);
411 }
412
413 /* Helper for make_cleanup_value_free.  */
414
415 static void
416 do_value_free (void *value)
417 {
418   value_free (value);
419 }
420
421 /* Free VALUE.  */
422
423 struct cleanup *
424 make_cleanup_value_free (struct value *value)
425 {
426   return make_cleanup (do_value_free, value);
427 }
428
429 /* Helper for make_cleanup_free_so.  */
430
431 static void
432 do_free_so (void *arg)
433 {
434   struct so_list *so = arg;
435
436   free_so (so);
437 }
438
439 /* Make cleanup handler calling free_so for SO.  */
440
441 struct cleanup *
442 make_cleanup_free_so (struct so_list *so)
443 {
444   return make_cleanup (do_free_so, so);
445 }
446
447 /* Helper for make_cleanup_restore_current_language.  */
448
449 static void
450 do_restore_current_language (void *p)
451 {
452   enum language saved_lang = (uintptr_t) p;
453
454   set_language (saved_lang);
455 }
456
457 /* Remember the current value of CURRENT_LANGUAGE and make it restored when
458    the cleanup is run.  */
459
460 struct cleanup *
461 make_cleanup_restore_current_language (void)
462 {
463   enum language saved_lang = current_language->la_language;
464
465   return make_cleanup (do_restore_current_language,
466                        (void *) (uintptr_t) saved_lang);
467 }
468
469 /* This function is useful for cleanups.
470    Do
471
472    foo = xmalloc (...);
473    old_chain = make_cleanup (free_current_contents, &foo);
474
475    to arrange to free the object thus allocated.  */
476
477 void
478 free_current_contents (void *ptr)
479 {
480   void **location = ptr;
481
482   if (location == NULL)
483     internal_error (__FILE__, __LINE__,
484                     _("free_current_contents: NULL pointer"));
485   if (*location != NULL)
486     {
487       xfree (*location);
488       *location = NULL;
489     }
490 }
491 \f
492
493
494 /* Print a warning message.  The first argument STRING is the warning
495    message, used as an fprintf format string, the second is the
496    va_list of arguments for that string.  A warning is unfiltered (not
497    paginated) so that the user does not need to page through each
498    screen full of warnings when there are lots of them.  */
499
500 void
501 vwarning (const char *string, va_list args)
502 {
503   if (deprecated_warning_hook)
504     (*deprecated_warning_hook) (string, args);
505   else
506     {
507       target_terminal_ours ();
508       wrap_here ("");           /* Force out any buffered output.  */
509       gdb_flush (gdb_stdout);
510       if (warning_pre_print)
511         fputs_unfiltered (warning_pre_print, gdb_stderr);
512       vfprintf_unfiltered (gdb_stderr, string, args);
513       fprintf_unfiltered (gdb_stderr, "\n");
514       va_end (args);
515     }
516 }
517
518 /* Print a warning message.
519    The first argument STRING is the warning message, used as a fprintf string,
520    and the remaining args are passed as arguments to it.
521    The primary difference between warnings and errors is that a warning
522    does not force the return to command level.  */
523
524 void
525 warning (const char *string, ...)
526 {
527   va_list args;
528
529   va_start (args, string);
530   vwarning (string, args);
531   va_end (args);
532 }
533
534 /* Print an error message and return to command level.
535    The first argument STRING is the error message, used as a fprintf string,
536    and the remaining args are passed as arguments to it.  */
537
538 void
539 verror (const char *string, va_list args)
540 {
541   throw_verror (GENERIC_ERROR, string, args);
542 }
543
544 void
545 error (const char *string, ...)
546 {
547   va_list args;
548
549   va_start (args, string);
550   throw_verror (GENERIC_ERROR, string, args);
551   va_end (args);
552 }
553
554 /* Print an error message and quit.
555    The first argument STRING is the error message, used as a fprintf string,
556    and the remaining args are passed as arguments to it.  */
557
558 void
559 vfatal (const char *string, va_list args)
560 {
561   throw_vfatal (string, args);
562 }
563
564 void
565 fatal (const char *string, ...)
566 {
567   va_list args;
568
569   va_start (args, string);
570   throw_vfatal (string, args);
571   va_end (args);
572 }
573
574 void
575 error_stream (struct ui_file *stream)
576 {
577   char *message = ui_file_xstrdup (stream, NULL);
578
579   make_cleanup (xfree, message);
580   error (("%s"), message);
581 }
582
583 /* Dump core trying to increase the core soft limit to hard limit first.  */
584
585 static void
586 dump_core (void)
587 {
588 #ifdef HAVE_SETRLIMIT
589   struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY };
590
591   setrlimit (RLIMIT_CORE, &rlim);
592 #endif /* HAVE_SETRLIMIT */
593
594   abort ();             /* NOTE: GDB has only three calls to abort().  */
595 }
596
597 /* Check whether GDB will be able to dump core using the dump_core
598    function.  */
599
600 static int
601 can_dump_core (const char *reason)
602 {
603 #ifdef HAVE_GETRLIMIT
604   struct rlimit rlim;
605
606   /* Be quiet and assume we can dump if an error is returned.  */
607   if (getrlimit (RLIMIT_CORE, &rlim) != 0)
608     return 1;
609
610   if (rlim.rlim_max == 0)
611     {
612       fprintf_unfiltered (gdb_stderr,
613                           _("%s\nUnable to dump core, use `ulimit -c"
614                             " unlimited' before executing GDB next time.\n"),
615                           reason);
616       return 0;
617     }
618 #endif /* HAVE_GETRLIMIT */
619
620   return 1;
621 }
622
623 /* Allow the user to configure the debugger behavior with respect to
624    what to do when an internal problem is detected.  */
625
626 const char internal_problem_ask[] = "ask";
627 const char internal_problem_yes[] = "yes";
628 const char internal_problem_no[] = "no";
629 static const char *const internal_problem_modes[] =
630 {
631   internal_problem_ask,
632   internal_problem_yes,
633   internal_problem_no,
634   NULL
635 };
636
637 /* Print a message reporting an internal error/warning.  Ask the user
638    if they want to continue, dump core, or just exit.  Return
639    something to indicate a quit.  */
640
641 struct internal_problem
642 {
643   const char *name;
644   const char *should_quit;
645   const char *should_dump_core;
646 };
647
648 /* Report a problem, internal to GDB, to the user.  Once the problem
649    has been reported, and assuming GDB didn't quit, the caller can
650    either allow execution to resume or throw an error.  */
651
652 static void ATTRIBUTE_PRINTF (4, 0)
653 internal_vproblem (struct internal_problem *problem,
654                    const char *file, int line, const char *fmt, va_list ap)
655 {
656   static int dejavu;
657   int quit_p;
658   int dump_core_p;
659   char *reason;
660   struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
661
662   /* Don't allow infinite error/warning recursion.  */
663   {
664     static char msg[] = "Recursive internal problem.\n";
665
666     switch (dejavu)
667       {
668       case 0:
669         dejavu = 1;
670         break;
671       case 1:
672         dejavu = 2;
673         fputs_unfiltered (msg, gdb_stderr);
674         abort ();       /* NOTE: GDB has only three calls to abort().  */
675       default:
676         dejavu = 3;
677         /* Newer GLIBC versions put the warn_unused_result attribute
678            on write, but this is one of those rare cases where
679            ignoring the return value is correct.  Casting to (void)
680            does not fix this problem.  This is the solution suggested
681            at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509.  */
682         if (write (STDERR_FILENO, msg, sizeof (msg)) != sizeof (msg))
683           abort (); /* NOTE: GDB has only three calls to abort().  */
684         exit (1);
685       }
686   }
687
688   /* Try to get the message out and at the start of a new line.  */
689   target_terminal_ours ();
690   begin_line ();
691
692   /* Create a string containing the full error/warning message.  Need
693      to call query with this full string, as otherwize the reason
694      (error/warning) and question become separated.  Format using a
695      style similar to a compiler error message.  Include extra detail
696      so that the user knows that they are living on the edge.  */
697   {
698     char *msg;
699
700     msg = xstrvprintf (fmt, ap);
701     reason = xstrprintf ("%s:%d: %s: %s\n"
702                          "A problem internal to GDB has been detected,\n"
703                          "further debugging may prove unreliable.",
704                          file, line, problem->name, msg);
705     xfree (msg);
706     make_cleanup (xfree, reason);
707   }
708
709   if (problem->should_quit == internal_problem_ask)
710     {
711       /* Default (yes/batch case) is to quit GDB.  When in batch mode
712          this lessens the likelihood of GDB going into an infinite
713          loop.  */
714       if (!confirm)
715         {
716           /* Emit the message and quit.  */
717           fputs_unfiltered (reason, gdb_stderr);
718           fputs_unfiltered ("\n", gdb_stderr);
719           quit_p = 1;
720         }
721       else
722         quit_p = query (_("%s\nQuit this debugging session? "), reason);
723     }
724   else if (problem->should_quit == internal_problem_yes)
725     quit_p = 1;
726   else if (problem->should_quit == internal_problem_no)
727     quit_p = 0;
728   else
729     internal_error (__FILE__, __LINE__, _("bad switch"));
730
731   if (problem->should_dump_core == internal_problem_ask)
732     {
733       if (!can_dump_core (reason))
734         dump_core_p = 0;
735       else
736         {
737           /* Default (yes/batch case) is to dump core.  This leaves a GDB
738              `dropping' so that it is easier to see that something went
739              wrong in GDB.  */
740           dump_core_p = query (_("%s\nCreate a core file of GDB? "), reason);
741         }
742     }
743   else if (problem->should_dump_core == internal_problem_yes)
744     dump_core_p = can_dump_core (reason);
745   else if (problem->should_dump_core == internal_problem_no)
746     dump_core_p = 0;
747   else
748     internal_error (__FILE__, __LINE__, _("bad switch"));
749
750   if (quit_p)
751     {
752       if (dump_core_p)
753         dump_core ();
754       else
755         exit (1);
756     }
757   else
758     {
759       if (dump_core_p)
760         {
761 #ifdef HAVE_WORKING_FORK
762           if (fork () == 0)
763             dump_core ();
764 #endif
765         }
766     }
767
768   dejavu = 0;
769   do_cleanups (cleanup);
770 }
771
772 static struct internal_problem internal_error_problem = {
773   "internal-error", internal_problem_ask, internal_problem_ask
774 };
775
776 void
777 internal_verror (const char *file, int line, const char *fmt, va_list ap)
778 {
779   internal_vproblem (&internal_error_problem, file, line, fmt, ap);
780   fatal (_("Command aborted."));
781 }
782
783 void
784 internal_error (const char *file, int line, const char *string, ...)
785 {
786   va_list ap;
787
788   va_start (ap, string);
789   internal_verror (file, line, string, ap);
790   va_end (ap);
791 }
792
793 static struct internal_problem internal_warning_problem = {
794   "internal-warning", internal_problem_ask, internal_problem_ask
795 };
796
797 void
798 internal_vwarning (const char *file, int line, const char *fmt, va_list ap)
799 {
800   internal_vproblem (&internal_warning_problem, file, line, fmt, ap);
801 }
802
803 void
804 internal_warning (const char *file, int line, const char *string, ...)
805 {
806   va_list ap;
807
808   va_start (ap, string);
809   internal_vwarning (file, line, string, ap);
810   va_end (ap);
811 }
812
813 /* Dummy functions to keep add_prefix_cmd happy.  */
814
815 static void
816 set_internal_problem_cmd (char *args, int from_tty)
817 {
818 }
819
820 static void
821 show_internal_problem_cmd (char *args, int from_tty)
822 {
823 }
824
825 /* When GDB reports an internal problem (error or warning) it gives
826    the user the opportunity to quit GDB and/or create a core file of
827    the current debug session.  This function registers a few commands
828    that make it possible to specify that GDB should always or never
829    quit or create a core file, without asking.  The commands look
830    like:
831
832    maint set PROBLEM-NAME quit ask|yes|no
833    maint show PROBLEM-NAME quit
834    maint set PROBLEM-NAME corefile ask|yes|no
835    maint show PROBLEM-NAME corefile
836
837    Where PROBLEM-NAME is currently "internal-error" or
838    "internal-warning".  */
839
840 static void
841 add_internal_problem_command (struct internal_problem *problem)
842 {
843   struct cmd_list_element **set_cmd_list;
844   struct cmd_list_element **show_cmd_list;
845   char *set_doc;
846   char *show_doc;
847
848   set_cmd_list = xmalloc (sizeof (*set_cmd_list));
849   show_cmd_list = xmalloc (sizeof (*set_cmd_list));
850   *set_cmd_list = NULL;
851   *show_cmd_list = NULL;
852
853   set_doc = xstrprintf (_("Configure what GDB does when %s is detected."),
854                         problem->name);
855
856   show_doc = xstrprintf (_("Show what GDB does when %s is detected."),
857                          problem->name);
858
859   add_prefix_cmd ((char*) problem->name,
860                   class_maintenance, set_internal_problem_cmd, set_doc,
861                   set_cmd_list,
862                   concat ("maintenance set ", problem->name, " ",
863                           (char *) NULL),
864                   0/*allow-unknown*/, &maintenance_set_cmdlist);
865
866   add_prefix_cmd ((char*) problem->name,
867                   class_maintenance, show_internal_problem_cmd, show_doc,
868                   show_cmd_list,
869                   concat ("maintenance show ", problem->name, " ",
870                           (char *) NULL),
871                   0/*allow-unknown*/, &maintenance_show_cmdlist);
872
873   set_doc = xstrprintf (_("Set whether GDB should quit "
874                           "when an %s is detected"),
875                         problem->name);
876   show_doc = xstrprintf (_("Show whether GDB will quit "
877                            "when an %s is detected"),
878                          problem->name);
879   add_setshow_enum_cmd ("quit", class_maintenance,
880                         internal_problem_modes,
881                         &problem->should_quit,
882                         set_doc,
883                         show_doc,
884                         NULL, /* help_doc */
885                         NULL, /* setfunc */
886                         NULL, /* showfunc */
887                         set_cmd_list,
888                         show_cmd_list);
889
890   xfree (set_doc);
891   xfree (show_doc);
892
893   set_doc = xstrprintf (_("Set whether GDB should create a core "
894                           "file of GDB when %s is detected"),
895                         problem->name);
896   show_doc = xstrprintf (_("Show whether GDB will create a core "
897                            "file of GDB when %s is detected"),
898                          problem->name);
899   add_setshow_enum_cmd ("corefile", class_maintenance,
900                         internal_problem_modes,
901                         &problem->should_dump_core,
902                         set_doc,
903                         show_doc,
904                         NULL, /* help_doc */
905                         NULL, /* setfunc */
906                         NULL, /* showfunc */
907                         set_cmd_list,
908                         show_cmd_list);
909
910   xfree (set_doc);
911   xfree (show_doc);
912 }
913
914 /* Return a newly allocated string, containing the PREFIX followed
915    by the system error message for errno (separated by a colon).
916
917    The result must be deallocated after use.  */
918
919 static char *
920 perror_string (const char *prefix)
921 {
922   char *err;
923   char *combined;
924
925   err = safe_strerror (errno);
926   combined = (char *) xmalloc (strlen (err) + strlen (prefix) + 3);
927   strcpy (combined, prefix);
928   strcat (combined, ": ");
929   strcat (combined, err);
930
931   return combined;
932 }
933
934 /* Print the system error message for errno, and also mention STRING
935    as the file name for which the error was encountered.  Use ERRCODE
936    for the thrown exception.  Then return to command level.  */
937
938 void
939 throw_perror_with_name (enum errors errcode, const char *string)
940 {
941   char *combined;
942
943   combined = perror_string (string);
944   make_cleanup (xfree, combined);
945
946   /* I understand setting these is a matter of taste.  Still, some people
947      may clear errno but not know about bfd_error.  Doing this here is not
948      unreasonable.  */
949   bfd_set_error (bfd_error_no_error);
950   errno = 0;
951
952   throw_error (errcode, _("%s."), combined);
953 }
954
955 /* See throw_perror_with_name, ERRCODE defaults here to GENERIC_ERROR.  */
956
957 void
958 perror_with_name (const char *string)
959 {
960   throw_perror_with_name (GENERIC_ERROR, string);
961 }
962
963 /* Same as perror_with_name except that it prints a warning instead
964    of throwing an error.  */
965
966 void
967 perror_warning_with_name (const char *string)
968 {
969   char *combined;
970
971   combined = perror_string (string);
972   warning (_("%s"), combined);
973   xfree (combined);
974 }
975
976 /* Print the system error message for ERRCODE, and also mention STRING
977    as the file name for which the error was encountered.  */
978
979 void
980 print_sys_errmsg (const char *string, int errcode)
981 {
982   char *err;
983   char *combined;
984
985   err = safe_strerror (errcode);
986   combined = (char *) alloca (strlen (err) + strlen (string) + 3);
987   strcpy (combined, string);
988   strcat (combined, ": ");
989   strcat (combined, err);
990
991   /* We want anything which was printed on stdout to come out first, before
992      this message.  */
993   gdb_flush (gdb_stdout);
994   fprintf_unfiltered (gdb_stderr, "%s.\n", combined);
995 }
996
997 /* Control C eventually causes this to be called, at a convenient time.  */
998
999 void
1000 quit (void)
1001 {
1002   if (sync_quit_force_run)
1003     {
1004       sync_quit_force_run = 0;
1005       quit_force (NULL, stdin == instream);
1006     }
1007
1008 #ifdef __MSDOS__
1009   /* No steenking SIGINT will ever be coming our way when the
1010      program is resumed.  Don't lie.  */
1011   fatal ("Quit");
1012 #else
1013   if (job_control
1014       /* If there is no terminal switching for this target, then we can't
1015          possibly get screwed by the lack of job control.  */
1016       || current_target.to_terminal_ours == NULL)
1017     fatal ("Quit");
1018   else
1019     fatal ("Quit (expect signal SIGINT when the program is resumed)");
1020 #endif
1021 }
1022
1023 \f
1024 /* Called when a memory allocation fails, with the number of bytes of
1025    memory requested in SIZE.  */
1026
1027 void
1028 malloc_failure (long size)
1029 {
1030   if (size > 0)
1031     {
1032       internal_error (__FILE__, __LINE__,
1033                       _("virtual memory exhausted: can't allocate %ld bytes."),
1034                       size);
1035     }
1036   else
1037     {
1038       internal_error (__FILE__, __LINE__, _("virtual memory exhausted."));
1039     }
1040 }
1041
1042 /* My replacement for the read system call.
1043    Used like `read' but keeps going if `read' returns too soon.  */
1044
1045 int
1046 myread (int desc, char *addr, int len)
1047 {
1048   int val;
1049   int orglen = len;
1050
1051   while (len > 0)
1052     {
1053       val = read (desc, addr, len);
1054       if (val < 0)
1055         return val;
1056       if (val == 0)
1057         return orglen - len;
1058       len -= val;
1059       addr += val;
1060     }
1061   return orglen;
1062 }
1063
1064 void
1065 print_spaces (int n, struct ui_file *file)
1066 {
1067   fputs_unfiltered (n_spaces (n), file);
1068 }
1069
1070 /* Print a host address.  */
1071
1072 void
1073 gdb_print_host_address (const void *addr, struct ui_file *stream)
1074 {
1075   fprintf_filtered (stream, "%s", host_address_to_string (addr));
1076 }
1077 \f
1078
1079 /* A cleanup function that calls regfree.  */
1080
1081 static void
1082 do_regfree_cleanup (void *r)
1083 {
1084   regfree (r);
1085 }
1086
1087 /* Create a new cleanup that frees the compiled regular expression R.  */
1088
1089 struct cleanup *
1090 make_regfree_cleanup (regex_t *r)
1091 {
1092   return make_cleanup (do_regfree_cleanup, r);
1093 }
1094
1095 /* Return an xmalloc'd error message resulting from a regular
1096    expression compilation failure.  */
1097
1098 char *
1099 get_regcomp_error (int code, regex_t *rx)
1100 {
1101   size_t length = regerror (code, rx, NULL, 0);
1102   char *result = xmalloc (length);
1103
1104   regerror (code, rx, result, length);
1105   return result;
1106 }
1107
1108 /* Compile a regexp and throw an exception on error.  This returns a
1109    cleanup to free the resulting pattern on success.  RX must not be
1110    NULL.  */
1111
1112 struct cleanup *
1113 compile_rx_or_error (regex_t *pattern, const char *rx, const char *message)
1114 {
1115   int code;
1116
1117   gdb_assert (rx != NULL);
1118
1119   code = regcomp (pattern, rx, REG_NOSUB);
1120   if (code != 0)
1121     {
1122       char *err = get_regcomp_error (code, pattern);
1123
1124       make_cleanup (xfree, err);
1125       error (("%s: %s"), message, err);
1126     }
1127
1128   return make_regfree_cleanup (pattern);
1129 }
1130
1131 \f
1132
1133 /* This function supports the query, nquery, and yquery functions.
1134    Ask user a y-or-n question and return 0 if answer is no, 1 if
1135    answer is yes, or default the answer to the specified default
1136    (for yquery or nquery).  DEFCHAR may be 'y' or 'n' to provide a
1137    default answer, or '\0' for no default.
1138    CTLSTR is the control string and should end in "? ".  It should
1139    not say how to answer, because we do that.
1140    ARGS are the arguments passed along with the CTLSTR argument to
1141    printf.  */
1142
1143 static int ATTRIBUTE_PRINTF (1, 0)
1144 defaulted_query (const char *ctlstr, const char defchar, va_list args)
1145 {
1146   int answer;
1147   int ans2;
1148   int retval;
1149   int def_value;
1150   char def_answer, not_def_answer;
1151   char *y_string, *n_string, *question;
1152   /* Used to add duration we waited for user to respond to
1153      prompt_for_continue_wait_time.  */
1154   struct timeval prompt_started, prompt_ended, prompt_delta;
1155
1156   /* Set up according to which answer is the default.  */
1157   if (defchar == '\0')
1158     {
1159       def_value = 1;
1160       def_answer = 'Y';
1161       not_def_answer = 'N';
1162       y_string = "y";
1163       n_string = "n";
1164     }
1165   else if (defchar == 'y')
1166     {
1167       def_value = 1;
1168       def_answer = 'Y';
1169       not_def_answer = 'N';
1170       y_string = "[y]";
1171       n_string = "n";
1172     }
1173   else
1174     {
1175       def_value = 0;
1176       def_answer = 'N';
1177       not_def_answer = 'Y';
1178       y_string = "y";
1179       n_string = "[n]";
1180     }
1181
1182   /* Automatically answer the default value if the user did not want
1183      prompts or the command was issued with the server prefix.  */
1184   if (!confirm || server_command)
1185     return def_value;
1186
1187   /* If input isn't coming from the user directly, just say what
1188      question we're asking, and then answer the default automatically.  This
1189      way, important error messages don't get lost when talking to GDB
1190      over a pipe.  */
1191   if (! input_from_terminal_p ())
1192     {
1193       wrap_here ("");
1194       vfprintf_filtered (gdb_stdout, ctlstr, args);
1195
1196       printf_filtered (_("(%s or %s) [answered %c; "
1197                          "input not from terminal]\n"),
1198                        y_string, n_string, def_answer);
1199       gdb_flush (gdb_stdout);
1200
1201       return def_value;
1202     }
1203
1204   if (deprecated_query_hook)
1205     {
1206       return deprecated_query_hook (ctlstr, args);
1207     }
1208
1209   /* Format the question outside of the loop, to avoid reusing args.  */
1210   question = xstrvprintf (ctlstr, args);
1211
1212   /* Used for calculating time spend waiting for user.  */
1213   gettimeofday (&prompt_started, NULL);
1214
1215   while (1)
1216     {
1217       wrap_here ("");           /* Flush any buffered output.  */
1218       gdb_flush (gdb_stdout);
1219
1220       if (annotation_level > 1)
1221         printf_filtered (("\n\032\032pre-query\n"));
1222
1223       fputs_filtered (question, gdb_stdout);
1224       printf_filtered (_("(%s or %s) "), y_string, n_string);
1225
1226       if (annotation_level > 1)
1227         printf_filtered (("\n\032\032query\n"));
1228
1229       wrap_here ("");
1230       gdb_flush (gdb_stdout);
1231
1232       answer = fgetc (stdin);
1233
1234       /* We expect fgetc to block until a character is read.  But
1235          this may not be the case if the terminal was opened with
1236          the NONBLOCK flag.  In that case, if there is nothing to
1237          read on stdin, fgetc returns EOF, but also sets the error
1238          condition flag on stdin and errno to EAGAIN.  With a true
1239          EOF, stdin's error condition flag is not set.
1240
1241          A situation where this behavior was observed is a pseudo
1242          terminal on AIX.  */
1243       while (answer == EOF && ferror (stdin) && errno == EAGAIN)
1244         {
1245           /* Not a real EOF.  Wait a little while and try again until
1246              we read something.  */
1247           clearerr (stdin);
1248           gdb_usleep (10000);
1249           answer = fgetc (stdin);
1250         }
1251
1252       clearerr (stdin);         /* in case of C-d */
1253       if (answer == EOF)        /* C-d */
1254         {
1255           printf_filtered ("EOF [assumed %c]\n", def_answer);
1256           retval = def_value;
1257           break;
1258         }
1259       /* Eat rest of input line, to EOF or newline.  */
1260       if (answer != '\n')
1261         do
1262           {
1263             ans2 = fgetc (stdin);
1264             clearerr (stdin);
1265           }
1266         while (ans2 != EOF && ans2 != '\n' && ans2 != '\r');
1267
1268       if (answer >= 'a')
1269         answer -= 040;
1270       /* Check answer.  For the non-default, the user must specify
1271          the non-default explicitly.  */
1272       if (answer == not_def_answer)
1273         {
1274           retval = !def_value;
1275           break;
1276         }
1277       /* Otherwise, if a default was specified, the user may either
1278          specify the required input or have it default by entering
1279          nothing.  */
1280       if (answer == def_answer
1281           || (defchar != '\0' &&
1282               (answer == '\n' || answer == '\r' || answer == EOF)))
1283         {
1284           retval = def_value;
1285           break;
1286         }
1287       /* Invalid entries are not defaulted and require another selection.  */
1288       printf_filtered (_("Please answer %s or %s.\n"),
1289                        y_string, n_string);
1290     }
1291
1292   /* Add time spend in this routine to prompt_for_continue_wait_time.  */
1293   gettimeofday (&prompt_ended, NULL);
1294   timeval_sub (&prompt_delta, &prompt_ended, &prompt_started);
1295   timeval_add (&prompt_for_continue_wait_time,
1296                &prompt_for_continue_wait_time, &prompt_delta);
1297
1298   xfree (question);
1299   if (annotation_level > 1)
1300     printf_filtered (("\n\032\032post-query\n"));
1301   return retval;
1302 }
1303 \f
1304
1305 /* Ask user a y-or-n question and return 0 if answer is no, 1 if
1306    answer is yes, or 0 if answer is defaulted.
1307    Takes three args which are given to printf to print the question.
1308    The first, a control string, should end in "? ".
1309    It should not say how to answer, because we do that.  */
1310
1311 int
1312 nquery (const char *ctlstr, ...)
1313 {
1314   va_list args;
1315   int ret;
1316
1317   va_start (args, ctlstr);
1318   ret = defaulted_query (ctlstr, 'n', args);
1319   va_end (args);
1320   return ret;
1321 }
1322
1323 /* Ask user a y-or-n question and return 0 if answer is no, 1 if
1324    answer is yes, or 1 if answer is defaulted.
1325    Takes three args which are given to printf to print the question.
1326    The first, a control string, should end in "? ".
1327    It should not say how to answer, because we do that.  */
1328
1329 int
1330 yquery (const char *ctlstr, ...)
1331 {
1332   va_list args;
1333   int ret;
1334
1335   va_start (args, ctlstr);
1336   ret = defaulted_query (ctlstr, 'y', args);
1337   va_end (args);
1338   return ret;
1339 }
1340
1341 /* Ask user a y-or-n question and return 1 iff answer is yes.
1342    Takes three args which are given to printf to print the question.
1343    The first, a control string, should end in "? ".
1344    It should not say how to answer, because we do that.  */
1345
1346 int
1347 query (const char *ctlstr, ...)
1348 {
1349   va_list args;
1350   int ret;
1351
1352   va_start (args, ctlstr);
1353   ret = defaulted_query (ctlstr, '\0', args);
1354   va_end (args);
1355   return ret;
1356 }
1357
1358 /* A helper for parse_escape that converts a host character to a
1359    target character.  C is the host character.  If conversion is
1360    possible, then the target character is stored in *TARGET_C and the
1361    function returns 1.  Otherwise, the function returns 0.  */
1362
1363 static int
1364 host_char_to_target (struct gdbarch *gdbarch, int c, int *target_c)
1365 {
1366   struct obstack host_data;
1367   char the_char = c;
1368   struct cleanup *cleanups;
1369   int result = 0;
1370
1371   obstack_init (&host_data);
1372   cleanups = make_cleanup_obstack_free (&host_data);
1373
1374   convert_between_encodings (target_charset (gdbarch), host_charset (),
1375                              (gdb_byte *) &the_char, 1, 1,
1376                              &host_data, translit_none);
1377
1378   if (obstack_object_size (&host_data) == 1)
1379     {
1380       result = 1;
1381       *target_c = *(char *) obstack_base (&host_data);
1382     }
1383
1384   do_cleanups (cleanups);
1385   return result;
1386 }
1387
1388 /* Parse a C escape sequence.  STRING_PTR points to a variable
1389    containing a pointer to the string to parse.  That pointer
1390    should point to the character after the \.  That pointer
1391    is updated past the characters we use.  The value of the
1392    escape sequence is returned.
1393
1394    A negative value means the sequence \ newline was seen,
1395    which is supposed to be equivalent to nothing at all.
1396
1397    If \ is followed by a null character, we return a negative
1398    value and leave the string pointer pointing at the null character.
1399
1400    If \ is followed by 000, we return 0 and leave the string pointer
1401    after the zeros.  A value of 0 does not mean end of string.  */
1402
1403 int
1404 parse_escape (struct gdbarch *gdbarch, const char **string_ptr)
1405 {
1406   int target_char = -2; /* Initialize to avoid GCC warnings.  */
1407   int c = *(*string_ptr)++;
1408
1409   switch (c)
1410     {
1411       case '\n':
1412         return -2;
1413       case 0:
1414         (*string_ptr)--;
1415         return 0;
1416
1417       case '0':
1418       case '1':
1419       case '2':
1420       case '3':
1421       case '4':
1422       case '5':
1423       case '6':
1424       case '7':
1425         {
1426           int i = host_hex_value (c);
1427           int count = 0;
1428           while (++count < 3)
1429             {
1430               c = (**string_ptr);
1431               if (isdigit (c) && c != '8' && c != '9')
1432                 {
1433                   (*string_ptr)++;
1434                   i *= 8;
1435                   i += host_hex_value (c);
1436                 }
1437               else
1438                 {
1439                   break;
1440                 }
1441             }
1442           return i;
1443         }
1444
1445     case 'a':
1446       c = '\a';
1447       break;
1448     case 'b':
1449       c = '\b';
1450       break;
1451     case 'f':
1452       c = '\f';
1453       break;
1454     case 'n':
1455       c = '\n';
1456       break;
1457     case 'r':
1458       c = '\r';
1459       break;
1460     case 't':
1461       c = '\t';
1462       break;
1463     case 'v':
1464       c = '\v';
1465       break;
1466
1467     default:
1468       break;
1469     }
1470
1471   if (!host_char_to_target (gdbarch, c, &target_char))
1472     error (_("The escape sequence `\\%c' is equivalent to plain `%c',"
1473              " which has no equivalent\nin the `%s' character set."),
1474            c, c, target_charset (gdbarch));
1475   return target_char;
1476 }
1477 \f
1478 /* Print the character C on STREAM as part of the contents of a literal
1479    string whose delimiter is QUOTER.  Note that this routine should only
1480    be call for printing things which are independent of the language
1481    of the program being debugged.  */
1482
1483 static void
1484 printchar (int c, void (*do_fputs) (const char *, struct ui_file *),
1485            void (*do_fprintf) (struct ui_file *, const char *, ...)
1486            ATTRIBUTE_FPTR_PRINTF_2, struct ui_file *stream, int quoter)
1487 {
1488   c &= 0xFF;                    /* Avoid sign bit follies */
1489
1490   if (c < 0x20 ||               /* Low control chars */
1491       (c >= 0x7F && c < 0xA0) ||        /* DEL, High controls */
1492       (sevenbit_strings && c >= 0x80))
1493     {                           /* high order bit set */
1494       switch (c)
1495         {
1496         case '\n':
1497           do_fputs ("\\n", stream);
1498           break;
1499         case '\b':
1500           do_fputs ("\\b", stream);
1501           break;
1502         case '\t':
1503           do_fputs ("\\t", stream);
1504           break;
1505         case '\f':
1506           do_fputs ("\\f", stream);
1507           break;
1508         case '\r':
1509           do_fputs ("\\r", stream);
1510           break;
1511         case '\033':
1512           do_fputs ("\\e", stream);
1513           break;
1514         case '\007':
1515           do_fputs ("\\a", stream);
1516           break;
1517         default:
1518           do_fprintf (stream, "\\%.3o", (unsigned int) c);
1519           break;
1520         }
1521     }
1522   else
1523     {
1524       if (c == '\\' || c == quoter)
1525         do_fputs ("\\", stream);
1526       do_fprintf (stream, "%c", c);
1527     }
1528 }
1529
1530 /* Print the character C on STREAM as part of the contents of a
1531    literal string whose delimiter is QUOTER.  Note that these routines
1532    should only be call for printing things which are independent of
1533    the language of the program being debugged.  */
1534
1535 void
1536 fputstr_filtered (const char *str, int quoter, struct ui_file *stream)
1537 {
1538   while (*str)
1539     printchar (*str++, fputs_filtered, fprintf_filtered, stream, quoter);
1540 }
1541
1542 void
1543 fputstr_unfiltered (const char *str, int quoter, struct ui_file *stream)
1544 {
1545   while (*str)
1546     printchar (*str++, fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1547 }
1548
1549 void
1550 fputstrn_filtered (const char *str, int n, int quoter,
1551                    struct ui_file *stream)
1552 {
1553   int i;
1554
1555   for (i = 0; i < n; i++)
1556     printchar (str[i], fputs_filtered, fprintf_filtered, stream, quoter);
1557 }
1558
1559 void
1560 fputstrn_unfiltered (const char *str, int n, int quoter,
1561                      struct ui_file *stream)
1562 {
1563   int i;
1564
1565   for (i = 0; i < n; i++)
1566     printchar (str[i], fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1567 }
1568 \f
1569
1570 /* Number of lines per page or UINT_MAX if paging is disabled.  */
1571 static unsigned int lines_per_page;
1572 static void
1573 show_lines_per_page (struct ui_file *file, int from_tty,
1574                      struct cmd_list_element *c, const char *value)
1575 {
1576   fprintf_filtered (file,
1577                     _("Number of lines gdb thinks are in a page is %s.\n"),
1578                     value);
1579 }
1580
1581 /* Number of chars per line or UINT_MAX if line folding is disabled.  */
1582 static unsigned int chars_per_line;
1583 static void
1584 show_chars_per_line (struct ui_file *file, int from_tty,
1585                      struct cmd_list_element *c, const char *value)
1586 {
1587   fprintf_filtered (file,
1588                     _("Number of characters gdb thinks "
1589                       "are in a line is %s.\n"),
1590                     value);
1591 }
1592
1593 /* Current count of lines printed on this page, chars on this line.  */
1594 static unsigned int lines_printed, chars_printed;
1595
1596 /* Buffer and start column of buffered text, for doing smarter word-
1597    wrapping.  When someone calls wrap_here(), we start buffering output
1598    that comes through fputs_filtered().  If we see a newline, we just
1599    spit it out and forget about the wrap_here().  If we see another
1600    wrap_here(), we spit it out and remember the newer one.  If we see
1601    the end of the line, we spit out a newline, the indent, and then
1602    the buffered output.  */
1603
1604 /* Malloc'd buffer with chars_per_line+2 bytes.  Contains characters which
1605    are waiting to be output (they have already been counted in chars_printed).
1606    When wrap_buffer[0] is null, the buffer is empty.  */
1607 static char *wrap_buffer;
1608
1609 /* Pointer in wrap_buffer to the next character to fill.  */
1610 static char *wrap_pointer;
1611
1612 /* String to indent by if the wrap occurs.  Must not be NULL if wrap_column
1613    is non-zero.  */
1614 static char *wrap_indent;
1615
1616 /* Column number on the screen where wrap_buffer begins, or 0 if wrapping
1617    is not in effect.  */
1618 static int wrap_column;
1619 \f
1620
1621 /* Inialize the number of lines per page and chars per line.  */
1622
1623 void
1624 init_page_info (void)
1625 {
1626   if (batch_flag)
1627     {
1628       lines_per_page = UINT_MAX;
1629       chars_per_line = UINT_MAX;
1630     }
1631   else
1632 #if defined(TUI)
1633   if (!tui_get_command_dimension (&chars_per_line, &lines_per_page))
1634 #endif
1635     {
1636       int rows, cols;
1637
1638 #if defined(__GO32__)
1639       rows = ScreenRows ();
1640       cols = ScreenCols ();
1641       lines_per_page = rows;
1642       chars_per_line = cols;
1643 #else
1644       /* Make sure Readline has initialized its terminal settings.  */
1645       rl_reset_terminal (NULL);
1646
1647       /* Get the screen size from Readline.  */
1648       rl_get_screen_size (&rows, &cols);
1649       lines_per_page = rows;
1650       chars_per_line = cols;
1651
1652       /* Readline should have fetched the termcap entry for us.
1653          Only try to use tgetnum function if rl_get_screen_size
1654          did not return a useful value. */
1655       if (((rows <= 0) && (tgetnum ("li") < 0))
1656         /* Also disable paging if inside EMACS.  */
1657           || getenv ("EMACS"))
1658         {
1659           /* The number of lines per page is not mentioned in the terminal
1660              description or EMACS evironment variable is set.  This probably
1661              means that paging is not useful, so disable paging.  */
1662           lines_per_page = UINT_MAX;
1663         }
1664
1665       /* If the output is not a terminal, don't paginate it.  */
1666       if (!ui_file_isatty (gdb_stdout))
1667         lines_per_page = UINT_MAX;
1668 #endif
1669     }
1670
1671   set_screen_size ();
1672   set_width ();
1673 }
1674
1675 /* Helper for make_cleanup_restore_page_info.  */
1676
1677 static void
1678 do_restore_page_info_cleanup (void *arg)
1679 {
1680   set_screen_size ();
1681   set_width ();
1682 }
1683
1684 /* Provide cleanup for restoring the terminal size.  */
1685
1686 struct cleanup *
1687 make_cleanup_restore_page_info (void)
1688 {
1689   struct cleanup *back_to;
1690
1691   back_to = make_cleanup (do_restore_page_info_cleanup, NULL);
1692   make_cleanup_restore_uinteger (&lines_per_page);
1693   make_cleanup_restore_uinteger (&chars_per_line);
1694
1695   return back_to;
1696 }
1697
1698 /* Temporarily set BATCH_FLAG and the associated unlimited terminal size.
1699    Provide cleanup for restoring the original state.  */
1700
1701 struct cleanup *
1702 set_batch_flag_and_make_cleanup_restore_page_info (void)
1703 {
1704   struct cleanup *back_to = make_cleanup_restore_page_info ();
1705   
1706   make_cleanup_restore_integer (&batch_flag);
1707   batch_flag = 1;
1708   init_page_info ();
1709
1710   return back_to;
1711 }
1712
1713 /* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE.  */
1714
1715 static void
1716 set_screen_size (void)
1717 {
1718   int rows = lines_per_page;
1719   int cols = chars_per_line;
1720
1721   if (rows <= 0)
1722     rows = INT_MAX;
1723
1724   if (cols <= 0)
1725     cols = INT_MAX;
1726
1727   /* Update Readline's idea of the terminal size.  */
1728   rl_set_screen_size (rows, cols);
1729 }
1730
1731 /* Reinitialize WRAP_BUFFER according to the current value of
1732    CHARS_PER_LINE.  */
1733
1734 static void
1735 set_width (void)
1736 {
1737   if (chars_per_line == 0)
1738     init_page_info ();
1739
1740   if (!wrap_buffer)
1741     {
1742       wrap_buffer = (char *) xmalloc (chars_per_line + 2);
1743       wrap_buffer[0] = '\0';
1744     }
1745   else
1746     wrap_buffer = (char *) xrealloc (wrap_buffer, chars_per_line + 2);
1747   wrap_pointer = wrap_buffer;   /* Start it at the beginning.  */
1748 }
1749
1750 static void
1751 set_width_command (char *args, int from_tty, struct cmd_list_element *c)
1752 {
1753   set_screen_size ();
1754   set_width ();
1755 }
1756
1757 static void
1758 set_height_command (char *args, int from_tty, struct cmd_list_element *c)
1759 {
1760   set_screen_size ();
1761 }
1762
1763 /* Wait, so the user can read what's on the screen.  Prompt the user
1764    to continue by pressing RETURN.  */
1765
1766 static void
1767 prompt_for_continue (void)
1768 {
1769   char *ignore;
1770   char cont_prompt[120];
1771   /* Used to add duration we waited for user to respond to
1772      prompt_for_continue_wait_time.  */
1773   struct timeval prompt_started, prompt_ended, prompt_delta;
1774
1775   gettimeofday (&prompt_started, NULL);
1776
1777   if (annotation_level > 1)
1778     printf_unfiltered (("\n\032\032pre-prompt-for-continue\n"));
1779
1780   strcpy (cont_prompt,
1781           "---Type <return> to continue, or q <return> to quit---");
1782   if (annotation_level > 1)
1783     strcat (cont_prompt, "\n\032\032prompt-for-continue\n");
1784
1785   /* We must do this *before* we call gdb_readline, else it will eventually
1786      call us -- thinking that we're trying to print beyond the end of the 
1787      screen.  */
1788   reinitialize_more_filter ();
1789
1790   immediate_quit++;
1791   QUIT;
1792   /* On a real operating system, the user can quit with SIGINT.
1793      But not on GO32.
1794
1795      'q' is provided on all systems so users don't have to change habits
1796      from system to system, and because telling them what to do in
1797      the prompt is more user-friendly than expecting them to think of
1798      SIGINT.  */
1799   /* Call readline, not gdb_readline, because GO32 readline handles control-C
1800      whereas control-C to gdb_readline will cause the user to get dumped
1801      out to DOS.  */
1802   ignore = gdb_readline_wrapper (cont_prompt);
1803
1804   /* Add time spend in this routine to prompt_for_continue_wait_time.  */
1805   gettimeofday (&prompt_ended, NULL);
1806   timeval_sub (&prompt_delta, &prompt_ended, &prompt_started);
1807   timeval_add (&prompt_for_continue_wait_time,
1808                &prompt_for_continue_wait_time, &prompt_delta);
1809
1810   if (annotation_level > 1)
1811     printf_unfiltered (("\n\032\032post-prompt-for-continue\n"));
1812
1813   if (ignore)
1814     {
1815       char *p = ignore;
1816
1817       while (*p == ' ' || *p == '\t')
1818         ++p;
1819       if (p[0] == 'q')
1820         quit ();
1821       xfree (ignore);
1822     }
1823   immediate_quit--;
1824
1825   /* Now we have to do this again, so that GDB will know that it doesn't
1826      need to save the ---Type <return>--- line at the top of the screen.  */
1827   reinitialize_more_filter ();
1828
1829   dont_repeat ();               /* Forget prev cmd -- CR won't repeat it.  */
1830 }
1831
1832 /* Initalize timer to keep track of how long we waited for the user.  */
1833
1834 void
1835 reset_prompt_for_continue_wait_time (void)
1836 {
1837   static const struct timeval zero_timeval = { 0 };
1838
1839   prompt_for_continue_wait_time = zero_timeval;
1840 }
1841
1842 /* Fetch the cumulative time spent in prompt_for_continue.  */
1843
1844 struct timeval
1845 get_prompt_for_continue_wait_time (void)
1846 {
1847   return prompt_for_continue_wait_time;
1848 }
1849
1850 /* Reinitialize filter; ie. tell it to reset to original values.  */
1851
1852 void
1853 reinitialize_more_filter (void)
1854 {
1855   lines_printed = 0;
1856   chars_printed = 0;
1857 }
1858
1859 /* Indicate that if the next sequence of characters overflows the line,
1860    a newline should be inserted here rather than when it hits the end.
1861    If INDENT is non-null, it is a string to be printed to indent the
1862    wrapped part on the next line.  INDENT must remain accessible until
1863    the next call to wrap_here() or until a newline is printed through
1864    fputs_filtered().
1865
1866    If the line is already overfull, we immediately print a newline and
1867    the indentation, and disable further wrapping.
1868
1869    If we don't know the width of lines, but we know the page height,
1870    we must not wrap words, but should still keep track of newlines
1871    that were explicitly printed.
1872
1873    INDENT should not contain tabs, as that will mess up the char count
1874    on the next line.  FIXME.
1875
1876    This routine is guaranteed to force out any output which has been
1877    squirreled away in the wrap_buffer, so wrap_here ((char *)0) can be
1878    used to force out output from the wrap_buffer.  */
1879
1880 void
1881 wrap_here (char *indent)
1882 {
1883   /* This should have been allocated, but be paranoid anyway.  */
1884   if (!wrap_buffer)
1885     internal_error (__FILE__, __LINE__,
1886                     _("failed internal consistency check"));
1887
1888   if (wrap_buffer[0])
1889     {
1890       *wrap_pointer = '\0';
1891       fputs_unfiltered (wrap_buffer, gdb_stdout);
1892     }
1893   wrap_pointer = wrap_buffer;
1894   wrap_buffer[0] = '\0';
1895   if (chars_per_line == UINT_MAX)       /* No line overflow checking.  */
1896     {
1897       wrap_column = 0;
1898     }
1899   else if (chars_printed >= chars_per_line)
1900     {
1901       puts_filtered ("\n");
1902       if (indent != NULL)
1903         puts_filtered (indent);
1904       wrap_column = 0;
1905     }
1906   else
1907     {
1908       wrap_column = chars_printed;
1909       if (indent == NULL)
1910         wrap_indent = "";
1911       else
1912         wrap_indent = indent;
1913     }
1914 }
1915
1916 /* Print input string to gdb_stdout, filtered, with wrap, 
1917    arranging strings in columns of n chars.  String can be
1918    right or left justified in the column.  Never prints 
1919    trailing spaces.  String should never be longer than
1920    width.  FIXME: this could be useful for the EXAMINE 
1921    command, which currently doesn't tabulate very well.  */
1922
1923 void
1924 puts_filtered_tabular (char *string, int width, int right)
1925 {
1926   int spaces = 0;
1927   int stringlen;
1928   char *spacebuf;
1929
1930   gdb_assert (chars_per_line > 0);
1931   if (chars_per_line == UINT_MAX)
1932     {
1933       fputs_filtered (string, gdb_stdout);
1934       fputs_filtered ("\n", gdb_stdout);
1935       return;
1936     }
1937
1938   if (((chars_printed - 1) / width + 2) * width >= chars_per_line)
1939     fputs_filtered ("\n", gdb_stdout);
1940
1941   if (width >= chars_per_line)
1942     width = chars_per_line - 1;
1943
1944   stringlen = strlen (string);
1945
1946   if (chars_printed > 0)
1947     spaces = width - (chars_printed - 1) % width - 1;
1948   if (right)
1949     spaces += width - stringlen;
1950
1951   spacebuf = alloca (spaces + 1);
1952   spacebuf[spaces] = '\0';
1953   while (spaces--)
1954     spacebuf[spaces] = ' ';
1955
1956   fputs_filtered (spacebuf, gdb_stdout);
1957   fputs_filtered (string, gdb_stdout);
1958 }
1959
1960
1961 /* Ensure that whatever gets printed next, using the filtered output
1962    commands, starts at the beginning of the line.  I.e. if there is
1963    any pending output for the current line, flush it and start a new
1964    line.  Otherwise do nothing.  */
1965
1966 void
1967 begin_line (void)
1968 {
1969   if (chars_printed > 0)
1970     {
1971       puts_filtered ("\n");
1972     }
1973 }
1974
1975
1976 /* Like fputs but if FILTER is true, pause after every screenful.
1977
1978    Regardless of FILTER can wrap at points other than the final
1979    character of a line.
1980
1981    Unlike fputs, fputs_maybe_filtered does not return a value.
1982    It is OK for LINEBUFFER to be NULL, in which case just don't print
1983    anything.
1984
1985    Note that a longjmp to top level may occur in this routine (only if
1986    FILTER is true) (since prompt_for_continue may do so) so this
1987    routine should not be called when cleanups are not in place.  */
1988
1989 static void
1990 fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
1991                       int filter)
1992 {
1993   const char *lineptr;
1994
1995   if (linebuffer == 0)
1996     return;
1997
1998   /* Don't do any filtering if it is disabled.  */
1999   if (stream != gdb_stdout
2000       || !pagination_enabled
2001       || batch_flag
2002       || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX)
2003       || top_level_interpreter () == NULL
2004       || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
2005     {
2006       fputs_unfiltered (linebuffer, stream);
2007       return;
2008     }
2009
2010   /* Go through and output each character.  Show line extension
2011      when this is necessary; prompt user for new page when this is
2012      necessary.  */
2013
2014   lineptr = linebuffer;
2015   while (*lineptr)
2016     {
2017       /* Possible new page.  */
2018       if (filter && (lines_printed >= lines_per_page - 1))
2019         prompt_for_continue ();
2020
2021       while (*lineptr && *lineptr != '\n')
2022         {
2023           /* Print a single line.  */
2024           if (*lineptr == '\t')
2025             {
2026               if (wrap_column)
2027                 *wrap_pointer++ = '\t';
2028               else
2029                 fputc_unfiltered ('\t', stream);
2030               /* Shifting right by 3 produces the number of tab stops
2031                  we have already passed, and then adding one and
2032                  shifting left 3 advances to the next tab stop.  */
2033               chars_printed = ((chars_printed >> 3) + 1) << 3;
2034               lineptr++;
2035             }
2036           else
2037             {
2038               if (wrap_column)
2039                 *wrap_pointer++ = *lineptr;
2040               else
2041                 fputc_unfiltered (*lineptr, stream);
2042               chars_printed++;
2043               lineptr++;
2044             }
2045
2046           if (chars_printed >= chars_per_line)
2047             {
2048               unsigned int save_chars = chars_printed;
2049
2050               chars_printed = 0;
2051               lines_printed++;
2052               /* If we aren't actually wrapping, don't output newline --
2053                  if chars_per_line is right, we probably just overflowed
2054                  anyway; if it's wrong, let us keep going.  */
2055               if (wrap_column)
2056                 fputc_unfiltered ('\n', stream);
2057
2058               /* Possible new page.  */
2059               if (lines_printed >= lines_per_page - 1)
2060                 prompt_for_continue ();
2061
2062               /* Now output indentation and wrapped string.  */
2063               if (wrap_column)
2064                 {
2065                   fputs_unfiltered (wrap_indent, stream);
2066                   *wrap_pointer = '\0'; /* Null-terminate saved stuff, */
2067                   fputs_unfiltered (wrap_buffer, stream); /* and eject it.  */
2068                   /* FIXME, this strlen is what prevents wrap_indent from
2069                      containing tabs.  However, if we recurse to print it
2070                      and count its chars, we risk trouble if wrap_indent is
2071                      longer than (the user settable) chars_per_line.
2072                      Note also that this can set chars_printed > chars_per_line
2073                      if we are printing a long string.  */
2074                   chars_printed = strlen (wrap_indent)
2075                     + (save_chars - wrap_column);
2076                   wrap_pointer = wrap_buffer;   /* Reset buffer */
2077                   wrap_buffer[0] = '\0';
2078                   wrap_column = 0;      /* And disable fancy wrap */
2079                 }
2080             }
2081         }
2082
2083       if (*lineptr == '\n')
2084         {
2085           chars_printed = 0;
2086           wrap_here ((char *) 0);       /* Spit out chars, cancel
2087                                            further wraps.  */
2088           lines_printed++;
2089           fputc_unfiltered ('\n', stream);
2090           lineptr++;
2091         }
2092     }
2093 }
2094
2095 void
2096 fputs_filtered (const char *linebuffer, struct ui_file *stream)
2097 {
2098   fputs_maybe_filtered (linebuffer, stream, 1);
2099 }
2100
2101 int
2102 putchar_unfiltered (int c)
2103 {
2104   char buf = c;
2105
2106   ui_file_write (gdb_stdout, &buf, 1);
2107   return c;
2108 }
2109
2110 /* Write character C to gdb_stdout using GDB's paging mechanism and return C.
2111    May return nonlocally.  */
2112
2113 int
2114 putchar_filtered (int c)
2115 {
2116   return fputc_filtered (c, gdb_stdout);
2117 }
2118
2119 int
2120 fputc_unfiltered (int c, struct ui_file *stream)
2121 {
2122   char buf = c;
2123
2124   ui_file_write (stream, &buf, 1);
2125   return c;
2126 }
2127
2128 int
2129 fputc_filtered (int c, struct ui_file *stream)
2130 {
2131   char buf[2];
2132
2133   buf[0] = c;
2134   buf[1] = 0;
2135   fputs_filtered (buf, stream);
2136   return c;
2137 }
2138
2139 /* puts_debug is like fputs_unfiltered, except it prints special
2140    characters in printable fashion.  */
2141
2142 void
2143 puts_debug (char *prefix, char *string, char *suffix)
2144 {
2145   int ch;
2146
2147   /* Print prefix and suffix after each line.  */
2148   static int new_line = 1;
2149   static int return_p = 0;
2150   static char *prev_prefix = "";
2151   static char *prev_suffix = "";
2152
2153   if (*string == '\n')
2154     return_p = 0;
2155
2156   /* If the prefix is changing, print the previous suffix, a new line,
2157      and the new prefix.  */
2158   if ((return_p || (strcmp (prev_prefix, prefix) != 0)) && !new_line)
2159     {
2160       fputs_unfiltered (prev_suffix, gdb_stdlog);
2161       fputs_unfiltered ("\n", gdb_stdlog);
2162       fputs_unfiltered (prefix, gdb_stdlog);
2163     }
2164
2165   /* Print prefix if we printed a newline during the previous call.  */
2166   if (new_line)
2167     {
2168       new_line = 0;
2169       fputs_unfiltered (prefix, gdb_stdlog);
2170     }
2171
2172   prev_prefix = prefix;
2173   prev_suffix = suffix;
2174
2175   /* Output characters in a printable format.  */
2176   while ((ch = *string++) != '\0')
2177     {
2178       switch (ch)
2179         {
2180         default:
2181           if (isprint (ch))
2182             fputc_unfiltered (ch, gdb_stdlog);
2183
2184           else
2185             fprintf_unfiltered (gdb_stdlog, "\\x%02x", ch & 0xff);
2186           break;
2187
2188         case '\\':
2189           fputs_unfiltered ("\\\\", gdb_stdlog);
2190           break;
2191         case '\b':
2192           fputs_unfiltered ("\\b", gdb_stdlog);
2193           break;
2194         case '\f':
2195           fputs_unfiltered ("\\f", gdb_stdlog);
2196           break;
2197         case '\n':
2198           new_line = 1;
2199           fputs_unfiltered ("\\n", gdb_stdlog);
2200           break;
2201         case '\r':
2202           fputs_unfiltered ("\\r", gdb_stdlog);
2203           break;
2204         case '\t':
2205           fputs_unfiltered ("\\t", gdb_stdlog);
2206           break;
2207         case '\v':
2208           fputs_unfiltered ("\\v", gdb_stdlog);
2209           break;
2210         }
2211
2212       return_p = ch == '\r';
2213     }
2214
2215   /* Print suffix if we printed a newline.  */
2216   if (new_line)
2217     {
2218       fputs_unfiltered (suffix, gdb_stdlog);
2219       fputs_unfiltered ("\n", gdb_stdlog);
2220     }
2221 }
2222
2223
2224 /* Print a variable number of ARGS using format FORMAT.  If this
2225    information is going to put the amount written (since the last call
2226    to REINITIALIZE_MORE_FILTER or the last page break) over the page size,
2227    call prompt_for_continue to get the users permision to continue.
2228
2229    Unlike fprintf, this function does not return a value.
2230
2231    We implement three variants, vfprintf (takes a vararg list and stream),
2232    fprintf (takes a stream to write on), and printf (the usual).
2233
2234    Note also that a longjmp to top level may occur in this routine
2235    (since prompt_for_continue may do so) so this routine should not be
2236    called when cleanups are not in place.  */
2237
2238 static void
2239 vfprintf_maybe_filtered (struct ui_file *stream, const char *format,
2240                          va_list args, int filter)
2241 {
2242   char *linebuffer;
2243   struct cleanup *old_cleanups;
2244
2245   linebuffer = xstrvprintf (format, args);
2246   old_cleanups = make_cleanup (xfree, linebuffer);
2247   fputs_maybe_filtered (linebuffer, stream, filter);
2248   do_cleanups (old_cleanups);
2249 }
2250
2251
2252 void
2253 vfprintf_filtered (struct ui_file *stream, const char *format, va_list args)
2254 {
2255   vfprintf_maybe_filtered (stream, format, args, 1);
2256 }
2257
2258 void
2259 vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args)
2260 {
2261   char *linebuffer;
2262   struct cleanup *old_cleanups;
2263
2264   linebuffer = xstrvprintf (format, args);
2265   old_cleanups = make_cleanup (xfree, linebuffer);
2266   if (debug_timestamp && stream == gdb_stdlog)
2267     {
2268       struct timeval tm;
2269       char *timestamp;
2270       int len, need_nl;
2271
2272       gettimeofday (&tm, NULL);
2273
2274       len = strlen (linebuffer);
2275       need_nl = (len > 0 && linebuffer[len - 1] != '\n');
2276
2277       timestamp = xstrprintf ("%ld:%ld %s%s",
2278                               (long) tm.tv_sec, (long) tm.tv_usec,
2279                               linebuffer,
2280                               need_nl ? "\n": "");
2281       make_cleanup (xfree, timestamp);
2282       fputs_unfiltered (timestamp, stream);
2283     }
2284   else
2285     fputs_unfiltered (linebuffer, stream);
2286   do_cleanups (old_cleanups);
2287 }
2288
2289 void
2290 vprintf_filtered (const char *format, va_list args)
2291 {
2292   vfprintf_maybe_filtered (gdb_stdout, format, args, 1);
2293 }
2294
2295 void
2296 vprintf_unfiltered (const char *format, va_list args)
2297 {
2298   vfprintf_unfiltered (gdb_stdout, format, args);
2299 }
2300
2301 void
2302 fprintf_filtered (struct ui_file *stream, const char *format, ...)
2303 {
2304   va_list args;
2305
2306   va_start (args, format);
2307   vfprintf_filtered (stream, format, args);
2308   va_end (args);
2309 }
2310
2311 void
2312 fprintf_unfiltered (struct ui_file *stream, const char *format, ...)
2313 {
2314   va_list args;
2315
2316   va_start (args, format);
2317   vfprintf_unfiltered (stream, format, args);
2318   va_end (args);
2319 }
2320
2321 /* Like fprintf_filtered, but prints its result indented.
2322    Called as fprintfi_filtered (spaces, stream, format, ...);  */
2323
2324 void
2325 fprintfi_filtered (int spaces, struct ui_file *stream, const char *format,
2326                    ...)
2327 {
2328   va_list args;
2329
2330   va_start (args, format);
2331   print_spaces_filtered (spaces, stream);
2332
2333   vfprintf_filtered (stream, format, args);
2334   va_end (args);
2335 }
2336
2337
2338 void
2339 printf_filtered (const char *format, ...)
2340 {
2341   va_list args;
2342
2343   va_start (args, format);
2344   vfprintf_filtered (gdb_stdout, format, args);
2345   va_end (args);
2346 }
2347
2348
2349 void
2350 printf_unfiltered (const char *format, ...)
2351 {
2352   va_list args;
2353
2354   va_start (args, format);
2355   vfprintf_unfiltered (gdb_stdout, format, args);
2356   va_end (args);
2357 }
2358
2359 /* Like printf_filtered, but prints it's result indented.
2360    Called as printfi_filtered (spaces, format, ...);  */
2361
2362 void
2363 printfi_filtered (int spaces, const char *format, ...)
2364 {
2365   va_list args;
2366
2367   va_start (args, format);
2368   print_spaces_filtered (spaces, gdb_stdout);
2369   vfprintf_filtered (gdb_stdout, format, args);
2370   va_end (args);
2371 }
2372
2373 /* Easy -- but watch out!
2374
2375    This routine is *not* a replacement for puts()!  puts() appends a newline.
2376    This one doesn't, and had better not!  */
2377
2378 void
2379 puts_filtered (const char *string)
2380 {
2381   fputs_filtered (string, gdb_stdout);
2382 }
2383
2384 void
2385 puts_unfiltered (const char *string)
2386 {
2387   fputs_unfiltered (string, gdb_stdout);
2388 }
2389
2390 /* Return a pointer to N spaces and a null.  The pointer is good
2391    until the next call to here.  */
2392 char *
2393 n_spaces (int n)
2394 {
2395   char *t;
2396   static char *spaces = 0;
2397   static int max_spaces = -1;
2398
2399   if (n > max_spaces)
2400     {
2401       if (spaces)
2402         xfree (spaces);
2403       spaces = (char *) xmalloc (n + 1);
2404       for (t = spaces + n; t != spaces;)
2405         *--t = ' ';
2406       spaces[n] = '\0';
2407       max_spaces = n;
2408     }
2409
2410   return spaces + max_spaces - n;
2411 }
2412
2413 /* Print N spaces.  */
2414 void
2415 print_spaces_filtered (int n, struct ui_file *stream)
2416 {
2417   fputs_filtered (n_spaces (n), stream);
2418 }
2419 \f
2420 /* C++/ObjC demangler stuff.  */
2421
2422 /* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
2423    LANG, using demangling args ARG_MODE, and print it filtered to STREAM.
2424    If the name is not mangled, or the language for the name is unknown, or
2425    demangling is off, the name is printed in its "raw" form.  */
2426
2427 void
2428 fprintf_symbol_filtered (struct ui_file *stream, const char *name,
2429                          enum language lang, int arg_mode)
2430 {
2431   char *demangled;
2432
2433   if (name != NULL)
2434     {
2435       /* If user wants to see raw output, no problem.  */
2436       if (!demangle)
2437         {
2438           fputs_filtered (name, stream);
2439         }
2440       else
2441         {
2442           demangled = language_demangle (language_def (lang), name, arg_mode);
2443           fputs_filtered (demangled ? demangled : name, stream);
2444           if (demangled != NULL)
2445             {
2446               xfree (demangled);
2447             }
2448         }
2449     }
2450 }
2451
2452 /* Do a strcmp() type operation on STRING1 and STRING2, ignoring any
2453    differences in whitespace.  Returns 0 if they match, non-zero if they
2454    don't (slightly different than strcmp()'s range of return values).
2455
2456    As an extra hack, string1=="FOO(ARGS)" matches string2=="FOO".
2457    This "feature" is useful when searching for matching C++ function names
2458    (such as if the user types 'break FOO', where FOO is a mangled C++
2459    function).  */
2460
2461 int
2462 strcmp_iw (const char *string1, const char *string2)
2463 {
2464   while ((*string1 != '\0') && (*string2 != '\0'))
2465     {
2466       while (isspace (*string1))
2467         {
2468           string1++;
2469         }
2470       while (isspace (*string2))
2471         {
2472           string2++;
2473         }
2474       if (case_sensitivity == case_sensitive_on && *string1 != *string2)
2475         break;
2476       if (case_sensitivity == case_sensitive_off
2477           && (tolower ((unsigned char) *string1)
2478               != tolower ((unsigned char) *string2)))
2479         break;
2480       if (*string1 != '\0')
2481         {
2482           string1++;
2483           string2++;
2484         }
2485     }
2486   return (*string1 != '\0' && *string1 != '(') || (*string2 != '\0');
2487 }
2488
2489 /* This is like strcmp except that it ignores whitespace and treats
2490    '(' as the first non-NULL character in terms of ordering.  Like
2491    strcmp (and unlike strcmp_iw), it returns negative if STRING1 <
2492    STRING2, 0 if STRING2 = STRING2, and positive if STRING1 > STRING2
2493    according to that ordering.
2494
2495    If a list is sorted according to this function and if you want to
2496    find names in the list that match some fixed NAME according to
2497    strcmp_iw(LIST_ELT, NAME), then the place to start looking is right
2498    where this function would put NAME.
2499
2500    This function must be neutral to the CASE_SENSITIVITY setting as the user
2501    may choose it during later lookup.  Therefore this function always sorts
2502    primarily case-insensitively and secondarily case-sensitively.
2503
2504    Here are some examples of why using strcmp to sort is a bad idea:
2505
2506    Whitespace example:
2507
2508    Say your partial symtab contains: "foo<char *>", "goo".  Then, if
2509    we try to do a search for "foo<char*>", strcmp will locate this
2510    after "foo<char *>" and before "goo".  Then lookup_partial_symbol
2511    will start looking at strings beginning with "goo", and will never
2512    see the correct match of "foo<char *>".
2513
2514    Parenthesis example:
2515
2516    In practice, this is less like to be an issue, but I'll give it a
2517    shot.  Let's assume that '$' is a legitimate character to occur in
2518    symbols.  (Which may well even be the case on some systems.)  Then
2519    say that the partial symbol table contains "foo$" and "foo(int)".
2520    strcmp will put them in this order, since '$' < '('.  Now, if the
2521    user searches for "foo", then strcmp will sort "foo" before "foo$".
2522    Then lookup_partial_symbol will notice that strcmp_iw("foo$",
2523    "foo") is false, so it won't proceed to the actual match of
2524    "foo(int)" with "foo".  */
2525
2526 int
2527 strcmp_iw_ordered (const char *string1, const char *string2)
2528 {
2529   const char *saved_string1 = string1, *saved_string2 = string2;
2530   enum case_sensitivity case_pass = case_sensitive_off;
2531
2532   for (;;)
2533     {
2534       /* C1 and C2 are valid only if *string1 != '\0' && *string2 != '\0'.
2535          Provide stub characters if we are already at the end of one of the
2536          strings.  */
2537       char c1 = 'X', c2 = 'X';
2538
2539       while (*string1 != '\0' && *string2 != '\0')
2540         {
2541           while (isspace (*string1))
2542             string1++;
2543           while (isspace (*string2))
2544             string2++;
2545
2546           switch (case_pass)
2547           {
2548             case case_sensitive_off:
2549               c1 = tolower ((unsigned char) *string1);
2550               c2 = tolower ((unsigned char) *string2);
2551               break;
2552             case case_sensitive_on:
2553               c1 = *string1;
2554               c2 = *string2;
2555               break;
2556           }
2557           if (c1 != c2)
2558             break;
2559
2560           if (*string1 != '\0')
2561             {
2562               string1++;
2563               string2++;
2564             }
2565         }
2566
2567       switch (*string1)
2568         {
2569           /* Characters are non-equal unless they're both '\0'; we want to
2570              make sure we get the comparison right according to our
2571              comparison in the cases where one of them is '\0' or '('.  */
2572         case '\0':
2573           if (*string2 == '\0')
2574             break;
2575           else
2576             return -1;
2577         case '(':
2578           if (*string2 == '\0')
2579             return 1;
2580           else
2581             return -1;
2582         default:
2583           if (*string2 == '\0' || *string2 == '(')
2584             return 1;
2585           else if (c1 > c2)
2586             return 1;
2587           else if (c1 < c2)
2588             return -1;
2589           /* PASSTHRU */
2590         }
2591
2592       if (case_pass == case_sensitive_on)
2593         return 0;
2594       
2595       /* Otherwise the strings were equal in case insensitive way, make
2596          a more fine grained comparison in a case sensitive way.  */
2597
2598       case_pass = case_sensitive_on;
2599       string1 = saved_string1;
2600       string2 = saved_string2;
2601     }
2602 }
2603
2604 /* A simple comparison function with opposite semantics to strcmp.  */
2605
2606 int
2607 streq (const char *lhs, const char *rhs)
2608 {
2609   return !strcmp (lhs, rhs);
2610 }
2611 \f
2612
2613 /*
2614    ** subset_compare()
2615    **    Answer whether string_to_compare is a full or partial match to
2616    **    template_string.  The partial match must be in sequence starting
2617    **    at index 0.
2618  */
2619 int
2620 subset_compare (char *string_to_compare, char *template_string)
2621 {
2622   int match;
2623
2624   if (template_string != (char *) NULL && string_to_compare != (char *) NULL
2625       && strlen (string_to_compare) <= strlen (template_string))
2626     match =
2627       (strncmp
2628        (template_string, string_to_compare, strlen (string_to_compare)) == 0);
2629   else
2630     match = 0;
2631   return match;
2632 }
2633
2634 static void
2635 pagination_on_command (char *arg, int from_tty)
2636 {
2637   pagination_enabled = 1;
2638 }
2639
2640 static void
2641 pagination_off_command (char *arg, int from_tty)
2642 {
2643   pagination_enabled = 0;
2644 }
2645
2646 static void
2647 show_debug_timestamp (struct ui_file *file, int from_tty,
2648                       struct cmd_list_element *c, const char *value)
2649 {
2650   fprintf_filtered (file, _("Timestamping debugging messages is %s.\n"),
2651                     value);
2652 }
2653 \f
2654
2655 void
2656 initialize_utils (void)
2657 {
2658   add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\
2659 Set number of characters where GDB should wrap lines of its output."), _("\
2660 Show number of characters where GDB should wrap lines of its output."), _("\
2661 This affects where GDB wraps its output to fit the screen width.\n\
2662 Setting this to \"unlimited\" or zero prevents GDB from wrapping its output."),
2663                             set_width_command,
2664                             show_chars_per_line,
2665                             &setlist, &showlist);
2666
2667   add_setshow_uinteger_cmd ("height", class_support, &lines_per_page, _("\
2668 Set number of lines in a page for GDB output pagination."), _("\
2669 Show number of lines in a page for GDB output pagination."), _("\
2670 This affects the number of lines after which GDB will pause\n\
2671 its output and ask you whether to continue.\n\
2672 Setting this to \"unlimited\" or zero causes GDB never pause during output."),
2673                             set_height_command,
2674                             show_lines_per_page,
2675                             &setlist, &showlist);
2676
2677   init_page_info ();
2678
2679   add_setshow_boolean_cmd ("pagination", class_support,
2680                            &pagination_enabled, _("\
2681 Set state of GDB output pagination."), _("\
2682 Show state of GDB output pagination."), _("\
2683 When pagination is ON, GDB pauses at end of each screenful of\n\
2684 its output and asks you whether to continue.\n\
2685 Turning pagination off is an alternative to \"set height unlimited\"."),
2686                            NULL,
2687                            show_pagination_enabled,
2688                            &setlist, &showlist);
2689
2690   if (xdb_commands)
2691     {
2692       add_com ("am", class_support, pagination_on_command,
2693                _("Enable pagination"));
2694       add_com ("sm", class_support, pagination_off_command,
2695                _("Disable pagination"));
2696     }
2697
2698   add_setshow_boolean_cmd ("sevenbit-strings", class_support,
2699                            &sevenbit_strings, _("\
2700 Set printing of 8-bit characters in strings as \\nnn."), _("\
2701 Show printing of 8-bit characters in strings as \\nnn."), NULL,
2702                            NULL,
2703                            show_sevenbit_strings,
2704                            &setprintlist, &showprintlist);
2705
2706   add_setshow_boolean_cmd ("timestamp", class_maintenance,
2707                             &debug_timestamp, _("\
2708 Set timestamping of debugging messages."), _("\
2709 Show timestamping of debugging messages."), _("\
2710 When set, debugging messages will be marked with seconds and microseconds."),
2711                            NULL,
2712                            show_debug_timestamp,
2713                            &setdebuglist, &showdebuglist);
2714 }
2715
2716 const char *
2717 paddress (struct gdbarch *gdbarch, CORE_ADDR addr)
2718 {
2719   /* Truncate address to the size of a target address, avoiding shifts
2720      larger or equal than the width of a CORE_ADDR.  The local
2721      variable ADDR_BIT stops the compiler reporting a shift overflow
2722      when it won't occur.  */
2723   /* NOTE: This assumes that the significant address information is
2724      kept in the least significant bits of ADDR - the upper bits were
2725      either zero or sign extended.  Should gdbarch_address_to_pointer or
2726      some ADDRESS_TO_PRINTABLE() be used to do the conversion?  */
2727
2728   int addr_bit = gdbarch_addr_bit (gdbarch);
2729
2730   if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2731     addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
2732   return hex_string (addr);
2733 }
2734
2735 /* This function is described in "defs.h".  */
2736
2737 const char *
2738 print_core_address (struct gdbarch *gdbarch, CORE_ADDR address)
2739 {
2740   int addr_bit = gdbarch_addr_bit (gdbarch);
2741
2742   if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2743     address &= ((CORE_ADDR) 1 << addr_bit) - 1;
2744
2745   /* FIXME: cagney/2002-05-03: Need local_address_string() function
2746      that returns the language localized string formatted to a width
2747      based on gdbarch_addr_bit.  */
2748   if (addr_bit <= 32)
2749     return hex_string_custom (address, 8);
2750   else
2751     return hex_string_custom (address, 16);
2752 }
2753
2754 /* Callback hash_f for htab_create_alloc or htab_create_alloc_ex.  */
2755
2756 hashval_t
2757 core_addr_hash (const void *ap)
2758 {
2759   const CORE_ADDR *addrp = ap;
2760
2761   return *addrp;
2762 }
2763
2764 /* Callback eq_f for htab_create_alloc or htab_create_alloc_ex.  */
2765
2766 int
2767 core_addr_eq (const void *ap, const void *bp)
2768 {
2769   const CORE_ADDR *addr_ap = ap;
2770   const CORE_ADDR *addr_bp = bp;
2771
2772   return *addr_ap == *addr_bp;
2773 }
2774
2775 /* Convert a string back into a CORE_ADDR.  */
2776 CORE_ADDR
2777 string_to_core_addr (const char *my_string)
2778 {
2779   CORE_ADDR addr = 0;
2780
2781   if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
2782     {
2783       /* Assume that it is in hex.  */
2784       int i;
2785
2786       for (i = 2; my_string[i] != '\0'; i++)
2787         {
2788           if (isdigit (my_string[i]))
2789             addr = (my_string[i] - '0') + (addr * 16);
2790           else if (isxdigit (my_string[i]))
2791             addr = (tolower (my_string[i]) - 'a' + 0xa) + (addr * 16);
2792           else
2793             error (_("invalid hex \"%s\""), my_string);
2794         }
2795     }
2796   else
2797     {
2798       /* Assume that it is in decimal.  */
2799       int i;
2800
2801       for (i = 0; my_string[i] != '\0'; i++)
2802         {
2803           if (isdigit (my_string[i]))
2804             addr = (my_string[i] - '0') + (addr * 10);
2805           else
2806             error (_("invalid decimal \"%s\""), my_string);
2807         }
2808     }
2809
2810   return addr;
2811 }
2812
2813 char *
2814 gdb_realpath (const char *filename)
2815 {
2816   /* Method 1: The system has a compile time upper bound on a filename
2817      path.  Use that and realpath() to canonicalize the name.  This is
2818      the most common case.  Note that, if there isn't a compile time
2819      upper bound, you want to avoid realpath() at all costs.  */
2820 #if defined (HAVE_REALPATH) && defined (PATH_MAX)
2821   {
2822     char buf[PATH_MAX];
2823     const char *rp = realpath (filename, buf);
2824
2825     if (rp == NULL)
2826       rp = filename;
2827     return xstrdup (rp);
2828   }
2829 #endif /* HAVE_REALPATH */
2830
2831   /* Method 2: The host system (i.e., GNU) has the function
2832      canonicalize_file_name() which malloc's a chunk of memory and
2833      returns that, use that.  */
2834 #if defined(HAVE_CANONICALIZE_FILE_NAME)
2835   {
2836     char *rp = canonicalize_file_name (filename);
2837
2838     if (rp == NULL)
2839       return xstrdup (filename);
2840     else
2841       return rp;
2842   }
2843 #endif
2844
2845   /* FIXME: cagney/2002-11-13:
2846
2847      Method 2a: Use realpath() with a NULL buffer.  Some systems, due
2848      to the problems described in method 3, have modified their
2849      realpath() implementation so that it will allocate a buffer when
2850      NULL is passed in.  Before this can be used, though, some sort of
2851      configure time test would need to be added.  Otherwize the code
2852      will likely core dump.  */
2853
2854   /* Method 3: Now we're getting desperate!  The system doesn't have a
2855      compile time buffer size and no alternative function.  Query the
2856      OS, using pathconf(), for the buffer limit.  Care is needed
2857      though, some systems do not limit PATH_MAX (return -1 for
2858      pathconf()) making it impossible to pass a correctly sized buffer
2859      to realpath() (it could always overflow).  On those systems, we
2860      skip this.  */
2861 #if defined (HAVE_REALPATH) && defined (_PC_PATH_MAX) && defined(HAVE_ALLOCA)
2862   {
2863     /* Find out the max path size.  */
2864     long path_max = pathconf ("/", _PC_PATH_MAX);
2865
2866     if (path_max > 0)
2867       {
2868         /* PATH_MAX is bounded.  */
2869         char *buf = alloca (path_max);
2870         char *rp = realpath (filename, buf);
2871
2872         return xstrdup (rp ? rp : filename);
2873       }
2874   }
2875 #endif
2876
2877   /* The MS Windows method.  If we don't have realpath, we assume we
2878      don't have symlinks and just canonicalize to a Windows absolute
2879      path.  GetFullPath converts ../ and ./ in relative paths to
2880      absolute paths, filling in current drive if one is not given
2881      or using the current directory of a specified drive (eg, "E:foo").
2882      It also converts all forward slashes to back slashes.  */
2883   /* The file system is case-insensitive but case-preserving.
2884      So we do not lowercase the path.  Otherwise, we might not
2885      be able to display the original casing in a given path.  */
2886 #if defined (_WIN32)
2887   {
2888     char buf[MAX_PATH];
2889     DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL);
2890
2891     if (len > 0 && len < MAX_PATH)
2892       return xstrdup (buf);
2893   }
2894 #endif
2895
2896   /* This system is a lost cause, just dup the buffer.  */
2897   return xstrdup (filename);
2898 }
2899
2900 /* Return a copy of FILENAME, with its directory prefix canonicalized
2901    by gdb_realpath.  */
2902
2903 char *
2904 gdb_realpath_keepfile (const char *filename)
2905 {
2906   const char *base_name = lbasename (filename);
2907   char *dir_name;
2908   char *real_path;
2909   char *result;
2910
2911   /* Extract the basename of filename, and return immediately 
2912      a copy of filename if it does not contain any directory prefix.  */
2913   if (base_name == filename)
2914     return xstrdup (filename);
2915
2916   dir_name = alloca ((size_t) (base_name - filename + 2));
2917   /* Allocate enough space to store the dir_name + plus one extra
2918      character sometimes needed under Windows (see below), and
2919      then the closing \000 character.  */
2920   strncpy (dir_name, filename, base_name - filename);
2921   dir_name[base_name - filename] = '\000';
2922
2923 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
2924   /* We need to be careful when filename is of the form 'd:foo', which
2925      is equivalent of d:./foo, which is totally different from d:/foo.  */
2926   if (strlen (dir_name) == 2 && isalpha (dir_name[0]) && dir_name[1] == ':')
2927     {
2928       dir_name[2] = '.';
2929       dir_name[3] = '\000';
2930     }
2931 #endif
2932
2933   /* Canonicalize the directory prefix, and build the resulting
2934      filename.  If the dirname realpath already contains an ending
2935      directory separator, avoid doubling it.  */
2936   real_path = gdb_realpath (dir_name);
2937   if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1]))
2938     result = concat (real_path, base_name, (char *) NULL);
2939   else
2940     result = concat (real_path, SLASH_STRING, base_name, (char *) NULL);
2941
2942   xfree (real_path);
2943   return result;
2944 }
2945
2946 /* Return PATH in absolute form, performing tilde-expansion if necessary.
2947    PATH cannot be NULL or the empty string.
2948    This does not resolve symlinks however, use gdb_realpath for that.
2949    Space for the result is allocated with malloc.
2950    If the path is already absolute, it is strdup'd.
2951    If there is a problem computing the absolute path, the path is returned
2952    unchanged (still strdup'd).  */
2953
2954 char *
2955 gdb_abspath (const char *path)
2956 {
2957   gdb_assert (path != NULL && path[0] != '\0');
2958
2959   if (path[0] == '~')
2960     return tilde_expand (path);
2961
2962   if (IS_ABSOLUTE_PATH (path))
2963     return xstrdup (path);
2964
2965   /* Beware the // my son, the Emacs barfs, the botch that catch...  */
2966   return concat (current_directory,
2967             IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
2968                  ? "" : SLASH_STRING,
2969                  path, (char *) NULL);
2970 }
2971
2972 ULONGEST
2973 align_up (ULONGEST v, int n)
2974 {
2975   /* Check that N is really a power of two.  */
2976   gdb_assert (n && (n & (n-1)) == 0);
2977   return (v + n - 1) & -n;
2978 }
2979
2980 ULONGEST
2981 align_down (ULONGEST v, int n)
2982 {
2983   /* Check that N is really a power of two.  */
2984   gdb_assert (n && (n & (n-1)) == 0);
2985   return (v & -n);
2986 }
2987
2988 /* See utils.h.  */
2989
2990 LONGEST
2991 gdb_sign_extend (LONGEST value, int bit)
2992 {
2993   gdb_assert (bit >= 1 && bit <= 8 * sizeof (LONGEST));
2994
2995   if (((value >> (bit - 1)) & 1) != 0)
2996     {
2997       LONGEST signbit = ((LONGEST) 1) << (bit - 1);
2998
2999       value = (value ^ signbit) - signbit;
3000     }
3001
3002   return value;
3003 }
3004
3005 /* Allocation function for the libiberty hash table which uses an
3006    obstack.  The obstack is passed as DATA.  */
3007
3008 void *
3009 hashtab_obstack_allocate (void *data, size_t size, size_t count)
3010 {
3011   unsigned int total = size * count;
3012   void *ptr = obstack_alloc ((struct obstack *) data, total);
3013
3014   memset (ptr, 0, total);
3015   return ptr;
3016 }
3017
3018 /* Trivial deallocation function for the libiberty splay tree and hash
3019    table - don't deallocate anything.  Rely on later deletion of the
3020    obstack.  DATA will be the obstack, although it is not needed
3021    here.  */
3022
3023 void
3024 dummy_obstack_deallocate (void *object, void *data)
3025 {
3026   return;
3027 }
3028
3029 /* The bit offset of the highest byte in a ULONGEST, for overflow
3030    checking.  */
3031
3032 #define HIGH_BYTE_POSN ((sizeof (ULONGEST) - 1) * HOST_CHAR_BIT)
3033
3034 /* True (non-zero) iff DIGIT is a valid digit in radix BASE,
3035    where 2 <= BASE <= 36.  */
3036
3037 static int
3038 is_digit_in_base (unsigned char digit, int base)
3039 {
3040   if (!isalnum (digit))
3041     return 0;
3042   if (base <= 10)
3043     return (isdigit (digit) && digit < base + '0');
3044   else
3045     return (isdigit (digit) || tolower (digit) < base - 10 + 'a');
3046 }
3047
3048 static int
3049 digit_to_int (unsigned char c)
3050 {
3051   if (isdigit (c))
3052     return c - '0';
3053   else
3054     return tolower (c) - 'a' + 10;
3055 }
3056
3057 /* As for strtoul, but for ULONGEST results.  */
3058
3059 ULONGEST
3060 strtoulst (const char *num, const char **trailer, int base)
3061 {
3062   unsigned int high_part;
3063   ULONGEST result;
3064   int minus = 0;
3065   int i = 0;
3066
3067   /* Skip leading whitespace.  */
3068   while (isspace (num[i]))
3069     i++;
3070
3071   /* Handle prefixes.  */
3072   if (num[i] == '+')
3073     i++;
3074   else if (num[i] == '-')
3075     {
3076       minus = 1;
3077       i++;
3078     }
3079
3080   if (base == 0 || base == 16)
3081     {
3082       if (num[i] == '0' && (num[i + 1] == 'x' || num[i + 1] == 'X'))
3083         {
3084           i += 2;
3085           if (base == 0)
3086             base = 16;
3087         }
3088     }
3089
3090   if (base == 0 && num[i] == '0')
3091     base = 8;
3092
3093   if (base == 0)
3094     base = 10;
3095
3096   if (base < 2 || base > 36)
3097     {
3098       errno = EINVAL;
3099       return 0;
3100     }
3101
3102   result = high_part = 0;
3103   for (; is_digit_in_base (num[i], base); i += 1)
3104     {
3105       result = result * base + digit_to_int (num[i]);
3106       high_part = high_part * base + (unsigned int) (result >> HIGH_BYTE_POSN);
3107       result &= ((ULONGEST) 1 << HIGH_BYTE_POSN) - 1;
3108       if (high_part > 0xff)
3109         {
3110           errno = ERANGE;
3111           result = ~ (ULONGEST) 0;
3112           high_part = 0;
3113           minus = 0;
3114           break;
3115         }
3116     }
3117
3118   if (trailer != NULL)
3119     *trailer = &num[i];
3120
3121   result = result + ((ULONGEST) high_part << HIGH_BYTE_POSN);
3122   if (minus)
3123     return -result;
3124   else
3125     return result;
3126 }
3127
3128 /* Simple, portable version of dirname that does not modify its
3129    argument.  */
3130
3131 char *
3132 ldirname (const char *filename)
3133 {
3134   const char *base = lbasename (filename);
3135   char *dirname;
3136
3137   while (base > filename && IS_DIR_SEPARATOR (base[-1]))
3138     --base;
3139
3140   if (base == filename)
3141     return NULL;
3142
3143   dirname = xmalloc (base - filename + 2);
3144   memcpy (dirname, filename, base - filename);
3145
3146   /* On DOS based file systems, convert "d:foo" to "d:.", so that we
3147      create "d:./bar" later instead of the (different) "d:/bar".  */
3148   if (base - filename == 2 && IS_ABSOLUTE_PATH (base)
3149       && !IS_DIR_SEPARATOR (filename[0]))
3150     dirname[base++ - filename] = '.';
3151
3152   dirname[base - filename] = '\0';
3153   return dirname;
3154 }
3155
3156 /* Call libiberty's buildargv, and return the result.
3157    If buildargv fails due to out-of-memory, call nomem.
3158    Therefore, the returned value is guaranteed to be non-NULL,
3159    unless the parameter itself is NULL.  */
3160
3161 char **
3162 gdb_buildargv (const char *s)
3163 {
3164   char **argv = buildargv (s);
3165
3166   if (s != NULL && argv == NULL)
3167     malloc_failure (0);
3168   return argv;
3169 }
3170
3171 int
3172 compare_positive_ints (const void *ap, const void *bp)
3173 {
3174   /* Because we know we're comparing two ints which are positive,
3175      there's no danger of overflow here.  */
3176   return * (int *) ap - * (int *) bp;
3177 }
3178
3179 /* String compare function for qsort.  */
3180
3181 int
3182 compare_strings (const void *arg1, const void *arg2)
3183 {
3184   const char **s1 = (const char **) arg1;
3185   const char **s2 = (const char **) arg2;
3186
3187   return strcmp (*s1, *s2);
3188 }
3189
3190 #define AMBIGUOUS_MESS1 ".\nMatching formats:"
3191 #define AMBIGUOUS_MESS2 \
3192   ".\nUse \"set gnutarget format-name\" to specify the format."
3193
3194 const char *
3195 gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
3196 {
3197   char *ret, *retp;
3198   int ret_len;
3199   char **p;
3200
3201   /* Check if errmsg just need simple return.  */
3202   if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL)
3203     return bfd_errmsg (error_tag);
3204
3205   ret_len = strlen (bfd_errmsg (error_tag)) + strlen (AMBIGUOUS_MESS1)
3206             + strlen (AMBIGUOUS_MESS2);
3207   for (p = matching; *p; p++)
3208     ret_len += strlen (*p) + 1;
3209   ret = xmalloc (ret_len + 1);
3210   retp = ret;
3211   make_cleanup (xfree, ret);
3212
3213   strcpy (retp, bfd_errmsg (error_tag));
3214   retp += strlen (retp);
3215
3216   strcpy (retp, AMBIGUOUS_MESS1);
3217   retp += strlen (retp);
3218
3219   for (p = matching; *p; p++)
3220     {
3221       sprintf (retp, " %s", *p);
3222       retp += strlen (retp);
3223     }
3224   xfree (matching);
3225
3226   strcpy (retp, AMBIGUOUS_MESS2);
3227
3228   return ret;
3229 }
3230
3231 /* Return ARGS parsed as a valid pid, or throw an error.  */
3232
3233 int
3234 parse_pid_to_attach (char *args)
3235 {
3236   unsigned long pid;
3237   char *dummy;
3238
3239   if (!args)
3240     error_no_arg (_("process-id to attach"));
3241
3242   dummy = args;
3243   pid = strtoul (args, &dummy, 0);
3244   /* Some targets don't set errno on errors, grrr!  */
3245   if ((pid == 0 && dummy == args) || dummy != &args[strlen (args)])
3246     error (_("Illegal process-id: %s."), args);
3247
3248   return pid;
3249 }
3250
3251 /* Helper for make_bpstat_clear_actions_cleanup.  */
3252
3253 static void
3254 do_bpstat_clear_actions_cleanup (void *unused)
3255 {
3256   bpstat_clear_actions ();
3257 }
3258
3259 /* Call bpstat_clear_actions for the case an exception is throw.  You should
3260    discard_cleanups if no exception is caught.  */
3261
3262 struct cleanup *
3263 make_bpstat_clear_actions_cleanup (void)
3264 {
3265   return make_cleanup (do_bpstat_clear_actions_cleanup, NULL);
3266 }
3267
3268 /* Check for GCC >= 4.x according to the symtab->producer string.  Return minor
3269    version (x) of 4.x in such case.  If it is not GCC or it is GCC older than
3270    4.x return -1.  If it is GCC 5.x or higher return INT_MAX.  */
3271
3272 int
3273 producer_is_gcc_ge_4 (const char *producer)
3274 {
3275   const char *cs;
3276   int major, minor;
3277
3278   if (producer == NULL)
3279     {
3280       /* For unknown compilers expect their behavior is not compliant.  For GCC
3281          this case can also happen for -gdwarf-4 type units supported since
3282          gcc-4.5.  */
3283
3284       return -1;
3285     }
3286
3287   /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
3288
3289   if (strncmp (producer, "GNU ", strlen ("GNU ")) != 0)
3290     {
3291       /* For non-GCC compilers expect their behavior is not compliant.  */
3292
3293       return -1;
3294     }
3295   cs = &producer[strlen ("GNU ")];
3296   while (*cs && !isdigit (*cs))
3297     cs++;
3298   if (sscanf (cs, "%d.%d", &major, &minor) != 2)
3299     {
3300       /* Not recognized as GCC.  */
3301
3302       return -1;
3303     }
3304
3305   if (major < 4)
3306     return -1;
3307   if (major > 4)
3308     return INT_MAX;
3309   return minor;
3310 }
3311
3312 /* Helper for make_cleanup_free_char_ptr_vec.  */
3313
3314 static void
3315 do_free_char_ptr_vec (void *arg)
3316 {
3317   VEC (char_ptr) *char_ptr_vec = arg;
3318
3319   free_char_ptr_vec (char_ptr_vec);
3320 }
3321
3322 /* Make cleanup handler calling xfree for each element of CHAR_PTR_VEC and
3323    final VEC_free for CHAR_PTR_VEC itself.
3324
3325    You must not modify CHAR_PTR_VEC after this cleanup registration as the
3326    CHAR_PTR_VEC base address may change on its updates.  Contrary to VEC_free
3327    this function does not (cannot) clear the pointer.  */
3328
3329 struct cleanup *
3330 make_cleanup_free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec)
3331 {
3332   return make_cleanup (do_free_char_ptr_vec, char_ptr_vec);
3333 }
3334
3335 /* Substitute all occurences of string FROM by string TO in *STRINGP.  *STRINGP
3336    must come from xrealloc-compatible allocator and it may be updated.  FROM
3337    needs to be delimited by IS_DIR_SEPARATOR or DIRNAME_SEPARATOR (or be
3338    located at the start or end of *STRINGP.  */
3339
3340 void
3341 substitute_path_component (char **stringp, const char *from, const char *to)
3342 {
3343   char *string = *stringp, *s;
3344   const size_t from_len = strlen (from);
3345   const size_t to_len = strlen (to);
3346
3347   for (s = string;;)
3348     {
3349       s = strstr (s, from);
3350       if (s == NULL)
3351         break;
3352
3353       if ((s == string || IS_DIR_SEPARATOR (s[-1])
3354            || s[-1] == DIRNAME_SEPARATOR)
3355           && (s[from_len] == '\0' || IS_DIR_SEPARATOR (s[from_len])
3356               || s[from_len] == DIRNAME_SEPARATOR))
3357         {
3358           char *string_new;
3359
3360           string_new = xrealloc (string, (strlen (string) + to_len + 1));
3361
3362           /* Relocate the current S pointer.  */
3363           s = s - string + string_new;
3364           string = string_new;
3365
3366           /* Replace from by to.  */
3367           memmove (&s[to_len], &s[from_len], strlen (&s[from_len]) + 1);
3368           memcpy (s, to, to_len);
3369
3370           s += to_len;
3371         }
3372       else
3373         s++;
3374     }
3375
3376   *stringp = string;
3377 }
3378
3379 #ifdef HAVE_WAITPID
3380
3381 #ifdef SIGALRM
3382
3383 /* SIGALRM handler for waitpid_with_timeout.  */
3384
3385 static void
3386 sigalrm_handler (int signo)
3387 {
3388   /* Nothing to do.  */
3389 }
3390
3391 #endif
3392
3393 /* Wrapper to wait for child PID to die with TIMEOUT.
3394    TIMEOUT is the time to stop waiting in seconds.
3395    If TIMEOUT is zero, pass WNOHANG to waitpid.
3396    Returns PID if it was successfully waited for, otherwise -1.
3397
3398    Timeouts are currently implemented with alarm and SIGALRM.
3399    If the host does not support them, this waits "forever".
3400    It would be odd though for a host to have waitpid and not SIGALRM.  */
3401
3402 pid_t
3403 wait_to_die_with_timeout (pid_t pid, int *status, int timeout)
3404 {
3405   pid_t waitpid_result;
3406
3407   gdb_assert (pid > 0);
3408   gdb_assert (timeout >= 0);
3409
3410   if (timeout > 0)
3411     {
3412 #ifdef SIGALRM
3413 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
3414       struct sigaction sa, old_sa;
3415
3416       sa.sa_handler = sigalrm_handler;
3417       sigemptyset (&sa.sa_mask);
3418       sa.sa_flags = 0;
3419       sigaction (SIGALRM, &sa, &old_sa);
3420 #else
3421       void (*ofunc) ();
3422
3423       ofunc = (void (*)()) signal (SIGALRM, sigalrm_handler);
3424 #endif
3425
3426       alarm (timeout);
3427 #endif
3428
3429       waitpid_result = waitpid (pid, status, 0);
3430
3431 #ifdef SIGALRM
3432       alarm (0);
3433 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
3434       sigaction (SIGALRM, &old_sa, NULL);
3435 #else
3436       signal (SIGALRM, ofunc);
3437 #endif
3438 #endif
3439     }
3440   else
3441     waitpid_result = waitpid (pid, status, WNOHANG);
3442
3443   if (waitpid_result == pid)
3444     return pid;
3445   else
3446     return -1;
3447 }
3448
3449 #endif /* HAVE_WAITPID */
3450
3451 /* Provide fnmatch compatible function for FNM_FILE_NAME matching of host files.
3452    Both FNM_FILE_NAME and FNM_NOESCAPE must be set in FLAGS.
3453
3454    It handles correctly HAVE_DOS_BASED_FILE_SYSTEM and
3455    HAVE_CASE_INSENSITIVE_FILE_SYSTEM.  */
3456
3457 int
3458 gdb_filename_fnmatch (const char *pattern, const char *string, int flags)
3459 {
3460   gdb_assert ((flags & FNM_FILE_NAME) != 0);
3461
3462   /* It is unclear how '\' escaping vs. directory separator should coexist.  */
3463   gdb_assert ((flags & FNM_NOESCAPE) != 0);
3464
3465 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
3466   {
3467     char *pattern_slash, *string_slash;
3468
3469     /* Replace '\' by '/' in both strings.  */
3470
3471     pattern_slash = alloca (strlen (pattern) + 1);
3472     strcpy (pattern_slash, pattern);
3473     pattern = pattern_slash;
3474     for (; *pattern_slash != 0; pattern_slash++)
3475       if (IS_DIR_SEPARATOR (*pattern_slash))
3476         *pattern_slash = '/';
3477
3478     string_slash = alloca (strlen (string) + 1);
3479     strcpy (string_slash, string);
3480     string = string_slash;
3481     for (; *string_slash != 0; string_slash++)
3482       if (IS_DIR_SEPARATOR (*string_slash))
3483         *string_slash = '/';
3484   }
3485 #endif /* HAVE_DOS_BASED_FILE_SYSTEM */
3486
3487 #ifdef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
3488   flags |= FNM_CASEFOLD;
3489 #endif /* HAVE_CASE_INSENSITIVE_FILE_SYSTEM */
3490
3491   return fnmatch (pattern, string, flags);
3492 }
3493
3494 /* Provide a prototype to silence -Wmissing-prototypes.  */
3495 extern initialize_file_ftype _initialize_utils;
3496
3497 void
3498 _initialize_utils (void)
3499 {
3500   add_internal_problem_command (&internal_error_problem);
3501   add_internal_problem_command (&internal_warning_problem);
3502 }