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