OSDN Git Service

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