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