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