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