OSDN Git Service

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