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