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