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