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