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