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