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