e44e76cabb2bf56570ede5c523f9b38c22fe4540
[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 (check_quit_flag () || sync_quit_force_run)
1090     quit ();
1091   if (deprecated_interactive_hook)
1092     deprecated_interactive_hook ();
1093   target_check_pending_interrupt ();
1094 }
1095
1096 \f
1097 /* Called when a memory allocation fails, with the number of bytes of
1098    memory requested in SIZE.  */
1099
1100 void
1101 malloc_failure (long size)
1102 {
1103   if (size > 0)
1104     {
1105       internal_error (__FILE__, __LINE__,
1106                       _("virtual memory exhausted: can't allocate %ld bytes."),
1107                       size);
1108     }
1109   else
1110     {
1111       internal_error (__FILE__, __LINE__, _("virtual memory exhausted."));
1112     }
1113 }
1114
1115 /* My replacement for the read system call.
1116    Used like `read' but keeps going if `read' returns too soon.  */
1117
1118 int
1119 myread (int desc, char *addr, int len)
1120 {
1121   int val;
1122   int orglen = len;
1123
1124   while (len > 0)
1125     {
1126       val = read (desc, addr, len);
1127       if (val < 0)
1128         return val;
1129       if (val == 0)
1130         return orglen - len;
1131       len -= val;
1132       addr += val;
1133     }
1134   return orglen;
1135 }
1136
1137 void
1138 print_spaces (int n, struct ui_file *file)
1139 {
1140   fputs_unfiltered (n_spaces (n), file);
1141 }
1142
1143 /* Print a host address.  */
1144
1145 void
1146 gdb_print_host_address_1 (const void *addr, struct ui_file *stream)
1147 {
1148   fprintf_filtered (stream, "%s", host_address_to_string (addr));
1149 }
1150
1151 /* See utils.h.  */
1152
1153 char *
1154 make_hex_string (const gdb_byte *data, size_t length)
1155 {
1156   char *result = (char *) xmalloc (length * 2 + 1);
1157   char *p;
1158   size_t i;
1159
1160   p = result;
1161   for (i = 0; i < length; ++i)
1162     p += xsnprintf (p, 3, "%02x", data[i]);
1163   *p = '\0';
1164   return result;
1165 }
1166
1167 \f
1168
1169 /* A cleanup function that calls regfree.  */
1170
1171 static void
1172 do_regfree_cleanup (void *r)
1173 {
1174   regfree ((regex_t *) r);
1175 }
1176
1177 /* Create a new cleanup that frees the compiled regular expression R.  */
1178
1179 struct cleanup *
1180 make_regfree_cleanup (regex_t *r)
1181 {
1182   return make_cleanup (do_regfree_cleanup, r);
1183 }
1184
1185 /* Return an xmalloc'd error message resulting from a regular
1186    expression compilation failure.  */
1187
1188 char *
1189 get_regcomp_error (int code, regex_t *rx)
1190 {
1191   size_t length = regerror (code, rx, NULL, 0);
1192   char *result = (char *) xmalloc (length);
1193
1194   regerror (code, rx, result, length);
1195   return result;
1196 }
1197
1198 /* Compile a regexp and throw an exception on error.  This returns a
1199    cleanup to free the resulting pattern on success.  RX must not be
1200    NULL.  */
1201
1202 struct cleanup *
1203 compile_rx_or_error (regex_t *pattern, const char *rx, const char *message)
1204 {
1205   int code;
1206
1207   gdb_assert (rx != NULL);
1208
1209   code = regcomp (pattern, rx, REG_NOSUB);
1210   if (code != 0)
1211     {
1212       char *err = get_regcomp_error (code, pattern);
1213
1214       make_cleanup (xfree, err);
1215       error (("%s: %s"), message, err);
1216     }
1217
1218   return make_regfree_cleanup (pattern);
1219 }
1220
1221 \f
1222
1223 /* This function supports the query, nquery, and yquery functions.
1224    Ask user a y-or-n question and return 0 if answer is no, 1 if
1225    answer is yes, or default the answer to the specified default
1226    (for yquery or nquery).  DEFCHAR may be 'y' or 'n' to provide a
1227    default answer, or '\0' for no default.
1228    CTLSTR is the control string and should end in "? ".  It should
1229    not say how to answer, because we do that.
1230    ARGS are the arguments passed along with the CTLSTR argument to
1231    printf.  */
1232
1233 static int ATTRIBUTE_PRINTF (1, 0)
1234 defaulted_query (const char *ctlstr, const char defchar, va_list args)
1235 {
1236   int ans2;
1237   int retval;
1238   int def_value;
1239   char def_answer, not_def_answer;
1240   char *y_string, *n_string, *question, *prompt;
1241   /* Used to add duration we waited for user to respond to
1242      prompt_for_continue_wait_time.  */
1243   struct timeval prompt_started, prompt_ended, prompt_delta;
1244
1245   /* Set up according to which answer is the default.  */
1246   if (defchar == '\0')
1247     {
1248       def_value = 1;
1249       def_answer = 'Y';
1250       not_def_answer = 'N';
1251       y_string = "y";
1252       n_string = "n";
1253     }
1254   else if (defchar == 'y')
1255     {
1256       def_value = 1;
1257       def_answer = 'Y';
1258       not_def_answer = 'N';
1259       y_string = "[y]";
1260       n_string = "n";
1261     }
1262   else
1263     {
1264       def_value = 0;
1265       def_answer = 'N';
1266       not_def_answer = 'Y';
1267       y_string = "y";
1268       n_string = "[n]";
1269     }
1270
1271   /* Automatically answer the default value if the user did not want
1272      prompts or the command was issued with the server prefix.  */
1273   if (!confirm || server_command)
1274     return def_value;
1275
1276   /* If input isn't coming from the user directly, just say what
1277      question we're asking, and then answer the default automatically.  This
1278      way, important error messages don't get lost when talking to GDB
1279      over a pipe.  */
1280   if (! input_from_terminal_p ())
1281     {
1282       wrap_here ("");
1283       vfprintf_filtered (gdb_stdout, ctlstr, args);
1284
1285       printf_filtered (_("(%s or %s) [answered %c; "
1286                          "input not from terminal]\n"),
1287                        y_string, n_string, def_answer);
1288       gdb_flush (gdb_stdout);
1289
1290       return def_value;
1291     }
1292
1293   if (deprecated_query_hook)
1294     {
1295       return deprecated_query_hook (ctlstr, args);
1296     }
1297
1298   /* Format the question outside of the loop, to avoid reusing args.  */
1299   question = xstrvprintf (ctlstr, args);
1300   prompt = xstrprintf (_("%s%s(%s or %s) %s"),
1301                       annotation_level > 1 ? "\n\032\032pre-query\n" : "",
1302                       question, y_string, n_string,
1303                       annotation_level > 1 ? "\n\032\032query\n" : "");
1304   xfree (question);
1305
1306   /* Used for calculating time spend waiting for user.  */
1307   gettimeofday (&prompt_started, NULL);
1308
1309   while (1)
1310     {
1311       char *response, answer;
1312
1313       gdb_flush (gdb_stdout);
1314       response = gdb_readline_wrapper (prompt);
1315
1316       if (response == NULL)     /* C-d  */
1317         {
1318           printf_filtered ("EOF [assumed %c]\n", def_answer);
1319           retval = def_value;
1320           break;
1321         }
1322
1323       answer = response[0];
1324       xfree (response);
1325
1326       if (answer >= 'a')
1327         answer -= 040;
1328       /* Check answer.  For the non-default, the user must specify
1329          the non-default explicitly.  */
1330       if (answer == not_def_answer)
1331         {
1332           retval = !def_value;
1333           break;
1334         }
1335       /* Otherwise, if a default was specified, the user may either
1336          specify the required input or have it default by entering
1337          nothing.  */
1338       if (answer == def_answer
1339           || (defchar != '\0' && answer == '\0'))
1340         {
1341           retval = def_value;
1342           break;
1343         }
1344       /* Invalid entries are not defaulted and require another selection.  */
1345       printf_filtered (_("Please answer %s or %s.\n"),
1346                        y_string, n_string);
1347     }
1348
1349   /* Add time spend in this routine to prompt_for_continue_wait_time.  */
1350   gettimeofday (&prompt_ended, NULL);
1351   timeval_sub (&prompt_delta, &prompt_ended, &prompt_started);
1352   timeval_add (&prompt_for_continue_wait_time,
1353                &prompt_for_continue_wait_time, &prompt_delta);
1354
1355   xfree (prompt);
1356   if (annotation_level > 1)
1357     printf_filtered (("\n\032\032post-query\n"));
1358   return retval;
1359 }
1360 \f
1361
1362 /* Ask user a y-or-n question and return 0 if answer is no, 1 if
1363    answer is yes, or 0 if answer is defaulted.
1364    Takes three args which are given to printf to print the question.
1365    The first, a control string, should end in "? ".
1366    It should not say how to answer, because we do that.  */
1367
1368 int
1369 nquery (const char *ctlstr, ...)
1370 {
1371   va_list args;
1372   int ret;
1373
1374   va_start (args, ctlstr);
1375   ret = defaulted_query (ctlstr, 'n', args);
1376   va_end (args);
1377   return ret;
1378 }
1379
1380 /* Ask user a y-or-n question and return 0 if answer is no, 1 if
1381    answer is yes, or 1 if answer is defaulted.
1382    Takes three args which are given to printf to print the question.
1383    The first, a control string, should end in "? ".
1384    It should not say how to answer, because we do that.  */
1385
1386 int
1387 yquery (const char *ctlstr, ...)
1388 {
1389   va_list args;
1390   int ret;
1391
1392   va_start (args, ctlstr);
1393   ret = defaulted_query (ctlstr, 'y', args);
1394   va_end (args);
1395   return ret;
1396 }
1397
1398 /* Ask user a y-or-n question and return 1 iff answer is yes.
1399    Takes three args which are given to printf to print the question.
1400    The first, a control string, should end in "? ".
1401    It should not say how to answer, because we do that.  */
1402
1403 int
1404 query (const char *ctlstr, ...)
1405 {
1406   va_list args;
1407   int ret;
1408
1409   va_start (args, ctlstr);
1410   ret = defaulted_query (ctlstr, '\0', args);
1411   va_end (args);
1412   return ret;
1413 }
1414
1415 /* A helper for parse_escape that converts a host character to a
1416    target character.  C is the host character.  If conversion is
1417    possible, then the target character is stored in *TARGET_C and the
1418    function returns 1.  Otherwise, the function returns 0.  */
1419
1420 static int
1421 host_char_to_target (struct gdbarch *gdbarch, int c, int *target_c)
1422 {
1423   struct obstack host_data;
1424   char the_char = c;
1425   struct cleanup *cleanups;
1426   int result = 0;
1427
1428   obstack_init (&host_data);
1429   cleanups = make_cleanup_obstack_free (&host_data);
1430
1431   convert_between_encodings (target_charset (gdbarch), host_charset (),
1432                              (gdb_byte *) &the_char, 1, 1,
1433                              &host_data, translit_none);
1434
1435   if (obstack_object_size (&host_data) == 1)
1436     {
1437       result = 1;
1438       *target_c = *(char *) obstack_base (&host_data);
1439     }
1440
1441   do_cleanups (cleanups);
1442   return result;
1443 }
1444
1445 /* Parse a C escape sequence.  STRING_PTR points to a variable
1446    containing a pointer to the string to parse.  That pointer
1447    should point to the character after the \.  That pointer
1448    is updated past the characters we use.  The value of the
1449    escape sequence is returned.
1450
1451    A negative value means the sequence \ newline was seen,
1452    which is supposed to be equivalent to nothing at all.
1453
1454    If \ is followed by a null character, we return a negative
1455    value and leave the string pointer pointing at the null character.
1456
1457    If \ is followed by 000, we return 0 and leave the string pointer
1458    after the zeros.  A value of 0 does not mean end of string.  */
1459
1460 int
1461 parse_escape (struct gdbarch *gdbarch, const char **string_ptr)
1462 {
1463   int target_char = -2; /* Initialize to avoid GCC warnings.  */
1464   int c = *(*string_ptr)++;
1465
1466   switch (c)
1467     {
1468       case '\n':
1469         return -2;
1470       case 0:
1471         (*string_ptr)--;
1472         return 0;
1473
1474       case '0':
1475       case '1':
1476       case '2':
1477       case '3':
1478       case '4':
1479       case '5':
1480       case '6':
1481       case '7':
1482         {
1483           int i = host_hex_value (c);
1484           int count = 0;
1485           while (++count < 3)
1486             {
1487               c = (**string_ptr);
1488               if (isdigit (c) && c != '8' && c != '9')
1489                 {
1490                   (*string_ptr)++;
1491                   i *= 8;
1492                   i += host_hex_value (c);
1493                 }
1494               else
1495                 {
1496                   break;
1497                 }
1498             }
1499           return i;
1500         }
1501
1502     case 'a':
1503       c = '\a';
1504       break;
1505     case 'b':
1506       c = '\b';
1507       break;
1508     case 'f':
1509       c = '\f';
1510       break;
1511     case 'n':
1512       c = '\n';
1513       break;
1514     case 'r':
1515       c = '\r';
1516       break;
1517     case 't':
1518       c = '\t';
1519       break;
1520     case 'v':
1521       c = '\v';
1522       break;
1523
1524     default:
1525       break;
1526     }
1527
1528   if (!host_char_to_target (gdbarch, c, &target_char))
1529     error (_("The escape sequence `\\%c' is equivalent to plain `%c',"
1530              " which has no equivalent\nin the `%s' character set."),
1531            c, c, target_charset (gdbarch));
1532   return target_char;
1533 }
1534 \f
1535 /* Print the character C on STREAM as part of the contents of a literal
1536    string whose delimiter is QUOTER.  Note that this routine should only
1537    be called for printing things which are independent of the language
1538    of the program being debugged.
1539
1540    printchar will normally escape backslashes and instances of QUOTER. If
1541    QUOTER is 0, printchar won't escape backslashes or any quoting character.
1542    As a side effect, if you pass the backslash character as the QUOTER,
1543    printchar will escape backslashes as usual, but not any other quoting
1544    character. */
1545
1546 static void
1547 printchar (int c, void (*do_fputs) (const char *, struct ui_file *),
1548            void (*do_fprintf) (struct ui_file *, const char *, ...)
1549            ATTRIBUTE_FPTR_PRINTF_2, struct ui_file *stream, int quoter)
1550 {
1551   c &= 0xFF;                    /* Avoid sign bit follies */
1552
1553   if (c < 0x20 ||               /* Low control chars */
1554       (c >= 0x7F && c < 0xA0) ||        /* DEL, High controls */
1555       (sevenbit_strings && c >= 0x80))
1556     {                           /* high order bit set */
1557       switch (c)
1558         {
1559         case '\n':
1560           do_fputs ("\\n", stream);
1561           break;
1562         case '\b':
1563           do_fputs ("\\b", stream);
1564           break;
1565         case '\t':
1566           do_fputs ("\\t", stream);
1567           break;
1568         case '\f':
1569           do_fputs ("\\f", stream);
1570           break;
1571         case '\r':
1572           do_fputs ("\\r", stream);
1573           break;
1574         case '\033':
1575           do_fputs ("\\e", stream);
1576           break;
1577         case '\007':
1578           do_fputs ("\\a", stream);
1579           break;
1580         default:
1581           do_fprintf (stream, "\\%.3o", (unsigned int) c);
1582           break;
1583         }
1584     }
1585   else
1586     {
1587       if (quoter != 0 && (c == '\\' || c == quoter))
1588         do_fputs ("\\", stream);
1589       do_fprintf (stream, "%c", c);
1590     }
1591 }
1592
1593 /* Print the character C on STREAM as part of the contents of a
1594    literal string whose delimiter is QUOTER.  Note that these routines
1595    should only be call for printing things which are independent of
1596    the language of the program being debugged.  */
1597
1598 void
1599 fputstr_filtered (const char *str, int quoter, struct ui_file *stream)
1600 {
1601   while (*str)
1602     printchar (*str++, fputs_filtered, fprintf_filtered, stream, quoter);
1603 }
1604
1605 void
1606 fputstr_unfiltered (const char *str, int quoter, struct ui_file *stream)
1607 {
1608   while (*str)
1609     printchar (*str++, fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1610 }
1611
1612 void
1613 fputstrn_filtered (const char *str, int n, int quoter,
1614                    struct ui_file *stream)
1615 {
1616   int i;
1617
1618   for (i = 0; i < n; i++)
1619     printchar (str[i], fputs_filtered, fprintf_filtered, stream, quoter);
1620 }
1621
1622 void
1623 fputstrn_unfiltered (const char *str, int n, int quoter,
1624                      struct ui_file *stream)
1625 {
1626   int i;
1627
1628   for (i = 0; i < n; i++)
1629     printchar (str[i], fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1630 }
1631 \f
1632
1633 /* Number of lines per page or UINT_MAX if paging is disabled.  */
1634 static unsigned int lines_per_page;
1635 static void
1636 show_lines_per_page (struct ui_file *file, int from_tty,
1637                      struct cmd_list_element *c, const char *value)
1638 {
1639   fprintf_filtered (file,
1640                     _("Number of lines gdb thinks are in a page is %s.\n"),
1641                     value);
1642 }
1643
1644 /* Number of chars per line or UINT_MAX if line folding is disabled.  */
1645 static unsigned int chars_per_line;
1646 static void
1647 show_chars_per_line (struct ui_file *file, int from_tty,
1648                      struct cmd_list_element *c, const char *value)
1649 {
1650   fprintf_filtered (file,
1651                     _("Number of characters gdb thinks "
1652                       "are in a line is %s.\n"),
1653                     value);
1654 }
1655
1656 /* Current count of lines printed on this page, chars on this line.  */
1657 static unsigned int lines_printed, chars_printed;
1658
1659 /* Buffer and start column of buffered text, for doing smarter word-
1660    wrapping.  When someone calls wrap_here(), we start buffering output
1661    that comes through fputs_filtered().  If we see a newline, we just
1662    spit it out and forget about the wrap_here().  If we see another
1663    wrap_here(), we spit it out and remember the newer one.  If we see
1664    the end of the line, we spit out a newline, the indent, and then
1665    the buffered output.  */
1666
1667 /* Malloc'd buffer with chars_per_line+2 bytes.  Contains characters which
1668    are waiting to be output (they have already been counted in chars_printed).
1669    When wrap_buffer[0] is null, the buffer is empty.  */
1670 static char *wrap_buffer;
1671
1672 /* Pointer in wrap_buffer to the next character to fill.  */
1673 static char *wrap_pointer;
1674
1675 /* String to indent by if the wrap occurs.  Must not be NULL if wrap_column
1676    is non-zero.  */
1677 static char *wrap_indent;
1678
1679 /* Column number on the screen where wrap_buffer begins, or 0 if wrapping
1680    is not in effect.  */
1681 static int wrap_column;
1682 \f
1683
1684 /* Inialize the number of lines per page and chars per line.  */
1685
1686 void
1687 init_page_info (void)
1688 {
1689   if (batch_flag)
1690     {
1691       lines_per_page = UINT_MAX;
1692       chars_per_line = UINT_MAX;
1693     }
1694   else
1695 #if defined(TUI)
1696   if (!tui_get_command_dimension (&chars_per_line, &lines_per_page))
1697 #endif
1698     {
1699       int rows, cols;
1700
1701 #if defined(__GO32__)
1702       rows = ScreenRows ();
1703       cols = ScreenCols ();
1704       lines_per_page = rows;
1705       chars_per_line = cols;
1706 #else
1707       /* Make sure Readline has initialized its terminal settings.  */
1708       rl_reset_terminal (NULL);
1709
1710       /* Get the screen size from Readline.  */
1711       rl_get_screen_size (&rows, &cols);
1712       lines_per_page = rows;
1713       chars_per_line = cols;
1714
1715       /* Readline should have fetched the termcap entry for us.
1716          Only try to use tgetnum function if rl_get_screen_size
1717          did not return a useful value. */
1718       if (((rows <= 0) && (tgetnum ("li") < 0))
1719         /* Also disable paging if inside Emacs.  $EMACS was used
1720            before Emacs v25.1, $INSIDE_EMACS is used since then.  */
1721           || getenv ("EMACS") || getenv ("INSIDE_EMACS"))
1722         {
1723           /* The number of lines per page is not mentioned in the terminal
1724              description or EMACS evironment variable is set.  This probably
1725              means that paging is not useful, so disable paging.  */
1726           lines_per_page = UINT_MAX;
1727         }
1728
1729       /* If the output is not a terminal, don't paginate it.  */
1730       if (!ui_file_isatty (gdb_stdout))
1731         lines_per_page = UINT_MAX;
1732 #endif
1733     }
1734
1735   /* We handle SIGWINCH ourselves.  */
1736   rl_catch_sigwinch = 0;
1737
1738   set_screen_size ();
1739   set_width ();
1740 }
1741
1742 /* Return nonzero if filtered printing is initialized.  */
1743 int
1744 filtered_printing_initialized (void)
1745 {
1746   return wrap_buffer != NULL;
1747 }
1748
1749 /* Helper for make_cleanup_restore_page_info.  */
1750
1751 static void
1752 do_restore_page_info_cleanup (void *arg)
1753 {
1754   set_screen_size ();
1755   set_width ();
1756 }
1757
1758 /* Provide cleanup for restoring the terminal size.  */
1759
1760 struct cleanup *
1761 make_cleanup_restore_page_info (void)
1762 {
1763   struct cleanup *back_to;
1764
1765   back_to = make_cleanup (do_restore_page_info_cleanup, NULL);
1766   make_cleanup_restore_uinteger (&lines_per_page);
1767   make_cleanup_restore_uinteger (&chars_per_line);
1768
1769   return back_to;
1770 }
1771
1772 /* Temporarily set BATCH_FLAG and the associated unlimited terminal size.
1773    Provide cleanup for restoring the original state.  */
1774
1775 struct cleanup *
1776 set_batch_flag_and_make_cleanup_restore_page_info (void)
1777 {
1778   struct cleanup *back_to = make_cleanup_restore_page_info ();
1779   
1780   make_cleanup_restore_integer (&batch_flag);
1781   batch_flag = 1;
1782   init_page_info ();
1783
1784   return back_to;
1785 }
1786
1787 /* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE.  */
1788
1789 static void
1790 set_screen_size (void)
1791 {
1792   int rows = lines_per_page;
1793   int cols = chars_per_line;
1794
1795   if (rows <= 0)
1796     rows = INT_MAX;
1797
1798   if (cols <= 0)
1799     cols = INT_MAX;
1800
1801   /* Update Readline's idea of the terminal size.  */
1802   rl_set_screen_size (rows, cols);
1803 }
1804
1805 /* Reinitialize WRAP_BUFFER according to the current value of
1806    CHARS_PER_LINE.  */
1807
1808 static void
1809 set_width (void)
1810 {
1811   if (chars_per_line == 0)
1812     init_page_info ();
1813
1814   if (!wrap_buffer)
1815     {
1816       wrap_buffer = (char *) xmalloc (chars_per_line + 2);
1817       wrap_buffer[0] = '\0';
1818     }
1819   else
1820     wrap_buffer = (char *) xrealloc (wrap_buffer, chars_per_line + 2);
1821   wrap_pointer = wrap_buffer;   /* Start it at the beginning.  */
1822 }
1823
1824 static void
1825 set_width_command (char *args, int from_tty, struct cmd_list_element *c)
1826 {
1827   set_screen_size ();
1828   set_width ();
1829 }
1830
1831 static void
1832 set_height_command (char *args, int from_tty, struct cmd_list_element *c)
1833 {
1834   set_screen_size ();
1835 }
1836
1837 /* See utils.h.  */
1838
1839 void
1840 set_screen_width_and_height (int width, int height)
1841 {
1842   lines_per_page = height;
1843   chars_per_line = width;
1844
1845   set_screen_size ();
1846   set_width ();
1847 }
1848
1849 /* Wait, so the user can read what's on the screen.  Prompt the user
1850    to continue by pressing RETURN.  'q' is also provided because
1851    telling users what to do in the prompt is more user-friendly than
1852    expecting them to think of Ctrl-C/SIGINT.  */
1853
1854 static void
1855 prompt_for_continue (void)
1856 {
1857   char *ignore;
1858   char cont_prompt[120];
1859   /* Used to add duration we waited for user to respond to
1860      prompt_for_continue_wait_time.  */
1861   struct timeval prompt_started, prompt_ended, prompt_delta;
1862
1863   gettimeofday (&prompt_started, NULL);
1864
1865   if (annotation_level > 1)
1866     printf_unfiltered (("\n\032\032pre-prompt-for-continue\n"));
1867
1868   strcpy (cont_prompt,
1869           "---Type <return> to continue, or q <return> to quit---");
1870   if (annotation_level > 1)
1871     strcat (cont_prompt, "\n\032\032prompt-for-continue\n");
1872
1873   /* We must do this *before* we call gdb_readline_wrapper, else it
1874      will eventually call us -- thinking that we're trying to print
1875      beyond the end of the screen.  */
1876   reinitialize_more_filter ();
1877
1878   /* We'll need to handle input.  */
1879   target_terminal_ours ();
1880
1881   /* Call gdb_readline_wrapper, not readline, in order to keep an
1882      event loop running.  */
1883   ignore = gdb_readline_wrapper (cont_prompt);
1884
1885   /* Add time spend in this routine to prompt_for_continue_wait_time.  */
1886   gettimeofday (&prompt_ended, NULL);
1887   timeval_sub (&prompt_delta, &prompt_ended, &prompt_started);
1888   timeval_add (&prompt_for_continue_wait_time,
1889                &prompt_for_continue_wait_time, &prompt_delta);
1890
1891   if (annotation_level > 1)
1892     printf_unfiltered (("\n\032\032post-prompt-for-continue\n"));
1893
1894   if (ignore)
1895     {
1896       char *p = ignore;
1897
1898       while (*p == ' ' || *p == '\t')
1899         ++p;
1900       if (p[0] == 'q')
1901         /* Do not call quit here; there is no possibility of SIGINT.  */
1902         throw_quit ("Quit");
1903       xfree (ignore);
1904     }
1905
1906   /* Now we have to do this again, so that GDB will know that it doesn't
1907      need to save the ---Type <return>--- line at the top of the screen.  */
1908   reinitialize_more_filter ();
1909
1910   dont_repeat ();               /* Forget prev cmd -- CR won't repeat it.  */
1911 }
1912
1913 /* Initalize timer to keep track of how long we waited for the user.  */
1914
1915 void
1916 reset_prompt_for_continue_wait_time (void)
1917 {
1918   static const struct timeval zero_timeval = { 0 };
1919
1920   prompt_for_continue_wait_time = zero_timeval;
1921 }
1922
1923 /* Fetch the cumulative time spent in prompt_for_continue.  */
1924
1925 struct timeval
1926 get_prompt_for_continue_wait_time (void)
1927 {
1928   return prompt_for_continue_wait_time;
1929 }
1930
1931 /* Reinitialize filter; ie. tell it to reset to original values.  */
1932
1933 void
1934 reinitialize_more_filter (void)
1935 {
1936   lines_printed = 0;
1937   chars_printed = 0;
1938 }
1939
1940 /* Indicate that if the next sequence of characters overflows the line,
1941    a newline should be inserted here rather than when it hits the end.
1942    If INDENT is non-null, it is a string to be printed to indent the
1943    wrapped part on the next line.  INDENT must remain accessible until
1944    the next call to wrap_here() or until a newline is printed through
1945    fputs_filtered().
1946
1947    If the line is already overfull, we immediately print a newline and
1948    the indentation, and disable further wrapping.
1949
1950    If we don't know the width of lines, but we know the page height,
1951    we must not wrap words, but should still keep track of newlines
1952    that were explicitly printed.
1953
1954    INDENT should not contain tabs, as that will mess up the char count
1955    on the next line.  FIXME.
1956
1957    This routine is guaranteed to force out any output which has been
1958    squirreled away in the wrap_buffer, so wrap_here ((char *)0) can be
1959    used to force out output from the wrap_buffer.  */
1960
1961 void
1962 wrap_here (char *indent)
1963 {
1964   /* This should have been allocated, but be paranoid anyway.  */
1965   if (!wrap_buffer)
1966     internal_error (__FILE__, __LINE__,
1967                     _("failed internal consistency check"));
1968
1969   if (wrap_buffer[0])
1970     {
1971       *wrap_pointer = '\0';
1972       fputs_unfiltered (wrap_buffer, gdb_stdout);
1973     }
1974   wrap_pointer = wrap_buffer;
1975   wrap_buffer[0] = '\0';
1976   if (chars_per_line == UINT_MAX)       /* No line overflow checking.  */
1977     {
1978       wrap_column = 0;
1979     }
1980   else if (chars_printed >= chars_per_line)
1981     {
1982       puts_filtered ("\n");
1983       if (indent != NULL)
1984         puts_filtered (indent);
1985       wrap_column = 0;
1986     }
1987   else
1988     {
1989       wrap_column = chars_printed;
1990       if (indent == NULL)
1991         wrap_indent = "";
1992       else
1993         wrap_indent = indent;
1994     }
1995 }
1996
1997 /* Print input string to gdb_stdout, filtered, with wrap, 
1998    arranging strings in columns of n chars.  String can be
1999    right or left justified in the column.  Never prints 
2000    trailing spaces.  String should never be longer than
2001    width.  FIXME: this could be useful for the EXAMINE 
2002    command, which currently doesn't tabulate very well.  */
2003
2004 void
2005 puts_filtered_tabular (char *string, int width, int right)
2006 {
2007   int spaces = 0;
2008   int stringlen;
2009   char *spacebuf;
2010
2011   gdb_assert (chars_per_line > 0);
2012   if (chars_per_line == UINT_MAX)
2013     {
2014       fputs_filtered (string, gdb_stdout);
2015       fputs_filtered ("\n", gdb_stdout);
2016       return;
2017     }
2018
2019   if (((chars_printed - 1) / width + 2) * width >= chars_per_line)
2020     fputs_filtered ("\n", gdb_stdout);
2021
2022   if (width >= chars_per_line)
2023     width = chars_per_line - 1;
2024
2025   stringlen = strlen (string);
2026
2027   if (chars_printed > 0)
2028     spaces = width - (chars_printed - 1) % width - 1;
2029   if (right)
2030     spaces += width - stringlen;
2031
2032   spacebuf = (char *) alloca (spaces + 1);
2033   spacebuf[spaces] = '\0';
2034   while (spaces--)
2035     spacebuf[spaces] = ' ';
2036
2037   fputs_filtered (spacebuf, gdb_stdout);
2038   fputs_filtered (string, gdb_stdout);
2039 }
2040
2041
2042 /* Ensure that whatever gets printed next, using the filtered output
2043    commands, starts at the beginning of the line.  I.e. if there is
2044    any pending output for the current line, flush it and start a new
2045    line.  Otherwise do nothing.  */
2046
2047 void
2048 begin_line (void)
2049 {
2050   if (chars_printed > 0)
2051     {
2052       puts_filtered ("\n");
2053     }
2054 }
2055
2056
2057 /* Like fputs but if FILTER is true, pause after every screenful.
2058
2059    Regardless of FILTER can wrap at points other than the final
2060    character of a line.
2061
2062    Unlike fputs, fputs_maybe_filtered does not return a value.
2063    It is OK for LINEBUFFER to be NULL, in which case just don't print
2064    anything.
2065
2066    Note that a longjmp to top level may occur in this routine (only if
2067    FILTER is true) (since prompt_for_continue may do so) so this
2068    routine should not be called when cleanups are not in place.  */
2069
2070 static void
2071 fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
2072                       int filter)
2073 {
2074   const char *lineptr;
2075
2076   if (linebuffer == 0)
2077     return;
2078
2079   /* Don't do any filtering if it is disabled.  */
2080   if (stream != gdb_stdout
2081       || !pagination_enabled
2082       || batch_flag
2083       || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX)
2084       || top_level_interpreter () == NULL
2085       || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
2086     {
2087       fputs_unfiltered (linebuffer, stream);
2088       return;
2089     }
2090
2091   /* Go through and output each character.  Show line extension
2092      when this is necessary; prompt user for new page when this is
2093      necessary.  */
2094
2095   lineptr = linebuffer;
2096   while (*lineptr)
2097     {
2098       /* Possible new page.  */
2099       if (filter && (lines_printed >= lines_per_page - 1))
2100         prompt_for_continue ();
2101
2102       while (*lineptr && *lineptr != '\n')
2103         {
2104           /* Print a single line.  */
2105           if (*lineptr == '\t')
2106             {
2107               if (wrap_column)
2108                 *wrap_pointer++ = '\t';
2109               else
2110                 fputc_unfiltered ('\t', stream);
2111               /* Shifting right by 3 produces the number of tab stops
2112                  we have already passed, and then adding one and
2113                  shifting left 3 advances to the next tab stop.  */
2114               chars_printed = ((chars_printed >> 3) + 1) << 3;
2115               lineptr++;
2116             }
2117           else
2118             {
2119               if (wrap_column)
2120                 *wrap_pointer++ = *lineptr;
2121               else
2122                 fputc_unfiltered (*lineptr, stream);
2123               chars_printed++;
2124               lineptr++;
2125             }
2126
2127           if (chars_printed >= chars_per_line)
2128             {
2129               unsigned int save_chars = chars_printed;
2130
2131               chars_printed = 0;
2132               lines_printed++;
2133               /* If we aren't actually wrapping, don't output newline --
2134                  if chars_per_line is right, we probably just overflowed
2135                  anyway; if it's wrong, let us keep going.  */
2136               if (wrap_column)
2137                 fputc_unfiltered ('\n', stream);
2138
2139               /* Possible new page.  */
2140               if (lines_printed >= lines_per_page - 1)
2141                 prompt_for_continue ();
2142
2143               /* Now output indentation and wrapped string.  */
2144               if (wrap_column)
2145                 {
2146                   fputs_unfiltered (wrap_indent, stream);
2147                   *wrap_pointer = '\0'; /* Null-terminate saved stuff, */
2148                   fputs_unfiltered (wrap_buffer, stream); /* and eject it.  */
2149                   /* FIXME, this strlen is what prevents wrap_indent from
2150                      containing tabs.  However, if we recurse to print it
2151                      and count its chars, we risk trouble if wrap_indent is
2152                      longer than (the user settable) chars_per_line.
2153                      Note also that this can set chars_printed > chars_per_line
2154                      if we are printing a long string.  */
2155                   chars_printed = strlen (wrap_indent)
2156                     + (save_chars - wrap_column);
2157                   wrap_pointer = wrap_buffer;   /* Reset buffer */
2158                   wrap_buffer[0] = '\0';
2159                   wrap_column = 0;      /* And disable fancy wrap */
2160                 }
2161             }
2162         }
2163
2164       if (*lineptr == '\n')
2165         {
2166           chars_printed = 0;
2167           wrap_here ((char *) 0);       /* Spit out chars, cancel
2168                                            further wraps.  */
2169           lines_printed++;
2170           fputc_unfiltered ('\n', stream);
2171           lineptr++;
2172         }
2173     }
2174 }
2175
2176 void
2177 fputs_filtered (const char *linebuffer, struct ui_file *stream)
2178 {
2179   fputs_maybe_filtered (linebuffer, stream, 1);
2180 }
2181
2182 int
2183 putchar_unfiltered (int c)
2184 {
2185   char buf = c;
2186
2187   ui_file_write (gdb_stdout, &buf, 1);
2188   return c;
2189 }
2190
2191 /* Write character C to gdb_stdout using GDB's paging mechanism and return C.
2192    May return nonlocally.  */
2193
2194 int
2195 putchar_filtered (int c)
2196 {
2197   return fputc_filtered (c, gdb_stdout);
2198 }
2199
2200 int
2201 fputc_unfiltered (int c, struct ui_file *stream)
2202 {
2203   char buf = c;
2204
2205   ui_file_write (stream, &buf, 1);
2206   return c;
2207 }
2208
2209 int
2210 fputc_filtered (int c, struct ui_file *stream)
2211 {
2212   char buf[2];
2213
2214   buf[0] = c;
2215   buf[1] = 0;
2216   fputs_filtered (buf, stream);
2217   return c;
2218 }
2219
2220 /* puts_debug is like fputs_unfiltered, except it prints special
2221    characters in printable fashion.  */
2222
2223 void
2224 puts_debug (char *prefix, char *string, char *suffix)
2225 {
2226   int ch;
2227
2228   /* Print prefix and suffix after each line.  */
2229   static int new_line = 1;
2230   static int return_p = 0;
2231   static char *prev_prefix = "";
2232   static char *prev_suffix = "";
2233
2234   if (*string == '\n')
2235     return_p = 0;
2236
2237   /* If the prefix is changing, print the previous suffix, a new line,
2238      and the new prefix.  */
2239   if ((return_p || (strcmp (prev_prefix, prefix) != 0)) && !new_line)
2240     {
2241       fputs_unfiltered (prev_suffix, gdb_stdlog);
2242       fputs_unfiltered ("\n", gdb_stdlog);
2243       fputs_unfiltered (prefix, gdb_stdlog);
2244     }
2245
2246   /* Print prefix if we printed a newline during the previous call.  */
2247   if (new_line)
2248     {
2249       new_line = 0;
2250       fputs_unfiltered (prefix, gdb_stdlog);
2251     }
2252
2253   prev_prefix = prefix;
2254   prev_suffix = suffix;
2255
2256   /* Output characters in a printable format.  */
2257   while ((ch = *string++) != '\0')
2258     {
2259       switch (ch)
2260         {
2261         default:
2262           if (isprint (ch))
2263             fputc_unfiltered (ch, gdb_stdlog);
2264
2265           else
2266             fprintf_unfiltered (gdb_stdlog, "\\x%02x", ch & 0xff);
2267           break;
2268
2269         case '\\':
2270           fputs_unfiltered ("\\\\", gdb_stdlog);
2271           break;
2272         case '\b':
2273           fputs_unfiltered ("\\b", gdb_stdlog);
2274           break;
2275         case '\f':
2276           fputs_unfiltered ("\\f", gdb_stdlog);
2277           break;
2278         case '\n':
2279           new_line = 1;
2280           fputs_unfiltered ("\\n", gdb_stdlog);
2281           break;
2282         case '\r':
2283           fputs_unfiltered ("\\r", gdb_stdlog);
2284           break;
2285         case '\t':
2286           fputs_unfiltered ("\\t", gdb_stdlog);
2287           break;
2288         case '\v':
2289           fputs_unfiltered ("\\v", gdb_stdlog);
2290           break;
2291         }
2292
2293       return_p = ch == '\r';
2294     }
2295
2296   /* Print suffix if we printed a newline.  */
2297   if (new_line)
2298     {
2299       fputs_unfiltered (suffix, gdb_stdlog);
2300       fputs_unfiltered ("\n", gdb_stdlog);
2301     }
2302 }
2303
2304
2305 /* Print a variable number of ARGS using format FORMAT.  If this
2306    information is going to put the amount written (since the last call
2307    to REINITIALIZE_MORE_FILTER or the last page break) over the page size,
2308    call prompt_for_continue to get the users permision to continue.
2309
2310    Unlike fprintf, this function does not return a value.
2311
2312    We implement three variants, vfprintf (takes a vararg list and stream),
2313    fprintf (takes a stream to write on), and printf (the usual).
2314
2315    Note also that a longjmp to top level may occur in this routine
2316    (since prompt_for_continue may do so) so this routine should not be
2317    called when cleanups are not in place.  */
2318
2319 static void
2320 vfprintf_maybe_filtered (struct ui_file *stream, const char *format,
2321                          va_list args, int filter)
2322 {
2323   char *linebuffer;
2324   struct cleanup *old_cleanups;
2325
2326   linebuffer = xstrvprintf (format, args);
2327   old_cleanups = make_cleanup (xfree, linebuffer);
2328   fputs_maybe_filtered (linebuffer, stream, filter);
2329   do_cleanups (old_cleanups);
2330 }
2331
2332
2333 void
2334 vfprintf_filtered (struct ui_file *stream, const char *format, va_list args)
2335 {
2336   vfprintf_maybe_filtered (stream, format, args, 1);
2337 }
2338
2339 void
2340 vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args)
2341 {
2342   char *linebuffer;
2343   struct cleanup *old_cleanups;
2344
2345   linebuffer = xstrvprintf (format, args);
2346   old_cleanups = make_cleanup (xfree, linebuffer);
2347   if (debug_timestamp && stream == gdb_stdlog)
2348     {
2349       struct timeval tm;
2350       char *timestamp;
2351       int len, need_nl;
2352
2353       gettimeofday (&tm, NULL);
2354
2355       len = strlen (linebuffer);
2356       need_nl = (len > 0 && linebuffer[len - 1] != '\n');
2357
2358       timestamp = xstrprintf ("%ld:%ld %s%s",
2359                               (long) tm.tv_sec, (long) tm.tv_usec,
2360                               linebuffer,
2361                               need_nl ? "\n": "");
2362       make_cleanup (xfree, timestamp);
2363       fputs_unfiltered (timestamp, stream);
2364     }
2365   else
2366     fputs_unfiltered (linebuffer, stream);
2367   do_cleanups (old_cleanups);
2368 }
2369
2370 void
2371 vprintf_filtered (const char *format, va_list args)
2372 {
2373   vfprintf_maybe_filtered (gdb_stdout, format, args, 1);
2374 }
2375
2376 void
2377 vprintf_unfiltered (const char *format, va_list args)
2378 {
2379   vfprintf_unfiltered (gdb_stdout, format, args);
2380 }
2381
2382 void
2383 fprintf_filtered (struct ui_file *stream, const char *format, ...)
2384 {
2385   va_list args;
2386
2387   va_start (args, format);
2388   vfprintf_filtered (stream, format, args);
2389   va_end (args);
2390 }
2391
2392 void
2393 fprintf_unfiltered (struct ui_file *stream, const char *format, ...)
2394 {
2395   va_list args;
2396
2397   va_start (args, format);
2398   vfprintf_unfiltered (stream, format, args);
2399   va_end (args);
2400 }
2401
2402 /* Like fprintf_filtered, but prints its result indented.
2403    Called as fprintfi_filtered (spaces, stream, format, ...);  */
2404
2405 void
2406 fprintfi_filtered (int spaces, struct ui_file *stream, const char *format,
2407                    ...)
2408 {
2409   va_list args;
2410
2411   va_start (args, format);
2412   print_spaces_filtered (spaces, stream);
2413
2414   vfprintf_filtered (stream, format, args);
2415   va_end (args);
2416 }
2417
2418
2419 void
2420 printf_filtered (const char *format, ...)
2421 {
2422   va_list args;
2423
2424   va_start (args, format);
2425   vfprintf_filtered (gdb_stdout, format, args);
2426   va_end (args);
2427 }
2428
2429
2430 void
2431 printf_unfiltered (const char *format, ...)
2432 {
2433   va_list args;
2434
2435   va_start (args, format);
2436   vfprintf_unfiltered (gdb_stdout, format, args);
2437   va_end (args);
2438 }
2439
2440 /* Like printf_filtered, but prints it's result indented.
2441    Called as printfi_filtered (spaces, format, ...);  */
2442
2443 void
2444 printfi_filtered (int spaces, const char *format, ...)
2445 {
2446   va_list args;
2447
2448   va_start (args, format);
2449   print_spaces_filtered (spaces, gdb_stdout);
2450   vfprintf_filtered (gdb_stdout, format, args);
2451   va_end (args);
2452 }
2453
2454 /* Easy -- but watch out!
2455
2456    This routine is *not* a replacement for puts()!  puts() appends a newline.
2457    This one doesn't, and had better not!  */
2458
2459 void
2460 puts_filtered (const char *string)
2461 {
2462   fputs_filtered (string, gdb_stdout);
2463 }
2464
2465 void
2466 puts_unfiltered (const char *string)
2467 {
2468   fputs_unfiltered (string, gdb_stdout);
2469 }
2470
2471 /* Return a pointer to N spaces and a null.  The pointer is good
2472    until the next call to here.  */
2473 char *
2474 n_spaces (int n)
2475 {
2476   char *t;
2477   static char *spaces = 0;
2478   static int max_spaces = -1;
2479
2480   if (n > max_spaces)
2481     {
2482       if (spaces)
2483         xfree (spaces);
2484       spaces = (char *) xmalloc (n + 1);
2485       for (t = spaces + n; t != spaces;)
2486         *--t = ' ';
2487       spaces[n] = '\0';
2488       max_spaces = n;
2489     }
2490
2491   return spaces + max_spaces - n;
2492 }
2493
2494 /* Print N spaces.  */
2495 void
2496 print_spaces_filtered (int n, struct ui_file *stream)
2497 {
2498   fputs_filtered (n_spaces (n), stream);
2499 }
2500 \f
2501 /* C++/ObjC demangler stuff.  */
2502
2503 /* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
2504    LANG, using demangling args ARG_MODE, and print it filtered to STREAM.
2505    If the name is not mangled, or the language for the name is unknown, or
2506    demangling is off, the name is printed in its "raw" form.  */
2507
2508 void
2509 fprintf_symbol_filtered (struct ui_file *stream, const char *name,
2510                          enum language lang, int arg_mode)
2511 {
2512   char *demangled;
2513
2514   if (name != NULL)
2515     {
2516       /* If user wants to see raw output, no problem.  */
2517       if (!demangle)
2518         {
2519           fputs_filtered (name, stream);
2520         }
2521       else
2522         {
2523           demangled = language_demangle (language_def (lang), name, arg_mode);
2524           fputs_filtered (demangled ? demangled : name, stream);
2525           if (demangled != NULL)
2526             {
2527               xfree (demangled);
2528             }
2529         }
2530     }
2531 }
2532
2533 /* Do a strcmp() type operation on STRING1 and STRING2, ignoring any
2534    differences in whitespace.  Returns 0 if they match, non-zero if they
2535    don't (slightly different than strcmp()'s range of return values).
2536
2537    As an extra hack, string1=="FOO(ARGS)" matches string2=="FOO".
2538    This "feature" is useful when searching for matching C++ function names
2539    (such as if the user types 'break FOO', where FOO is a mangled C++
2540    function).  */
2541
2542 int
2543 strcmp_iw (const char *string1, const char *string2)
2544 {
2545   while ((*string1 != '\0') && (*string2 != '\0'))
2546     {
2547       while (isspace (*string1))
2548         {
2549           string1++;
2550         }
2551       while (isspace (*string2))
2552         {
2553           string2++;
2554         }
2555       if (case_sensitivity == case_sensitive_on && *string1 != *string2)
2556         break;
2557       if (case_sensitivity == case_sensitive_off
2558           && (tolower ((unsigned char) *string1)
2559               != tolower ((unsigned char) *string2)))
2560         break;
2561       if (*string1 != '\0')
2562         {
2563           string1++;
2564           string2++;
2565         }
2566     }
2567   return (*string1 != '\0' && *string1 != '(') || (*string2 != '\0');
2568 }
2569
2570 /* This is like strcmp except that it ignores whitespace and treats
2571    '(' as the first non-NULL character in terms of ordering.  Like
2572    strcmp (and unlike strcmp_iw), it returns negative if STRING1 <
2573    STRING2, 0 if STRING2 = STRING2, and positive if STRING1 > STRING2
2574    according to that ordering.
2575
2576    If a list is sorted according to this function and if you want to
2577    find names in the list that match some fixed NAME according to
2578    strcmp_iw(LIST_ELT, NAME), then the place to start looking is right
2579    where this function would put NAME.
2580
2581    This function must be neutral to the CASE_SENSITIVITY setting as the user
2582    may choose it during later lookup.  Therefore this function always sorts
2583    primarily case-insensitively and secondarily case-sensitively.
2584
2585    Here are some examples of why using strcmp to sort is a bad idea:
2586
2587    Whitespace example:
2588
2589    Say your partial symtab contains: "foo<char *>", "goo".  Then, if
2590    we try to do a search for "foo<char*>", strcmp will locate this
2591    after "foo<char *>" and before "goo".  Then lookup_partial_symbol
2592    will start looking at strings beginning with "goo", and will never
2593    see the correct match of "foo<char *>".
2594
2595    Parenthesis example:
2596
2597    In practice, this is less like to be an issue, but I'll give it a
2598    shot.  Let's assume that '$' is a legitimate character to occur in
2599    symbols.  (Which may well even be the case on some systems.)  Then
2600    say that the partial symbol table contains "foo$" and "foo(int)".
2601    strcmp will put them in this order, since '$' < '('.  Now, if the
2602    user searches for "foo", then strcmp will sort "foo" before "foo$".
2603    Then lookup_partial_symbol will notice that strcmp_iw("foo$",
2604    "foo") is false, so it won't proceed to the actual match of
2605    "foo(int)" with "foo".  */
2606
2607 int
2608 strcmp_iw_ordered (const char *string1, const char *string2)
2609 {
2610   const char *saved_string1 = string1, *saved_string2 = string2;
2611   enum case_sensitivity case_pass = case_sensitive_off;
2612
2613   for (;;)
2614     {
2615       /* C1 and C2 are valid only if *string1 != '\0' && *string2 != '\0'.
2616          Provide stub characters if we are already at the end of one of the
2617          strings.  */
2618       char c1 = 'X', c2 = 'X';
2619
2620       while (*string1 != '\0' && *string2 != '\0')
2621         {
2622           while (isspace (*string1))
2623             string1++;
2624           while (isspace (*string2))
2625             string2++;
2626
2627           switch (case_pass)
2628           {
2629             case case_sensitive_off:
2630               c1 = tolower ((unsigned char) *string1);
2631               c2 = tolower ((unsigned char) *string2);
2632               break;
2633             case case_sensitive_on:
2634               c1 = *string1;
2635               c2 = *string2;
2636               break;
2637           }
2638           if (c1 != c2)
2639             break;
2640
2641           if (*string1 != '\0')
2642             {
2643               string1++;
2644               string2++;
2645             }
2646         }
2647
2648       switch (*string1)
2649         {
2650           /* Characters are non-equal unless they're both '\0'; we want to
2651              make sure we get the comparison right according to our
2652              comparison in the cases where one of them is '\0' or '('.  */
2653         case '\0':
2654           if (*string2 == '\0')
2655             break;
2656           else
2657             return -1;
2658         case '(':
2659           if (*string2 == '\0')
2660             return 1;
2661           else
2662             return -1;
2663         default:
2664           if (*string2 == '\0' || *string2 == '(')
2665             return 1;
2666           else if (c1 > c2)
2667             return 1;
2668           else if (c1 < c2)
2669             return -1;
2670           /* PASSTHRU */
2671         }
2672
2673       if (case_pass == case_sensitive_on)
2674         return 0;
2675       
2676       /* Otherwise the strings were equal in case insensitive way, make
2677          a more fine grained comparison in a case sensitive way.  */
2678
2679       case_pass = case_sensitive_on;
2680       string1 = saved_string1;
2681       string2 = saved_string2;
2682     }
2683 }
2684
2685 /* A simple comparison function with opposite semantics to strcmp.  */
2686
2687 int
2688 streq (const char *lhs, const char *rhs)
2689 {
2690   return !strcmp (lhs, rhs);
2691 }
2692 \f
2693
2694 /*
2695    ** subset_compare()
2696    **    Answer whether string_to_compare is a full or partial match to
2697    **    template_string.  The partial match must be in sequence starting
2698    **    at index 0.
2699  */
2700 int
2701 subset_compare (char *string_to_compare, char *template_string)
2702 {
2703   int match;
2704
2705   if (template_string != (char *) NULL && string_to_compare != (char *) NULL
2706       && strlen (string_to_compare) <= strlen (template_string))
2707     match =
2708       (startswith (template_string, string_to_compare));
2709   else
2710     match = 0;
2711   return match;
2712 }
2713
2714 static void
2715 show_debug_timestamp (struct ui_file *file, int from_tty,
2716                       struct cmd_list_element *c, const char *value)
2717 {
2718   fprintf_filtered (file, _("Timestamping debugging messages is %s.\n"),
2719                     value);
2720 }
2721 \f
2722
2723 void
2724 initialize_utils (void)
2725 {
2726   add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\
2727 Set number of characters where GDB should wrap lines of its output."), _("\
2728 Show number of characters where GDB should wrap lines of its output."), _("\
2729 This affects where GDB wraps its output to fit the screen width.\n\
2730 Setting this to \"unlimited\" or zero prevents GDB from wrapping its output."),
2731                             set_width_command,
2732                             show_chars_per_line,
2733                             &setlist, &showlist);
2734
2735   add_setshow_uinteger_cmd ("height", class_support, &lines_per_page, _("\
2736 Set number of lines in a page for GDB output pagination."), _("\
2737 Show number of lines in a page for GDB output pagination."), _("\
2738 This affects the number of lines after which GDB will pause\n\
2739 its output and ask you whether to continue.\n\
2740 Setting this to \"unlimited\" or zero causes GDB never pause during output."),
2741                             set_height_command,
2742                             show_lines_per_page,
2743                             &setlist, &showlist);
2744
2745   add_setshow_boolean_cmd ("pagination", class_support,
2746                            &pagination_enabled, _("\
2747 Set state of GDB output pagination."), _("\
2748 Show state of GDB output pagination."), _("\
2749 When pagination is ON, GDB pauses at end of each screenful of\n\
2750 its output and asks you whether to continue.\n\
2751 Turning pagination off is an alternative to \"set height unlimited\"."),
2752                            NULL,
2753                            show_pagination_enabled,
2754                            &setlist, &showlist);
2755
2756   add_setshow_boolean_cmd ("sevenbit-strings", class_support,
2757                            &sevenbit_strings, _("\
2758 Set printing of 8-bit characters in strings as \\nnn."), _("\
2759 Show printing of 8-bit characters in strings as \\nnn."), NULL,
2760                            NULL,
2761                            show_sevenbit_strings,
2762                            &setprintlist, &showprintlist);
2763
2764   add_setshow_boolean_cmd ("timestamp", class_maintenance,
2765                             &debug_timestamp, _("\
2766 Set timestamping of debugging messages."), _("\
2767 Show timestamping of debugging messages."), _("\
2768 When set, debugging messages will be marked with seconds and microseconds."),
2769                            NULL,
2770                            show_debug_timestamp,
2771                            &setdebuglist, &showdebuglist);
2772 }
2773
2774 const char *
2775 paddress (struct gdbarch *gdbarch, CORE_ADDR addr)
2776 {
2777   /* Truncate address to the size of a target address, avoiding shifts
2778      larger or equal than the width of a CORE_ADDR.  The local
2779      variable ADDR_BIT stops the compiler reporting a shift overflow
2780      when it won't occur.  */
2781   /* NOTE: This assumes that the significant address information is
2782      kept in the least significant bits of ADDR - the upper bits were
2783      either zero or sign extended.  Should gdbarch_address_to_pointer or
2784      some ADDRESS_TO_PRINTABLE() be used to do the conversion?  */
2785
2786   int addr_bit = gdbarch_addr_bit (gdbarch);
2787
2788   if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2789     addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
2790   return hex_string (addr);
2791 }
2792
2793 /* This function is described in "defs.h".  */
2794
2795 const char *
2796 print_core_address (struct gdbarch *gdbarch, CORE_ADDR address)
2797 {
2798   int addr_bit = gdbarch_addr_bit (gdbarch);
2799
2800   if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2801     address &= ((CORE_ADDR) 1 << addr_bit) - 1;
2802
2803   /* FIXME: cagney/2002-05-03: Need local_address_string() function
2804      that returns the language localized string formatted to a width
2805      based on gdbarch_addr_bit.  */
2806   if (addr_bit <= 32)
2807     return hex_string_custom (address, 8);
2808   else
2809     return hex_string_custom (address, 16);
2810 }
2811
2812 /* Callback hash_f for htab_create_alloc or htab_create_alloc_ex.  */
2813
2814 hashval_t
2815 core_addr_hash (const void *ap)
2816 {
2817   const CORE_ADDR *addrp = (const CORE_ADDR *) ap;
2818
2819   return *addrp;
2820 }
2821
2822 /* Callback eq_f for htab_create_alloc or htab_create_alloc_ex.  */
2823
2824 int
2825 core_addr_eq (const void *ap, const void *bp)
2826 {
2827   const CORE_ADDR *addr_ap = (const CORE_ADDR *) ap;
2828   const CORE_ADDR *addr_bp = (const CORE_ADDR *) bp;
2829
2830   return *addr_ap == *addr_bp;
2831 }
2832
2833 /* Convert a string back into a CORE_ADDR.  */
2834 CORE_ADDR
2835 string_to_core_addr (const char *my_string)
2836 {
2837   CORE_ADDR addr = 0;
2838
2839   if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
2840     {
2841       /* Assume that it is in hex.  */
2842       int i;
2843
2844       for (i = 2; my_string[i] != '\0'; i++)
2845         {
2846           if (isdigit (my_string[i]))
2847             addr = (my_string[i] - '0') + (addr * 16);
2848           else if (isxdigit (my_string[i]))
2849             addr = (tolower (my_string[i]) - 'a' + 0xa) + (addr * 16);
2850           else
2851             error (_("invalid hex \"%s\""), my_string);
2852         }
2853     }
2854   else
2855     {
2856       /* Assume that it is in decimal.  */
2857       int i;
2858
2859       for (i = 0; my_string[i] != '\0'; i++)
2860         {
2861           if (isdigit (my_string[i]))
2862             addr = (my_string[i] - '0') + (addr * 10);
2863           else
2864             error (_("invalid decimal \"%s\""), my_string);
2865         }
2866     }
2867
2868   return addr;
2869 }
2870
2871 char *
2872 gdb_realpath (const char *filename)
2873 {
2874 /* On most hosts, we rely on canonicalize_file_name to compute
2875    the FILENAME's realpath.
2876
2877    But the situation is slightly more complex on Windows, due to some
2878    versions of GCC which were reported to generate paths where
2879    backlashes (the directory separator) were doubled.  For instance:
2880       c:\\some\\double\\slashes\\dir
2881    ... instead of ...
2882       c:\some\double\slashes\dir
2883    Those double-slashes were getting in the way when comparing paths,
2884    for instance when trying to insert a breakpoint as follow:
2885       (gdb) b c:/some/double/slashes/dir/foo.c:4
2886       No source file named c:/some/double/slashes/dir/foo.c:4.
2887       (gdb) b c:\some\double\slashes\dir\foo.c:4
2888       No source file named c:\some\double\slashes\dir\foo.c:4.
2889    To prevent this from happening, we need this function to always
2890    strip those extra backslashes.  While canonicalize_file_name does
2891    perform this simplification, it only works when the path is valid.
2892    Since the simplification would be useful even if the path is not
2893    valid (one can always set a breakpoint on a file, even if the file
2894    does not exist locally), we rely instead on GetFullPathName to
2895    perform the canonicalization.  */
2896
2897 #if defined (_WIN32)
2898   {
2899     char buf[MAX_PATH];
2900     DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL);
2901
2902     /* The file system is case-insensitive but case-preserving.
2903        So it is important we do not lowercase the path.  Otherwise,
2904        we might not be able to display the original casing in a given
2905        path.  */
2906     if (len > 0 && len < MAX_PATH)
2907       return xstrdup (buf);
2908   }
2909 #else
2910   {
2911     char *rp = canonicalize_file_name (filename);
2912
2913     if (rp != NULL)
2914       return rp;
2915   }
2916 #endif
2917
2918   /* This system is a lost cause, just dup the buffer.  */
2919   return xstrdup (filename);
2920 }
2921
2922 /* Return a copy of FILENAME, with its directory prefix canonicalized
2923    by gdb_realpath.  */
2924
2925 char *
2926 gdb_realpath_keepfile (const char *filename)
2927 {
2928   const char *base_name = lbasename (filename);
2929   char *dir_name;
2930   char *real_path;
2931   char *result;
2932
2933   /* Extract the basename of filename, and return immediately 
2934      a copy of filename if it does not contain any directory prefix.  */
2935   if (base_name == filename)
2936     return xstrdup (filename);
2937
2938   dir_name = (char *) alloca ((size_t) (base_name - filename + 2));
2939   /* Allocate enough space to store the dir_name + plus one extra
2940      character sometimes needed under Windows (see below), and
2941      then the closing \000 character.  */
2942   strncpy (dir_name, filename, base_name - filename);
2943   dir_name[base_name - filename] = '\000';
2944
2945 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
2946   /* We need to be careful when filename is of the form 'd:foo', which
2947      is equivalent of d:./foo, which is totally different from d:/foo.  */
2948   if (strlen (dir_name) == 2 && isalpha (dir_name[0]) && dir_name[1] == ':')
2949     {
2950       dir_name[2] = '.';
2951       dir_name[3] = '\000';
2952     }
2953 #endif
2954
2955   /* Canonicalize the directory prefix, and build the resulting
2956      filename.  If the dirname realpath already contains an ending
2957      directory separator, avoid doubling it.  */
2958   real_path = gdb_realpath (dir_name);
2959   if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1]))
2960     result = concat (real_path, base_name, (char *) NULL);
2961   else
2962     result = concat (real_path, SLASH_STRING, base_name, (char *) NULL);
2963
2964   xfree (real_path);
2965   return result;
2966 }
2967
2968 /* Return PATH in absolute form, performing tilde-expansion if necessary.
2969    PATH cannot be NULL or the empty string.
2970    This does not resolve symlinks however, use gdb_realpath for that.
2971    Space for the result is allocated with malloc.
2972    If the path is already absolute, it is strdup'd.
2973    If there is a problem computing the absolute path, the path is returned
2974    unchanged (still strdup'd).  */
2975
2976 char *
2977 gdb_abspath (const char *path)
2978 {
2979   gdb_assert (path != NULL && path[0] != '\0');
2980
2981   if (path[0] == '~')
2982     return tilde_expand (path);
2983
2984   if (IS_ABSOLUTE_PATH (path))
2985     return xstrdup (path);
2986
2987   /* Beware the // my son, the Emacs barfs, the botch that catch...  */
2988   return concat (current_directory,
2989             IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
2990                  ? "" : SLASH_STRING,
2991                  path, (char *) NULL);
2992 }
2993
2994 ULONGEST
2995 align_up (ULONGEST v, int n)
2996 {
2997   /* Check that N is really a power of two.  */
2998   gdb_assert (n && (n & (n-1)) == 0);
2999   return (v + n - 1) & -n;
3000 }
3001
3002 ULONGEST
3003 align_down (ULONGEST v, int n)
3004 {
3005   /* Check that N is really a power of two.  */
3006   gdb_assert (n && (n & (n-1)) == 0);
3007   return (v & -n);
3008 }
3009
3010 /* Allocation function for the libiberty hash table which uses an
3011    obstack.  The obstack is passed as DATA.  */
3012
3013 void *
3014 hashtab_obstack_allocate (void *data, size_t size, size_t count)
3015 {
3016   size_t total = size * count;
3017   void *ptr = obstack_alloc ((struct obstack *) data, total);
3018
3019   memset (ptr, 0, total);
3020   return ptr;
3021 }
3022
3023 /* Trivial deallocation function for the libiberty splay tree and hash
3024    table - don't deallocate anything.  Rely on later deletion of the
3025    obstack.  DATA will be the obstack, although it is not needed
3026    here.  */
3027
3028 void
3029 dummy_obstack_deallocate (void *object, void *data)
3030 {
3031   return;
3032 }
3033
3034 /* Simple, portable version of dirname that does not modify its
3035    argument.  */
3036
3037 char *
3038 ldirname (const char *filename)
3039 {
3040   const char *base = lbasename (filename);
3041   char *dirname;
3042
3043   while (base > filename && IS_DIR_SEPARATOR (base[-1]))
3044     --base;
3045
3046   if (base == filename)
3047     return NULL;
3048
3049   dirname = (char *) xmalloc (base - filename + 2);
3050   memcpy (dirname, filename, base - filename);
3051
3052   /* On DOS based file systems, convert "d:foo" to "d:.", so that we
3053      create "d:./bar" later instead of the (different) "d:/bar".  */
3054   if (base - filename == 2 && IS_ABSOLUTE_PATH (base)
3055       && !IS_DIR_SEPARATOR (filename[0]))
3056     dirname[base++ - filename] = '.';
3057
3058   dirname[base - filename] = '\0';
3059   return dirname;
3060 }
3061
3062 /* Call libiberty's buildargv, and return the result.
3063    If buildargv fails due to out-of-memory, call nomem.
3064    Therefore, the returned value is guaranteed to be non-NULL,
3065    unless the parameter itself is NULL.  */
3066
3067 char **
3068 gdb_buildargv (const char *s)
3069 {
3070   char **argv = buildargv (s);
3071
3072   if (s != NULL && argv == NULL)
3073     malloc_failure (0);
3074   return argv;
3075 }
3076
3077 int
3078 compare_positive_ints (const void *ap, const void *bp)
3079 {
3080   /* Because we know we're comparing two ints which are positive,
3081      there's no danger of overflow here.  */
3082   return * (int *) ap - * (int *) bp;
3083 }
3084
3085 /* String compare function for qsort.  */
3086
3087 int
3088 compare_strings (const void *arg1, const void *arg2)
3089 {
3090   const char **s1 = (const char **) arg1;
3091   const char **s2 = (const char **) arg2;
3092
3093   return strcmp (*s1, *s2);
3094 }
3095
3096 #define AMBIGUOUS_MESS1 ".\nMatching formats:"
3097 #define AMBIGUOUS_MESS2 \
3098   ".\nUse \"set gnutarget format-name\" to specify the format."
3099
3100 const char *
3101 gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
3102 {
3103   char *ret, *retp;
3104   int ret_len;
3105   char **p;
3106
3107   /* Check if errmsg just need simple return.  */
3108   if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL)
3109     return bfd_errmsg (error_tag);
3110
3111   ret_len = strlen (bfd_errmsg (error_tag)) + strlen (AMBIGUOUS_MESS1)
3112             + strlen (AMBIGUOUS_MESS2);
3113   for (p = matching; *p; p++)
3114     ret_len += strlen (*p) + 1;
3115   ret = (char *) xmalloc (ret_len + 1);
3116   retp = ret;
3117   make_cleanup (xfree, ret);
3118
3119   strcpy (retp, bfd_errmsg (error_tag));
3120   retp += strlen (retp);
3121
3122   strcpy (retp, AMBIGUOUS_MESS1);
3123   retp += strlen (retp);
3124
3125   for (p = matching; *p; p++)
3126     {
3127       sprintf (retp, " %s", *p);
3128       retp += strlen (retp);
3129     }
3130   xfree (matching);
3131
3132   strcpy (retp, AMBIGUOUS_MESS2);
3133
3134   return ret;
3135 }
3136
3137 /* Return ARGS parsed as a valid pid, or throw an error.  */
3138
3139 int
3140 parse_pid_to_attach (const char *args)
3141 {
3142   unsigned long pid;
3143   char *dummy;
3144
3145   if (!args)
3146     error_no_arg (_("process-id to attach"));
3147
3148   dummy = (char *) args;
3149   pid = strtoul (args, &dummy, 0);
3150   /* Some targets don't set errno on errors, grrr!  */
3151   if ((pid == 0 && dummy == args) || dummy != &args[strlen (args)])
3152     error (_("Illegal process-id: %s."), args);
3153
3154   return pid;
3155 }
3156
3157 /* Helper for make_bpstat_clear_actions_cleanup.  */
3158
3159 static void
3160 do_bpstat_clear_actions_cleanup (void *unused)
3161 {
3162   bpstat_clear_actions ();
3163 }
3164
3165 /* Call bpstat_clear_actions for the case an exception is throw.  You should
3166    discard_cleanups if no exception is caught.  */
3167
3168 struct cleanup *
3169 make_bpstat_clear_actions_cleanup (void)
3170 {
3171   return make_cleanup (do_bpstat_clear_actions_cleanup, NULL);
3172 }
3173
3174 /* Check for GCC >= 4.x according to the symtab->producer string.  Return minor
3175    version (x) of 4.x in such case.  If it is not GCC or it is GCC older than
3176    4.x return -1.  If it is GCC 5.x or higher return INT_MAX.  */
3177
3178 int
3179 producer_is_gcc_ge_4 (const char *producer)
3180 {
3181   int major, minor;
3182
3183   if (! producer_is_gcc (producer, &major, &minor))
3184     return -1;
3185   if (major < 4)
3186     return -1;
3187   if (major > 4)
3188     return INT_MAX;
3189   return minor;
3190 }
3191
3192 /* Returns nonzero if the given PRODUCER string is GCC and sets the MAJOR
3193    and MINOR versions when not NULL.  Returns zero if the given PRODUCER
3194    is NULL or it isn't GCC.  */
3195
3196 int
3197 producer_is_gcc (const char *producer, int *major, int *minor)
3198 {
3199   const char *cs;
3200
3201   if (producer != NULL && startswith (producer, "GNU "))
3202     {
3203       int maj, min;
3204
3205       if (major == NULL)
3206         major = &maj;
3207       if (minor == NULL)
3208         minor = &min;
3209
3210       /* Skip any identifier after "GNU " - such as "C11" "C++" or "Java".
3211          A full producer string might look like:
3212          "GNU C 4.7.2"
3213          "GNU Fortran 4.8.2 20140120 (Red Hat 4.8.2-16) -mtune=generic ..."
3214          "GNU C++14 5.0.0 20150123 (experimental)"
3215       */
3216       cs = &producer[strlen ("GNU ")];
3217       while (*cs && !isspace (*cs))
3218         cs++;
3219       if (*cs && isspace (*cs))
3220         cs++;
3221       if (sscanf (cs, "%d.%d", major, minor) == 2)
3222         return 1;
3223     }
3224
3225   /* Not recognized as GCC.  */
3226   return 0;
3227 }
3228
3229 /* Helper for make_cleanup_free_char_ptr_vec.  */
3230
3231 static void
3232 do_free_char_ptr_vec (void *arg)
3233 {
3234   VEC (char_ptr) *char_ptr_vec = (VEC (char_ptr) *) arg;
3235
3236   free_char_ptr_vec (char_ptr_vec);
3237 }
3238
3239 /* Make cleanup handler calling xfree for each element of CHAR_PTR_VEC and
3240    final VEC_free for CHAR_PTR_VEC itself.
3241
3242    You must not modify CHAR_PTR_VEC after this cleanup registration as the
3243    CHAR_PTR_VEC base address may change on its updates.  Contrary to VEC_free
3244    this function does not (cannot) clear the pointer.  */
3245
3246 struct cleanup *
3247 make_cleanup_free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec)
3248 {
3249   return make_cleanup (do_free_char_ptr_vec, char_ptr_vec);
3250 }
3251
3252 /* Substitute all occurences of string FROM by string TO in *STRINGP.  *STRINGP
3253    must come from xrealloc-compatible allocator and it may be updated.  FROM
3254    needs to be delimited by IS_DIR_SEPARATOR or DIRNAME_SEPARATOR (or be
3255    located at the start or end of *STRINGP.  */
3256
3257 void
3258 substitute_path_component (char **stringp, const char *from, const char *to)
3259 {
3260   char *string = *stringp, *s;
3261   const size_t from_len = strlen (from);
3262   const size_t to_len = strlen (to);
3263
3264   for (s = string;;)
3265     {
3266       s = strstr (s, from);
3267       if (s == NULL)
3268         break;
3269
3270       if ((s == string || IS_DIR_SEPARATOR (s[-1])
3271            || s[-1] == DIRNAME_SEPARATOR)
3272           && (s[from_len] == '\0' || IS_DIR_SEPARATOR (s[from_len])
3273               || s[from_len] == DIRNAME_SEPARATOR))
3274         {
3275           char *string_new;
3276
3277           string_new
3278             = (char *) xrealloc (string, (strlen (string) + to_len + 1));
3279
3280           /* Relocate the current S pointer.  */
3281           s = s - string + string_new;
3282           string = string_new;
3283
3284           /* Replace from by to.  */
3285           memmove (&s[to_len], &s[from_len], strlen (&s[from_len]) + 1);
3286           memcpy (s, to, to_len);
3287
3288           s += to_len;
3289         }
3290       else
3291         s++;
3292     }
3293
3294   *stringp = string;
3295 }
3296
3297 #ifdef HAVE_WAITPID
3298
3299 #ifdef SIGALRM
3300
3301 /* SIGALRM handler for waitpid_with_timeout.  */
3302
3303 static void
3304 sigalrm_handler (int signo)
3305 {
3306   /* Nothing to do.  */
3307 }
3308
3309 #endif
3310
3311 /* Wrapper to wait for child PID to die with TIMEOUT.
3312    TIMEOUT is the time to stop waiting in seconds.
3313    If TIMEOUT is zero, pass WNOHANG to waitpid.
3314    Returns PID if it was successfully waited for, otherwise -1.
3315
3316    Timeouts are currently implemented with alarm and SIGALRM.
3317    If the host does not support them, this waits "forever".
3318    It would be odd though for a host to have waitpid and not SIGALRM.  */
3319
3320 pid_t
3321 wait_to_die_with_timeout (pid_t pid, int *status, int timeout)
3322 {
3323   pid_t waitpid_result;
3324
3325   gdb_assert (pid > 0);
3326   gdb_assert (timeout >= 0);
3327
3328   if (timeout > 0)
3329     {
3330 #ifdef SIGALRM
3331 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
3332       struct sigaction sa, old_sa;
3333
3334       sa.sa_handler = sigalrm_handler;
3335       sigemptyset (&sa.sa_mask);
3336       sa.sa_flags = 0;
3337       sigaction (SIGALRM, &sa, &old_sa);
3338 #else
3339       sighandler_t ofunc;
3340
3341       ofunc = signal (SIGALRM, sigalrm_handler);
3342 #endif
3343
3344       alarm (timeout);
3345 #endif
3346
3347       waitpid_result = waitpid (pid, status, 0);
3348
3349 #ifdef SIGALRM
3350       alarm (0);
3351 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
3352       sigaction (SIGALRM, &old_sa, NULL);
3353 #else
3354       signal (SIGALRM, ofunc);
3355 #endif
3356 #endif
3357     }
3358   else
3359     waitpid_result = waitpid (pid, status, WNOHANG);
3360
3361   if (waitpid_result == pid)
3362     return pid;
3363   else
3364     return -1;
3365 }
3366
3367 #endif /* HAVE_WAITPID */
3368
3369 /* Provide fnmatch compatible function for FNM_FILE_NAME matching of host files.
3370    Both FNM_FILE_NAME and FNM_NOESCAPE must be set in FLAGS.
3371
3372    It handles correctly HAVE_DOS_BASED_FILE_SYSTEM and
3373    HAVE_CASE_INSENSITIVE_FILE_SYSTEM.  */
3374
3375 int
3376 gdb_filename_fnmatch (const char *pattern, const char *string, int flags)
3377 {
3378   gdb_assert ((flags & FNM_FILE_NAME) != 0);
3379
3380   /* It is unclear how '\' escaping vs. directory separator should coexist.  */
3381   gdb_assert ((flags & FNM_NOESCAPE) != 0);
3382
3383 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
3384   {
3385     char *pattern_slash, *string_slash;
3386
3387     /* Replace '\' by '/' in both strings.  */
3388
3389     pattern_slash = (char *) alloca (strlen (pattern) + 1);
3390     strcpy (pattern_slash, pattern);
3391     pattern = pattern_slash;
3392     for (; *pattern_slash != 0; pattern_slash++)
3393       if (IS_DIR_SEPARATOR (*pattern_slash))
3394         *pattern_slash = '/';
3395
3396     string_slash = (char *) alloca (strlen (string) + 1);
3397     strcpy (string_slash, string);
3398     string = string_slash;
3399     for (; *string_slash != 0; string_slash++)
3400       if (IS_DIR_SEPARATOR (*string_slash))
3401         *string_slash = '/';
3402   }
3403 #endif /* HAVE_DOS_BASED_FILE_SYSTEM */
3404
3405 #ifdef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
3406   flags |= FNM_CASEFOLD;
3407 #endif /* HAVE_CASE_INSENSITIVE_FILE_SYSTEM */
3408
3409   return fnmatch (pattern, string, flags);
3410 }
3411
3412 /* Return the number of path elements in PATH.
3413    / = 1
3414    /foo = 2
3415    /foo/ = 2
3416    foo/bar = 2
3417    foo/ = 1  */
3418
3419 int
3420 count_path_elements (const char *path)
3421 {
3422   int count = 0;
3423   const char *p = path;
3424
3425   if (HAS_DRIVE_SPEC (p))
3426     {
3427       p = STRIP_DRIVE_SPEC (p);
3428       ++count;
3429     }
3430
3431   while (*p != '\0')
3432     {
3433       if (IS_DIR_SEPARATOR (*p))
3434         ++count;
3435       ++p;
3436     }
3437
3438   /* Backup one if last character is /, unless it's the only one.  */
3439   if (p > path + 1 && IS_DIR_SEPARATOR (p[-1]))
3440     --count;
3441
3442   /* Add one for the file name, if present.  */
3443   if (p > path && !IS_DIR_SEPARATOR (p[-1]))
3444     ++count;
3445
3446   return count;
3447 }
3448
3449 /* Remove N leading path elements from PATH.
3450    N must be non-negative.
3451    If PATH has more than N path elements then return NULL.
3452    If PATH has exactly N path elements then return "".
3453    See count_path_elements for a description of how we do the counting.  */
3454
3455 const char *
3456 strip_leading_path_elements (const char *path, int n)
3457 {
3458   int i = 0;
3459   const char *p = path;
3460
3461   gdb_assert (n >= 0);
3462
3463   if (n == 0)
3464     return p;
3465
3466   if (HAS_DRIVE_SPEC (p))
3467     {
3468       p = STRIP_DRIVE_SPEC (p);
3469       ++i;
3470     }
3471
3472   while (i < n)
3473     {
3474       while (*p != '\0' && !IS_DIR_SEPARATOR (*p))
3475         ++p;
3476       if (*p == '\0')
3477         {
3478           if (i + 1 == n)
3479             return "";
3480           return NULL;
3481         }
3482       ++p;
3483       ++i;
3484     }
3485
3486   return p;
3487 }
3488
3489 /* Provide a prototype to silence -Wmissing-prototypes.  */
3490 extern initialize_file_ftype _initialize_utils;
3491
3492 void
3493 _initialize_utils (void)
3494 {
3495   add_internal_problem_command (&internal_error_problem);
3496   add_internal_problem_command (&internal_warning_problem);
3497   add_internal_problem_command (&demangler_warning_problem);
3498 }