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