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