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