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