1 /* General utility routines for GDB, the GNU debugger.
2 Copyright 1986, 1989, 1990-1992, 1995, 1996, 1998, 2000, 2001
3 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
24 #include "gdb_string.h"
25 #include "event-top.h"
38 /* SunOS's curses.h has a '#define reg register' in it. Thank you Sun. */
49 #include "expression.h"
53 #include "inferior.h" /* for signed_pointer_to_address */
55 #include <readline/readline.h>
58 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
60 /* readline defines this. */
63 void (*error_begin_hook) (void);
65 /* Holds the last error message issued by gdb */
67 static struct ui_file *gdb_lasterr;
69 /* Prototypes for local functions */
71 static void vfprintf_maybe_filtered (struct ui_file *, const char *,
74 static void fputs_maybe_filtered (const char *, struct ui_file *, int);
76 #if defined (USE_MMALLOC) && !defined (NO_MMCHECK)
77 static void malloc_botch (void);
80 static void prompt_for_continue (void);
82 static void set_width_command (char *, int, struct cmd_list_element *);
84 static void set_width (void);
86 /* Chain of cleanup actions established with make_cleanup,
87 to be executed if an error happens. */
89 static struct cleanup *cleanup_chain; /* cleaned up after a failed command */
90 static struct cleanup *final_cleanup_chain; /* cleaned up when gdb exits */
91 static struct cleanup *run_cleanup_chain; /* cleaned up on each 'run' */
92 static struct cleanup *exec_cleanup_chain; /* cleaned up on each execution command */
93 /* cleaned up on each error from within an execution command */
94 static struct cleanup *exec_error_cleanup_chain;
96 /* Pointer to what is left to do for an execution command after the
97 target stops. Used only in asynchronous mode, by targets that
98 support async execution. The finish and until commands use it. So
99 does the target extended-remote command. */
100 struct continuation *cmd_continuation;
101 struct continuation *intermediate_continuation;
103 /* Nonzero if we have job control. */
107 /* Nonzero means a quit has been requested. */
111 /* Nonzero means quit immediately if Control-C is typed now, rather
112 than waiting until QUIT is executed. Be careful in setting this;
113 code which executes with immediate_quit set has to be very careful
114 about being able to deal with being interrupted at any time. It is
115 almost always better to use QUIT; the only exception I can think of
116 is being able to quit out of a system call (using EINTR loses if
117 the SIGINT happens between the previous QUIT and the system call).
118 To immediately quit in the case in which a SIGINT happens between
119 the previous QUIT and setting immediate_quit (desirable anytime we
120 expect to block), call QUIT after setting immediate_quit. */
124 /* Nonzero means that encoded C++ names should be printed out in their
125 C++ form rather than raw. */
129 /* Nonzero means that encoded C++ names should be printed out in their
130 C++ form even in assembler language displays. If this is set, but
131 DEMANGLE is zero, names are printed raw, i.e. DEMANGLE controls. */
133 int asm_demangle = 0;
135 /* Nonzero means that strings with character values >0x7F should be printed
136 as octal escapes. Zero means just print the value (e.g. it's an
137 international character, and the terminal or window can cope.) */
139 int sevenbit_strings = 0;
141 /* String to be printed before error messages, if any. */
143 char *error_pre_print;
145 /* String to be printed before quit messages, if any. */
147 char *quit_pre_print;
149 /* String to be printed before warning messages, if any. */
151 char *warning_pre_print = "\nwarning: ";
153 int pagination_enabled = 1;
156 /* Add a new cleanup to the cleanup_chain,
157 and return the previous chain pointer
158 to be passed later to do_cleanups or discard_cleanups.
159 Args are FUNCTION to clean up with, and ARG to pass to it. */
162 make_cleanup (make_cleanup_ftype *function, void *arg)
164 return make_my_cleanup (&cleanup_chain, function, arg);
168 make_final_cleanup (make_cleanup_ftype *function, void *arg)
170 return make_my_cleanup (&final_cleanup_chain, function, arg);
174 make_run_cleanup (make_cleanup_ftype *function, void *arg)
176 return make_my_cleanup (&run_cleanup_chain, function, arg);
180 make_exec_cleanup (make_cleanup_ftype *function, void *arg)
182 return make_my_cleanup (&exec_cleanup_chain, function, arg);
186 make_exec_error_cleanup (make_cleanup_ftype *function, void *arg)
188 return make_my_cleanup (&exec_error_cleanup_chain, function, arg);
192 do_freeargv (void *arg)
194 freeargv ((char **) arg);
198 make_cleanup_freeargv (char **arg)
200 return make_my_cleanup (&cleanup_chain, do_freeargv, arg);
204 do_bfd_close_cleanup (void *arg)
210 make_cleanup_bfd_close (bfd *abfd)
212 return make_cleanup (do_bfd_close_cleanup, abfd);
216 do_close_cleanup (void *arg)
224 make_cleanup_close (int fd)
226 int *saved_fd = xmalloc (sizeof (fd));
228 return make_cleanup (do_close_cleanup, saved_fd);
232 do_ui_file_delete (void *arg)
234 ui_file_delete (arg);
238 make_cleanup_ui_file_delete (struct ui_file *arg)
240 return make_my_cleanup (&cleanup_chain, do_ui_file_delete, arg);
244 make_my_cleanup (struct cleanup **pmy_chain, make_cleanup_ftype *function,
247 register struct cleanup *new
248 = (struct cleanup *) xmalloc (sizeof (struct cleanup));
249 register struct cleanup *old_chain = *pmy_chain;
251 new->next = *pmy_chain;
252 new->function = function;
259 /* Discard cleanups and do the actions they describe
260 until we get back to the point OLD_CHAIN in the cleanup_chain. */
263 do_cleanups (register struct cleanup *old_chain)
265 do_my_cleanups (&cleanup_chain, old_chain);
269 do_final_cleanups (register struct cleanup *old_chain)
271 do_my_cleanups (&final_cleanup_chain, old_chain);
275 do_run_cleanups (register struct cleanup *old_chain)
277 do_my_cleanups (&run_cleanup_chain, old_chain);
281 do_exec_cleanups (register struct cleanup *old_chain)
283 do_my_cleanups (&exec_cleanup_chain, old_chain);
287 do_exec_error_cleanups (register struct cleanup *old_chain)
289 do_my_cleanups (&exec_error_cleanup_chain, old_chain);
293 do_my_cleanups (register struct cleanup **pmy_chain,
294 register struct cleanup *old_chain)
296 register struct cleanup *ptr;
297 while ((ptr = *pmy_chain) != old_chain)
299 *pmy_chain = ptr->next; /* Do this first incase recursion */
300 (*ptr->function) (ptr->arg);
305 /* Discard cleanups, not doing the actions they describe,
306 until we get back to the point OLD_CHAIN in the cleanup_chain. */
309 discard_cleanups (register struct cleanup *old_chain)
311 discard_my_cleanups (&cleanup_chain, old_chain);
315 discard_final_cleanups (register struct cleanup *old_chain)
317 discard_my_cleanups (&final_cleanup_chain, old_chain);
321 discard_exec_error_cleanups (register struct cleanup *old_chain)
323 discard_my_cleanups (&exec_error_cleanup_chain, old_chain);
327 discard_my_cleanups (register struct cleanup **pmy_chain,
328 register struct cleanup *old_chain)
330 register struct cleanup *ptr;
331 while ((ptr = *pmy_chain) != old_chain)
333 *pmy_chain = ptr->next;
338 /* Set the cleanup_chain to 0, and return the old cleanup chain. */
342 return save_my_cleanups (&cleanup_chain);
346 save_final_cleanups (void)
348 return save_my_cleanups (&final_cleanup_chain);
352 save_my_cleanups (struct cleanup **pmy_chain)
354 struct cleanup *old_chain = *pmy_chain;
360 /* Restore the cleanup chain from a previously saved chain. */
362 restore_cleanups (struct cleanup *chain)
364 restore_my_cleanups (&cleanup_chain, chain);
368 restore_final_cleanups (struct cleanup *chain)
370 restore_my_cleanups (&final_cleanup_chain, chain);
374 restore_my_cleanups (struct cleanup **pmy_chain, struct cleanup *chain)
379 /* This function is useful for cleanups.
383 old_chain = make_cleanup (free_current_contents, &foo);
385 to arrange to free the object thus allocated. */
388 free_current_contents (void *ptr)
390 void **location = ptr;
391 if (location == NULL)
392 internal_error (__FILE__, __LINE__,
393 "free_current_contents: NULL pointer");
394 if (*location != NULL)
401 /* Provide a known function that does nothing, to use as a base for
402 for a possibly long chain of cleanups. This is useful where we
403 use the cleanup chain for handling normal cleanups as well as dealing
404 with cleanups that need to be done as a result of a call to error().
405 In such cases, we may not be certain where the first cleanup is, unless
406 we have a do-nothing one to always use as the base. */
410 null_cleanup (void *arg)
414 /* Add a continuation to the continuation list, the global list
415 cmd_continuation. The new continuation will be added at the front.*/
417 add_continuation (void (*continuation_hook) (struct continuation_arg *),
418 struct continuation_arg *arg_list)
420 struct continuation *continuation_ptr;
422 continuation_ptr = (struct continuation *) xmalloc (sizeof (struct continuation));
423 continuation_ptr->continuation_hook = continuation_hook;
424 continuation_ptr->arg_list = arg_list;
425 continuation_ptr->next = cmd_continuation;
426 cmd_continuation = continuation_ptr;
429 /* Walk down the cmd_continuation list, and execute all the
430 continuations. There is a problem though. In some cases new
431 continuations may be added while we are in the middle of this
432 loop. If this happens they will be added in the front, and done
433 before we have a chance of exhausting those that were already
434 there. We need to then save the beginning of the list in a pointer
435 and do the continuations from there on, instead of using the
436 global beginning of list as our iteration pointer.*/
438 do_all_continuations (void)
440 struct continuation *continuation_ptr;
441 struct continuation *saved_continuation;
443 /* Copy the list header into another pointer, and set the global
444 list header to null, so that the global list can change as a side
445 effect of invoking the continuations and the processing of
446 the preexisting continuations will not be affected. */
447 continuation_ptr = cmd_continuation;
448 cmd_continuation = NULL;
450 /* Work now on the list we have set aside. */
451 while (continuation_ptr)
453 (continuation_ptr->continuation_hook) (continuation_ptr->arg_list);
454 saved_continuation = continuation_ptr;
455 continuation_ptr = continuation_ptr->next;
456 xfree (saved_continuation);
460 /* Walk down the cmd_continuation list, and get rid of all the
463 discard_all_continuations (void)
465 struct continuation *continuation_ptr;
467 while (cmd_continuation)
469 continuation_ptr = cmd_continuation;
470 cmd_continuation = continuation_ptr->next;
471 xfree (continuation_ptr);
475 /* Add a continuation to the continuation list, the global list
476 intermediate_continuation. The new continuation will be added at the front.*/
478 add_intermediate_continuation (void (*continuation_hook)
479 (struct continuation_arg *),
480 struct continuation_arg *arg_list)
482 struct continuation *continuation_ptr;
484 continuation_ptr = (struct continuation *) xmalloc (sizeof (struct continuation));
485 continuation_ptr->continuation_hook = continuation_hook;
486 continuation_ptr->arg_list = arg_list;
487 continuation_ptr->next = intermediate_continuation;
488 intermediate_continuation = continuation_ptr;
491 /* Walk down the cmd_continuation list, and execute all the
492 continuations. There is a problem though. In some cases new
493 continuations may be added while we are in the middle of this
494 loop. If this happens they will be added in the front, and done
495 before we have a chance of exhausting those that were already
496 there. We need to then save the beginning of the list in a pointer
497 and do the continuations from there on, instead of using the
498 global beginning of list as our iteration pointer.*/
500 do_all_intermediate_continuations (void)
502 struct continuation *continuation_ptr;
503 struct continuation *saved_continuation;
505 /* Copy the list header into another pointer, and set the global
506 list header to null, so that the global list can change as a side
507 effect of invoking the continuations and the processing of
508 the preexisting continuations will not be affected. */
509 continuation_ptr = intermediate_continuation;
510 intermediate_continuation = NULL;
512 /* Work now on the list we have set aside. */
513 while (continuation_ptr)
515 (continuation_ptr->continuation_hook) (continuation_ptr->arg_list);
516 saved_continuation = continuation_ptr;
517 continuation_ptr = continuation_ptr->next;
518 xfree (saved_continuation);
522 /* Walk down the cmd_continuation list, and get rid of all the
525 discard_all_intermediate_continuations (void)
527 struct continuation *continuation_ptr;
529 while (intermediate_continuation)
531 continuation_ptr = intermediate_continuation;
532 intermediate_continuation = continuation_ptr->next;
533 xfree (continuation_ptr);
539 /* Print a warning message. Way to use this is to call warning_begin,
540 output the warning message (use unfiltered output to gdb_stderr),
541 ending in a newline. There is not currently a warning_end that you
542 call afterwards, but such a thing might be added if it is useful
543 for a GUI to separate warning messages from other output.
545 FIXME: Why do warnings use unfiltered output and errors filtered?
546 Is this anything other than a historical accident? */
551 target_terminal_ours ();
552 wrap_here (""); /* Force out any buffered output */
553 gdb_flush (gdb_stdout);
554 if (warning_pre_print)
555 fprintf_unfiltered (gdb_stderr, warning_pre_print);
558 /* Print a warning message.
559 The first argument STRING is the warning message, used as a fprintf string,
560 and the remaining args are passed as arguments to it.
561 The primary difference between warnings and errors is that a warning
562 does not force the return to command level. */
565 warning (const char *string,...)
568 va_start (args, string);
570 (*warning_hook) (string, args);
574 vfprintf_unfiltered (gdb_stderr, string, args);
575 fprintf_unfiltered (gdb_stderr, "\n");
580 /* Start the printing of an error message. Way to use this is to call
581 this, output the error message (use filtered output to gdb_stderr
582 (FIXME: Some callers, like memory_error, use gdb_stdout)), ending
583 in a newline, and then call return_to_top_level (RETURN_ERROR).
584 error() provides a convenient way to do this for the special case
585 that the error message can be formatted with a single printf call,
586 but this is more general. */
590 if (error_begin_hook)
593 target_terminal_ours ();
594 wrap_here (""); /* Force out any buffered output */
595 gdb_flush (gdb_stdout);
597 annotate_error_begin ();
600 fprintf_filtered (gdb_stderr, error_pre_print);
603 /* Print an error message and return to command level.
604 The first argument STRING is the error message, used as a fprintf string,
605 and the remaining args are passed as arguments to it. */
608 verror (const char *string, va_list args)
611 struct cleanup *err_string_cleanup;
612 /* FIXME: cagney/1999-11-10: All error calls should come here.
613 Unfortunately some code uses the sequence: error_begin(); print
614 error message; return_to_top_level. That code should be
617 /* NOTE: It's tempting to just do the following...
618 vfprintf_filtered (gdb_stderr, string, args);
619 and then follow with a similar looking statement to cause the message
620 to also go to gdb_lasterr. But if we do this, we'll be traversing the
621 va_list twice which works on some platforms and fails miserably on
623 /* Save it as the last error */
624 ui_file_rewind (gdb_lasterr);
625 vfprintf_filtered (gdb_lasterr, string, args);
626 /* Retrieve the last error and print it to gdb_stderr */
627 err_string = error_last_message ();
628 err_string_cleanup = make_cleanup (xfree, err_string);
629 fputs_filtered (err_string, gdb_stderr);
630 fprintf_filtered (gdb_stderr, "\n");
631 do_cleanups (err_string_cleanup);
632 return_to_top_level (RETURN_ERROR);
636 error (const char *string,...)
639 va_start (args, string);
640 verror (string, args);
645 error_stream (struct ui_file *stream)
648 char *msg = ui_file_xstrdup (stream, &size);
649 make_cleanup (xfree, msg);
653 /* Get the last error message issued by gdb */
656 error_last_message (void)
659 return ui_file_xstrdup (gdb_lasterr, &len);
662 /* This is to be called by main() at the very beginning */
667 gdb_lasterr = mem_fileopen ();
670 /* Print a message reporting an internal error. Ask the user if they
671 want to continue, dump core, or just exit. */
674 internal_verror (const char *file, int line,
675 const char *fmt, va_list ap)
677 static char msg[] = "Internal GDB error: recursive internal error.\n";
678 static int dejavu = 0;
682 /* don't allow infinite error recursion. */
690 fputs_unfiltered (msg, gdb_stderr);
691 internal_error (__FILE__, __LINE__, "failed internal consistency check");
694 write (STDERR_FILENO, msg, sizeof (msg));
698 /* Try to get the message out */
699 target_terminal_ours ();
700 fprintf_unfiltered (gdb_stderr, "%s:%d: gdb-internal-error: ", file, line);
701 vfprintf_unfiltered (gdb_stderr, fmt, ap);
702 fputs_unfiltered ("\n", gdb_stderr);
704 /* Default (no case) is to quit GDB. When in batch mode this
705 lessens the likelhood of GDB going into an infinate loop. */
706 continue_p = query ("\
707 An internal GDB error was detected. This may make further\n\
708 debugging unreliable. Continue this debugging session? ");
710 /* Default (no case) is to not dump core. Lessen the chance of GDB
711 leaving random core files around. */
712 dump_core_p = query ("\
713 Create a core file containing the current state of GDB? ");
720 internal_error (__FILE__, __LINE__, "failed internal consistency check");
726 internal_error (__FILE__, __LINE__, "failed internal consistency check");
732 return_to_top_level (RETURN_ERROR);
736 internal_error (const char *file, int line, const char *string, ...)
739 va_start (ap, string);
741 internal_verror (file, line, string, ap);
745 /* The strerror() function can return NULL for errno values that are
746 out of range. Provide a "safe" version that always returns a
750 safe_strerror (int errnum)
755 if ((msg = strerror (errnum)) == NULL)
757 sprintf (buf, "(undocumented errno %d)", errnum);
763 /* Print the system error message for errno, and also mention STRING
764 as the file name for which the error was encountered.
765 Then return to command level. */
768 perror_with_name (char *string)
773 err = safe_strerror (errno);
774 combined = (char *) alloca (strlen (err) + strlen (string) + 3);
775 strcpy (combined, string);
776 strcat (combined, ": ");
777 strcat (combined, err);
779 /* I understand setting these is a matter of taste. Still, some people
780 may clear errno but not know about bfd_error. Doing this here is not
782 bfd_set_error (bfd_error_no_error);
785 error ("%s.", combined);
788 /* Print the system error message for ERRCODE, and also mention STRING
789 as the file name for which the error was encountered. */
792 print_sys_errmsg (char *string, int errcode)
797 err = safe_strerror (errcode);
798 combined = (char *) alloca (strlen (err) + strlen (string) + 3);
799 strcpy (combined, string);
800 strcat (combined, ": ");
801 strcat (combined, err);
803 /* We want anything which was printed on stdout to come out first, before
805 gdb_flush (gdb_stdout);
806 fprintf_unfiltered (gdb_stderr, "%s.\n", combined);
809 /* Control C eventually causes this to be called, at a convenient time. */
814 serial_t gdb_stdout_serial = serial_fdopen (1);
816 target_terminal_ours ();
818 /* We want all output to appear now, before we print "Quit". We
819 have 3 levels of buffering we have to flush (it's possible that
820 some of these should be changed to flush the lower-level ones
823 /* 1. The _filtered buffer. */
824 wrap_here ((char *) 0);
826 /* 2. The stdio buffer. */
827 gdb_flush (gdb_stdout);
828 gdb_flush (gdb_stderr);
830 /* 3. The system-level buffer. */
831 SERIAL_DRAIN_OUTPUT (gdb_stdout_serial);
832 SERIAL_UN_FDOPEN (gdb_stdout_serial);
834 annotate_error_begin ();
836 /* Don't use *_filtered; we don't want to prompt the user to continue. */
838 fprintf_unfiltered (gdb_stderr, quit_pre_print);
841 /* No steenking SIGINT will ever be coming our way when the
842 program is resumed. Don't lie. */
843 fprintf_unfiltered (gdb_stderr, "Quit\n");
846 /* If there is no terminal switching for this target, then we can't
847 possibly get screwed by the lack of job control. */
848 || current_target.to_terminal_ours == NULL)
849 fprintf_unfiltered (gdb_stderr, "Quit\n");
851 fprintf_unfiltered (gdb_stderr,
852 "Quit (expect signal SIGINT when the program is resumed)\n");
854 return_to_top_level (RETURN_QUIT);
858 #if defined(_MSC_VER) /* should test for wingdb instead? */
861 * Windows translates all keyboard and mouse events
862 * into a message which is appended to the message
863 * queue for the process.
869 int k = win32pollquit ();
876 #else /* !defined(_MSC_VER) */
881 /* Done by signals */
884 #endif /* !defined(_MSC_VER) */
886 /* Control C comes here */
888 request_quit (int signo)
891 /* Restore the signal handler. Harmless with BSD-style signals, needed
892 for System V-style signals. So just always do it, rather than worrying
893 about USG defines and stuff like that. */
894 signal (signo, request_quit);
904 /* Memory management stuff (malloc friends). */
906 /* Make a substitute size_t for non-ANSI compilers. */
908 #ifndef HAVE_STDDEF_H
910 #define size_t unsigned int
914 #if !defined (USE_MMALLOC)
917 mcalloc (PTR md, size_t number, size_t size)
919 return calloc (number, size);
923 mmalloc (PTR md, size_t size)
925 return malloc (size);
929 mrealloc (PTR md, PTR ptr, size_t size)
931 if (ptr == 0) /* Guard against old realloc's */
932 return malloc (size);
934 return realloc (ptr, size);
938 mfree (PTR md, PTR ptr)
943 #endif /* USE_MMALLOC */
945 #if !defined (USE_MMALLOC) || defined (NO_MMCHECK)
948 init_malloc (void *md)
952 #else /* Have mmalloc and want corruption checking */
957 fprintf_unfiltered (gdb_stderr, "Memory corruption\n");
958 internal_error (__FILE__, __LINE__, "failed internal consistency check");
961 /* Attempt to install hooks in mmalloc/mrealloc/mfree for the heap specified
962 by MD, to detect memory corruption. Note that MD may be NULL to specify
963 the default heap that grows via sbrk.
965 Note that for freshly created regions, we must call mmcheckf prior to any
966 mallocs in the region. Otherwise, any region which was allocated prior to
967 installing the checking hooks, which is later reallocated or freed, will
968 fail the checks! The mmcheck function only allows initial hooks to be
969 installed before the first mmalloc. However, anytime after we have called
970 mmcheck the first time to install the checking hooks, we can call it again
971 to update the function pointer to the memory corruption handler.
973 Returns zero on failure, non-zero on success. */
975 #ifndef MMCHECK_FORCE
976 #define MMCHECK_FORCE 0
980 init_malloc (void *md)
982 if (!mmcheckf (md, malloc_botch, MMCHECK_FORCE))
984 /* Don't use warning(), which relies on current_target being set
985 to something other than dummy_target, until after
986 initialize_all_files(). */
989 (gdb_stderr, "warning: failed to install memory consistency checks; ");
991 (gdb_stderr, "configuration should define NO_MMCHECK or MMCHECK_FORCE\n");
997 #endif /* Have mmalloc and want corruption checking */
999 /* Called when a memory allocation fails, with the number of bytes of
1000 memory requested in SIZE. */
1007 internal_error (__FILE__, __LINE__,
1008 "virtual memory exhausted: can't allocate %ld bytes.", size);
1012 internal_error (__FILE__, __LINE__,
1013 "virtual memory exhausted.");
1017 /* Like mmalloc but get error if no storage available, and protect against
1018 the caller wanting to allocate zero bytes. Whether to return NULL for
1019 a zero byte request, or translate the request into a request for one
1020 byte of zero'd storage, is a religious issue. */
1023 xmmalloc (PTR md, long size)
1031 else if ((val = mmalloc (md, size)) == NULL)
1038 /* Like mrealloc but get error if no storage available. */
1041 xmrealloc (PTR md, PTR ptr, long size)
1047 val = mrealloc (md, ptr, size);
1051 val = mmalloc (md, size);
1060 /* Like malloc but get error if no storage available, and protect against
1061 the caller wanting to allocate zero bytes. */
1064 xmalloc (size_t size)
1066 return (xmmalloc ((PTR) NULL, size));
1069 /* Like calloc but get error if no storage available */
1072 xcalloc (size_t number, size_t size)
1074 void *mem = mcalloc (NULL, number, size);
1076 nomem (number * size);
1080 /* Like mrealloc but get error if no storage available. */
1083 xrealloc (PTR ptr, size_t size)
1085 return (xmrealloc ((PTR) NULL, ptr, size));
1088 /* Free up space allocated by one of xmalloc(), xcalloc(), or
1099 /* Like asprintf/vasprintf but get an internal_error if the call
1103 xasprintf (char **ret, const char *format, ...)
1106 va_start (args, format);
1107 xvasprintf (ret, format, args);
1112 xvasprintf (char **ret, const char *format, va_list ap)
1114 int status = vasprintf (ret, format, ap);
1115 /* NULL could be returned due to a memory allocation problem; a
1116 badly format string; or something else. */
1118 internal_error (__FILE__, __LINE__,
1119 "vasprintf returned NULL buffer (errno %d)",
1121 /* A negative status with a non-NULL buffer shouldn't never
1122 happen. But to be sure. */
1124 internal_error (__FILE__, __LINE__,
1125 "vasprintf call failed (errno %d)",
1130 /* My replacement for the read system call.
1131 Used like `read' but keeps going if `read' returns too soon. */
1134 myread (int desc, char *addr, int len)
1141 val = read (desc, addr, len);
1145 return orglen - len;
1152 /* Make a copy of the string at PTR with SIZE characters
1153 (and add a null character at the end in the copy).
1154 Uses malloc to get the space. Returns the address of the copy. */
1157 savestring (const char *ptr, int size)
1159 register char *p = (char *) xmalloc (size + 1);
1160 memcpy (p, ptr, size);
1166 msavestring (void *md, const char *ptr, int size)
1168 register char *p = (char *) xmmalloc (md, size + 1);
1169 memcpy (p, ptr, size);
1175 mstrsave (void *md, const char *ptr)
1177 return (msavestring (md, ptr, strlen (ptr)));
1181 print_spaces (register int n, register struct ui_file *file)
1183 fputs_unfiltered (n_spaces (n), file);
1186 /* Print a host address. */
1189 gdb_print_host_address (void *addr, struct ui_file *stream)
1192 /* We could use the %p conversion specifier to fprintf if we had any
1193 way of knowing whether this host supports it. But the following
1194 should work on the Alpha and on 32 bit machines. */
1196 fprintf_filtered (stream, "0x%lx", (unsigned long) addr);
1199 /* Ask user a y-or-n question and return 1 iff answer is yes.
1200 Takes three args which are given to printf to print the question.
1201 The first, a control string, should end in "? ".
1202 It should not say how to answer, because we do that. */
1206 query (char *ctlstr,...)
1209 register int answer;
1213 va_start (args, ctlstr);
1217 return query_hook (ctlstr, args);
1220 /* Automatically answer "yes" if input is not from a terminal. */
1221 if (!input_from_terminal_p ())
1224 /* FIXME Automatically answer "yes" if called from MacGDB. */
1231 wrap_here (""); /* Flush any buffered output */
1232 gdb_flush (gdb_stdout);
1234 if (annotation_level > 1)
1235 printf_filtered ("\n\032\032pre-query\n");
1237 vfprintf_filtered (gdb_stdout, ctlstr, args);
1238 printf_filtered ("(y or n) ");
1240 if (annotation_level > 1)
1241 printf_filtered ("\n\032\032query\n");
1244 /* If not in MacGDB, move to a new line so the entered line doesn't
1245 have a prompt on the front of it. */
1247 fputs_unfiltered ("\n", gdb_stdout);
1251 gdb_flush (gdb_stdout);
1254 if (!tui_version || cmdWin == tuiWinWithFocus ())
1256 answer = fgetc (stdin);
1259 answer = (unsigned char) tuiBufferGetc ();
1262 clearerr (stdin); /* in case of C-d */
1263 if (answer == EOF) /* C-d */
1268 /* Eat rest of input line, to EOF or newline */
1269 if ((answer != '\n') || (tui_version && answer != '\r'))
1273 if (!tui_version || cmdWin == tuiWinWithFocus ())
1275 ans2 = fgetc (stdin);
1278 ans2 = (unsigned char) tuiBufferGetc ();
1282 while (ans2 != EOF && ans2 != '\n' && ans2 != '\r');
1283 TUIDO (((TuiOpaqueFuncPtr) tui_vStartNewLines, 1));
1297 printf_filtered ("Please answer y or n.\n");
1300 if (annotation_level > 1)
1301 printf_filtered ("\n\032\032post-query\n");
1306 /* Parse a C escape sequence. STRING_PTR points to a variable
1307 containing a pointer to the string to parse. That pointer
1308 should point to the character after the \. That pointer
1309 is updated past the characters we use. The value of the
1310 escape sequence is returned.
1312 A negative value means the sequence \ newline was seen,
1313 which is supposed to be equivalent to nothing at all.
1315 If \ is followed by a null character, we return a negative
1316 value and leave the string pointer pointing at the null character.
1318 If \ is followed by 000, we return 0 and leave the string pointer
1319 after the zeros. A value of 0 does not mean end of string. */
1322 parse_escape (char **string_ptr)
1324 register int c = *(*string_ptr)++;
1328 return 007; /* Bell (alert) char */
1331 case 'e': /* Escape character */
1349 c = *(*string_ptr)++;
1351 c = parse_escape (string_ptr);
1354 return (c & 0200) | (c & 037);
1365 register int i = c - '0';
1366 register int count = 0;
1369 if ((c = *(*string_ptr)++) >= '0' && c <= '7')
1387 /* Print the character C on STREAM as part of the contents of a literal
1388 string whose delimiter is QUOTER. Note that this routine should only
1389 be call for printing things which are independent of the language
1390 of the program being debugged. */
1393 printchar (int c, void (*do_fputs) (const char *, struct ui_file *),
1394 void (*do_fprintf) (struct ui_file *, const char *, ...),
1395 struct ui_file *stream, int quoter)
1398 c &= 0xFF; /* Avoid sign bit follies */
1400 if (c < 0x20 || /* Low control chars */
1401 (c >= 0x7F && c < 0xA0) || /* DEL, High controls */
1402 (sevenbit_strings && c >= 0x80))
1403 { /* high order bit set */
1407 do_fputs ("\\n", stream);
1410 do_fputs ("\\b", stream);
1413 do_fputs ("\\t", stream);
1416 do_fputs ("\\f", stream);
1419 do_fputs ("\\r", stream);
1422 do_fputs ("\\e", stream);
1425 do_fputs ("\\a", stream);
1428 do_fprintf (stream, "\\%.3o", (unsigned int) c);
1434 if (c == '\\' || c == quoter)
1435 do_fputs ("\\", stream);
1436 do_fprintf (stream, "%c", c);
1440 /* Print the character C on STREAM as part of the contents of a
1441 literal string whose delimiter is QUOTER. Note that these routines
1442 should only be call for printing things which are independent of
1443 the language of the program being debugged. */
1446 fputstr_filtered (const char *str, int quoter, struct ui_file *stream)
1449 printchar (*str++, fputs_filtered, fprintf_filtered, stream, quoter);
1453 fputstr_unfiltered (const char *str, int quoter, struct ui_file *stream)
1456 printchar (*str++, fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1460 fputstrn_unfiltered (const char *str, int n, int quoter, struct ui_file *stream)
1463 for (i = 0; i < n; i++)
1464 printchar (str[i], fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1469 /* Number of lines per page or UINT_MAX if paging is disabled. */
1470 static unsigned int lines_per_page;
1471 /* Number of chars per line or UINT_MAX if line folding is disabled. */
1472 static unsigned int chars_per_line;
1473 /* Current count of lines printed on this page, chars on this line. */
1474 static unsigned int lines_printed, chars_printed;
1476 /* Buffer and start column of buffered text, for doing smarter word-
1477 wrapping. When someone calls wrap_here(), we start buffering output
1478 that comes through fputs_filtered(). If we see a newline, we just
1479 spit it out and forget about the wrap_here(). If we see another
1480 wrap_here(), we spit it out and remember the newer one. If we see
1481 the end of the line, we spit out a newline, the indent, and then
1482 the buffered output. */
1484 /* Malloc'd buffer with chars_per_line+2 bytes. Contains characters which
1485 are waiting to be output (they have already been counted in chars_printed).
1486 When wrap_buffer[0] is null, the buffer is empty. */
1487 static char *wrap_buffer;
1489 /* Pointer in wrap_buffer to the next character to fill. */
1490 static char *wrap_pointer;
1492 /* String to indent by if the wrap occurs. Must not be NULL if wrap_column
1494 static char *wrap_indent;
1496 /* Column number on the screen where wrap_buffer begins, or 0 if wrapping
1497 is not in effect. */
1498 static int wrap_column;
1501 /* Inialize the lines and chars per page */
1503 init_page_info (void)
1506 if (tui_version && m_winPtrNotNull (cmdWin))
1508 lines_per_page = cmdWin->generic.height;
1509 chars_per_line = cmdWin->generic.width;
1514 /* These defaults will be used if we are unable to get the correct
1515 values from termcap. */
1516 #if defined(__GO32__)
1517 lines_per_page = ScreenRows ();
1518 chars_per_line = ScreenCols ();
1520 lines_per_page = 24;
1521 chars_per_line = 80;
1523 #if !defined (MPW) && !defined (_WIN32)
1524 /* No termcap under MPW, although might be cool to do something
1525 by looking at worksheet or console window sizes. */
1526 /* Initialize the screen height and width from termcap. */
1528 char *termtype = getenv ("TERM");
1530 /* Positive means success, nonpositive means failure. */
1533 /* 2048 is large enough for all known terminals, according to the
1534 GNU termcap manual. */
1535 char term_buffer[2048];
1539 status = tgetent (term_buffer, termtype);
1543 int running_in_emacs = getenv ("EMACS") != NULL;
1545 val = tgetnum ("li");
1546 if (val >= 0 && !running_in_emacs)
1547 lines_per_page = val;
1549 /* The number of lines per page is not mentioned
1550 in the terminal description. This probably means
1551 that paging is not useful (e.g. emacs shell window),
1552 so disable paging. */
1553 lines_per_page = UINT_MAX;
1555 val = tgetnum ("co");
1557 chars_per_line = val;
1563 #if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
1565 /* If there is a better way to determine the window size, use it. */
1566 SIGWINCH_HANDLER (SIGWINCH);
1569 /* If the output is not a terminal, don't paginate it. */
1570 if (!ui_file_isatty (gdb_stdout))
1571 lines_per_page = UINT_MAX;
1572 } /* the command_line_version */
1579 if (chars_per_line == 0)
1584 wrap_buffer = (char *) xmalloc (chars_per_line + 2);
1585 wrap_buffer[0] = '\0';
1588 wrap_buffer = (char *) xrealloc (wrap_buffer, chars_per_line + 2);
1589 wrap_pointer = wrap_buffer; /* Start it at the beginning */
1594 set_width_command (char *args, int from_tty, struct cmd_list_element *c)
1599 /* Wait, so the user can read what's on the screen. Prompt the user
1600 to continue by pressing RETURN. */
1603 prompt_for_continue (void)
1606 char cont_prompt[120];
1608 if (annotation_level > 1)
1609 printf_unfiltered ("\n\032\032pre-prompt-for-continue\n");
1611 strcpy (cont_prompt,
1612 "---Type <return> to continue, or q <return> to quit---");
1613 if (annotation_level > 1)
1614 strcat (cont_prompt, "\n\032\032prompt-for-continue\n");
1616 /* We must do this *before* we call gdb_readline, else it will eventually
1617 call us -- thinking that we're trying to print beyond the end of the
1619 reinitialize_more_filter ();
1622 /* On a real operating system, the user can quit with SIGINT.
1625 'q' is provided on all systems so users don't have to change habits
1626 from system to system, and because telling them what to do in
1627 the prompt is more user-friendly than expecting them to think of
1629 /* Call readline, not gdb_readline, because GO32 readline handles control-C
1630 whereas control-C to gdb_readline will cause the user to get dumped
1632 ignore = readline (cont_prompt);
1634 if (annotation_level > 1)
1635 printf_unfiltered ("\n\032\032post-prompt-for-continue\n");
1640 while (*p == ' ' || *p == '\t')
1645 request_quit (SIGINT);
1647 async_request_quit (0);
1653 /* Now we have to do this again, so that GDB will know that it doesn't
1654 need to save the ---Type <return>--- line at the top of the screen. */
1655 reinitialize_more_filter ();
1657 dont_repeat (); /* Forget prev cmd -- CR won't repeat it. */
1660 /* Reinitialize filter; ie. tell it to reset to original values. */
1663 reinitialize_more_filter (void)
1669 /* Indicate that if the next sequence of characters overflows the line,
1670 a newline should be inserted here rather than when it hits the end.
1671 If INDENT is non-null, it is a string to be printed to indent the
1672 wrapped part on the next line. INDENT must remain accessible until
1673 the next call to wrap_here() or until a newline is printed through
1676 If the line is already overfull, we immediately print a newline and
1677 the indentation, and disable further wrapping.
1679 If we don't know the width of lines, but we know the page height,
1680 we must not wrap words, but should still keep track of newlines
1681 that were explicitly printed.
1683 INDENT should not contain tabs, as that will mess up the char count
1684 on the next line. FIXME.
1686 This routine is guaranteed to force out any output which has been
1687 squirreled away in the wrap_buffer, so wrap_here ((char *)0) can be
1688 used to force out output from the wrap_buffer. */
1691 wrap_here (char *indent)
1693 /* This should have been allocated, but be paranoid anyway. */
1695 internal_error (__FILE__, __LINE__, "failed internal consistency check");
1699 *wrap_pointer = '\0';
1700 fputs_unfiltered (wrap_buffer, gdb_stdout);
1702 wrap_pointer = wrap_buffer;
1703 wrap_buffer[0] = '\0';
1704 if (chars_per_line == UINT_MAX) /* No line overflow checking */
1708 else if (chars_printed >= chars_per_line)
1710 puts_filtered ("\n");
1712 puts_filtered (indent);
1717 wrap_column = chars_printed;
1721 wrap_indent = indent;
1725 /* Ensure that whatever gets printed next, using the filtered output
1726 commands, starts at the beginning of the line. I.E. if there is
1727 any pending output for the current line, flush it and start a new
1728 line. Otherwise do nothing. */
1733 if (chars_printed > 0)
1735 puts_filtered ("\n");
1740 /* Like fputs but if FILTER is true, pause after every screenful.
1742 Regardless of FILTER can wrap at points other than the final
1743 character of a line.
1745 Unlike fputs, fputs_maybe_filtered does not return a value.
1746 It is OK for LINEBUFFER to be NULL, in which case just don't print
1749 Note that a longjmp to top level may occur in this routine (only if
1750 FILTER is true) (since prompt_for_continue may do so) so this
1751 routine should not be called when cleanups are not in place. */
1754 fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
1757 const char *lineptr;
1759 if (linebuffer == 0)
1762 /* Don't do any filtering if it is disabled. */
1763 if ((stream != gdb_stdout) || !pagination_enabled
1764 || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX))
1766 fputs_unfiltered (linebuffer, stream);
1770 /* Go through and output each character. Show line extension
1771 when this is necessary; prompt user for new page when this is
1774 lineptr = linebuffer;
1777 /* Possible new page. */
1779 (lines_printed >= lines_per_page - 1))
1780 prompt_for_continue ();
1782 while (*lineptr && *lineptr != '\n')
1784 /* Print a single line. */
1785 if (*lineptr == '\t')
1788 *wrap_pointer++ = '\t';
1790 fputc_unfiltered ('\t', stream);
1791 /* Shifting right by 3 produces the number of tab stops
1792 we have already passed, and then adding one and
1793 shifting left 3 advances to the next tab stop. */
1794 chars_printed = ((chars_printed >> 3) + 1) << 3;
1800 *wrap_pointer++ = *lineptr;
1802 fputc_unfiltered (*lineptr, stream);
1807 if (chars_printed >= chars_per_line)
1809 unsigned int save_chars = chars_printed;
1813 /* If we aren't actually wrapping, don't output newline --
1814 if chars_per_line is right, we probably just overflowed
1815 anyway; if it's wrong, let us keep going. */
1817 fputc_unfiltered ('\n', stream);
1819 /* Possible new page. */
1820 if (lines_printed >= lines_per_page - 1)
1821 prompt_for_continue ();
1823 /* Now output indentation and wrapped string */
1826 fputs_unfiltered (wrap_indent, stream);
1827 *wrap_pointer = '\0'; /* Null-terminate saved stuff */
1828 fputs_unfiltered (wrap_buffer, stream); /* and eject it */
1829 /* FIXME, this strlen is what prevents wrap_indent from
1830 containing tabs. However, if we recurse to print it
1831 and count its chars, we risk trouble if wrap_indent is
1832 longer than (the user settable) chars_per_line.
1833 Note also that this can set chars_printed > chars_per_line
1834 if we are printing a long string. */
1835 chars_printed = strlen (wrap_indent)
1836 + (save_chars - wrap_column);
1837 wrap_pointer = wrap_buffer; /* Reset buffer */
1838 wrap_buffer[0] = '\0';
1839 wrap_column = 0; /* And disable fancy wrap */
1844 if (*lineptr == '\n')
1847 wrap_here ((char *) 0); /* Spit out chars, cancel further wraps */
1849 fputc_unfiltered ('\n', stream);
1856 fputs_filtered (const char *linebuffer, struct ui_file *stream)
1858 fputs_maybe_filtered (linebuffer, stream, 1);
1862 putchar_unfiltered (int c)
1865 ui_file_write (gdb_stdout, &buf, 1);
1869 /* Write character C to gdb_stdout using GDB's paging mechanism and return C.
1870 May return nonlocally. */
1873 putchar_filtered (int c)
1875 return fputc_filtered (c, gdb_stdout);
1879 fputc_unfiltered (int c, struct ui_file *stream)
1882 ui_file_write (stream, &buf, 1);
1887 fputc_filtered (int c, struct ui_file *stream)
1893 fputs_filtered (buf, stream);
1897 /* puts_debug is like fputs_unfiltered, except it prints special
1898 characters in printable fashion. */
1901 puts_debug (char *prefix, char *string, char *suffix)
1905 /* Print prefix and suffix after each line. */
1906 static int new_line = 1;
1907 static int return_p = 0;
1908 static char *prev_prefix = "";
1909 static char *prev_suffix = "";
1911 if (*string == '\n')
1914 /* If the prefix is changing, print the previous suffix, a new line,
1915 and the new prefix. */
1916 if ((return_p || (strcmp (prev_prefix, prefix) != 0)) && !new_line)
1918 fputs_unfiltered (prev_suffix, gdb_stdlog);
1919 fputs_unfiltered ("\n", gdb_stdlog);
1920 fputs_unfiltered (prefix, gdb_stdlog);
1923 /* Print prefix if we printed a newline during the previous call. */
1927 fputs_unfiltered (prefix, gdb_stdlog);
1930 prev_prefix = prefix;
1931 prev_suffix = suffix;
1933 /* Output characters in a printable format. */
1934 while ((ch = *string++) != '\0')
1940 fputc_unfiltered (ch, gdb_stdlog);
1943 fprintf_unfiltered (gdb_stdlog, "\\x%02x", ch & 0xff);
1947 fputs_unfiltered ("\\\\", gdb_stdlog);
1950 fputs_unfiltered ("\\b", gdb_stdlog);
1953 fputs_unfiltered ("\\f", gdb_stdlog);
1957 fputs_unfiltered ("\\n", gdb_stdlog);
1960 fputs_unfiltered ("\\r", gdb_stdlog);
1963 fputs_unfiltered ("\\t", gdb_stdlog);
1966 fputs_unfiltered ("\\v", gdb_stdlog);
1970 return_p = ch == '\r';
1973 /* Print suffix if we printed a newline. */
1976 fputs_unfiltered (suffix, gdb_stdlog);
1977 fputs_unfiltered ("\n", gdb_stdlog);
1982 /* Print a variable number of ARGS using format FORMAT. If this
1983 information is going to put the amount written (since the last call
1984 to REINITIALIZE_MORE_FILTER or the last page break) over the page size,
1985 call prompt_for_continue to get the users permision to continue.
1987 Unlike fprintf, this function does not return a value.
1989 We implement three variants, vfprintf (takes a vararg list and stream),
1990 fprintf (takes a stream to write on), and printf (the usual).
1992 Note also that a longjmp to top level may occur in this routine
1993 (since prompt_for_continue may do so) so this routine should not be
1994 called when cleanups are not in place. */
1997 vfprintf_maybe_filtered (struct ui_file *stream, const char *format,
1998 va_list args, int filter)
2001 struct cleanup *old_cleanups;
2003 xvasprintf (&linebuffer, format, args);
2004 old_cleanups = make_cleanup (xfree, linebuffer);
2005 fputs_maybe_filtered (linebuffer, stream, filter);
2006 do_cleanups (old_cleanups);
2011 vfprintf_filtered (struct ui_file *stream, const char *format, va_list args)
2013 vfprintf_maybe_filtered (stream, format, args, 1);
2017 vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args)
2020 struct cleanup *old_cleanups;
2022 xvasprintf (&linebuffer, format, args);
2023 old_cleanups = make_cleanup (xfree, linebuffer);
2024 fputs_unfiltered (linebuffer, stream);
2025 do_cleanups (old_cleanups);
2029 vprintf_filtered (const char *format, va_list args)
2031 vfprintf_maybe_filtered (gdb_stdout, format, args, 1);
2035 vprintf_unfiltered (const char *format, va_list args)
2037 vfprintf_unfiltered (gdb_stdout, format, args);
2041 fprintf_filtered (struct ui_file * stream, const char *format,...)
2044 va_start (args, format);
2045 vfprintf_filtered (stream, format, args);
2050 fprintf_unfiltered (struct ui_file * stream, const char *format,...)
2053 va_start (args, format);
2054 vfprintf_unfiltered (stream, format, args);
2058 /* Like fprintf_filtered, but prints its result indented.
2059 Called as fprintfi_filtered (spaces, stream, format, ...); */
2062 fprintfi_filtered (int spaces, struct ui_file * stream, const char *format,...)
2065 va_start (args, format);
2066 print_spaces_filtered (spaces, stream);
2068 vfprintf_filtered (stream, format, args);
2074 printf_filtered (const char *format,...)
2077 va_start (args, format);
2078 vfprintf_filtered (gdb_stdout, format, args);
2084 printf_unfiltered (const char *format,...)
2087 va_start (args, format);
2088 vfprintf_unfiltered (gdb_stdout, format, args);
2092 /* Like printf_filtered, but prints it's result indented.
2093 Called as printfi_filtered (spaces, format, ...); */
2096 printfi_filtered (int spaces, const char *format,...)
2099 va_start (args, format);
2100 print_spaces_filtered (spaces, gdb_stdout);
2101 vfprintf_filtered (gdb_stdout, format, args);
2105 /* Easy -- but watch out!
2107 This routine is *not* a replacement for puts()! puts() appends a newline.
2108 This one doesn't, and had better not! */
2111 puts_filtered (const char *string)
2113 fputs_filtered (string, gdb_stdout);
2117 puts_unfiltered (const char *string)
2119 fputs_unfiltered (string, gdb_stdout);
2122 /* Return a pointer to N spaces and a null. The pointer is good
2123 until the next call to here. */
2128 static char *spaces = 0;
2129 static int max_spaces = -1;
2135 spaces = (char *) xmalloc (n + 1);
2136 for (t = spaces + n; t != spaces;)
2142 return spaces + max_spaces - n;
2145 /* Print N spaces. */
2147 print_spaces_filtered (int n, struct ui_file *stream)
2149 fputs_filtered (n_spaces (n), stream);
2152 /* C++ demangler stuff. */
2154 /* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
2155 LANG, using demangling args ARG_MODE, and print it filtered to STREAM.
2156 If the name is not mangled, or the language for the name is unknown, or
2157 demangling is off, the name is printed in its "raw" form. */
2160 fprintf_symbol_filtered (struct ui_file *stream, char *name, enum language lang,
2167 /* If user wants to see raw output, no problem. */
2170 fputs_filtered (name, stream);
2176 case language_cplus:
2177 demangled = cplus_demangle (name, arg_mode);
2180 demangled = cplus_demangle (name, arg_mode | DMGL_JAVA);
2182 case language_chill:
2183 demangled = chill_demangle (name);
2189 fputs_filtered (demangled ? demangled : name, stream);
2190 if (demangled != NULL)
2198 /* Do a strcmp() type operation on STRING1 and STRING2, ignoring any
2199 differences in whitespace. Returns 0 if they match, non-zero if they
2200 don't (slightly different than strcmp()'s range of return values).
2202 As an extra hack, string1=="FOO(ARGS)" matches string2=="FOO".
2203 This "feature" is useful when searching for matching C++ function names
2204 (such as if the user types 'break FOO', where FOO is a mangled C++
2208 strcmp_iw (const char *string1, const char *string2)
2210 while ((*string1 != '\0') && (*string2 != '\0'))
2212 while (isspace (*string1))
2216 while (isspace (*string2))
2220 if (*string1 != *string2)
2224 if (*string1 != '\0')
2230 return (*string1 != '\0' && *string1 != '(') || (*string2 != '\0');
2236 ** Answer whether string_to_compare is a full or partial match to
2237 ** template_string. The partial match must be in sequence starting
2241 subset_compare (char *string_to_compare, char *template_string)
2244 if (template_string != (char *) NULL && string_to_compare != (char *) NULL &&
2245 strlen (string_to_compare) <= strlen (template_string))
2246 match = (strncmp (template_string,
2248 strlen (string_to_compare)) == 0);
2255 static void pagination_on_command (char *arg, int from_tty);
2257 pagination_on_command (char *arg, int from_tty)
2259 pagination_enabled = 1;
2262 static void pagination_on_command (char *arg, int from_tty);
2264 pagination_off_command (char *arg, int from_tty)
2266 pagination_enabled = 0;
2271 initialize_utils (void)
2273 struct cmd_list_element *c;
2275 c = add_set_cmd ("width", class_support, var_uinteger,
2276 (char *) &chars_per_line,
2277 "Set number of characters gdb thinks are in a line.",
2279 add_show_from_set (c, &showlist);
2280 c->function.sfunc = set_width_command;
2283 (add_set_cmd ("height", class_support,
2284 var_uinteger, (char *) &lines_per_page,
2285 "Set number of lines gdb thinks are in a page.", &setlist),
2290 /* If the output is not a terminal, don't paginate it. */
2291 if (!ui_file_isatty (gdb_stdout))
2292 lines_per_page = UINT_MAX;
2294 set_width_command ((char *) NULL, 0, c);
2297 (add_set_cmd ("demangle", class_support, var_boolean,
2299 "Set demangling of encoded C++ names when displaying symbols.",
2304 (add_set_cmd ("pagination", class_support,
2305 var_boolean, (char *) &pagination_enabled,
2306 "Set state of pagination.", &setlist),
2311 add_com ("am", class_support, pagination_on_command,
2312 "Enable pagination");
2313 add_com ("sm", class_support, pagination_off_command,
2314 "Disable pagination");
2318 (add_set_cmd ("sevenbit-strings", class_support, var_boolean,
2319 (char *) &sevenbit_strings,
2320 "Set printing of 8-bit characters in strings as \\nnn.",
2325 (add_set_cmd ("asm-demangle", class_support, var_boolean,
2326 (char *) &asm_demangle,
2327 "Set demangling of C++ names in disassembly listings.",
2332 /* Machine specific function to handle SIGWINCH signal. */
2334 #ifdef SIGWINCH_HANDLER_BODY
2335 SIGWINCH_HANDLER_BODY
2338 /* Support for converting target fp numbers into host DOUBLEST format. */
2340 /* XXX - This code should really be in libiberty/floatformat.c, however
2341 configuration issues with libiberty made this very difficult to do in the
2344 #include "floatformat.h"
2345 #include <math.h> /* ldexp */
2347 /* The odds that CHAR_BIT will be anything but 8 are low enough that I'm not
2348 going to bother with trying to muck around with whether it is defined in
2349 a system header, what we do if not, etc. */
2350 #define FLOATFORMAT_CHAR_BIT 8
2352 static unsigned long get_field (unsigned char *,
2353 enum floatformat_byteorders,
2354 unsigned int, unsigned int, unsigned int);
2356 /* Extract a field which starts at START and is LEN bytes long. DATA and
2357 TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
2358 static unsigned long
2359 get_field (unsigned char *data, enum floatformat_byteorders order,
2360 unsigned int total_len, unsigned int start, unsigned int len)
2362 unsigned long result;
2363 unsigned int cur_byte;
2366 /* Start at the least significant part of the field. */
2367 if (order == floatformat_little || order == floatformat_littlebyte_bigword)
2369 /* We start counting from the other end (i.e, from the high bytes
2370 rather than the low bytes). As such, we need to be concerned
2371 with what happens if bit 0 doesn't start on a byte boundary.
2372 I.e, we need to properly handle the case where total_len is
2373 not evenly divisible by 8. So we compute ``excess'' which
2374 represents the number of bits from the end of our starting
2375 byte needed to get to bit 0. */
2376 int excess = FLOATFORMAT_CHAR_BIT - (total_len % FLOATFORMAT_CHAR_BIT);
2377 cur_byte = (total_len / FLOATFORMAT_CHAR_BIT)
2378 - ((start + len + excess) / FLOATFORMAT_CHAR_BIT);
2379 cur_bitshift = ((start + len + excess) % FLOATFORMAT_CHAR_BIT)
2380 - FLOATFORMAT_CHAR_BIT;
2384 cur_byte = (start + len) / FLOATFORMAT_CHAR_BIT;
2386 ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT;
2388 if (cur_bitshift > -FLOATFORMAT_CHAR_BIT)
2389 result = *(data + cur_byte) >> (-cur_bitshift);
2392 cur_bitshift += FLOATFORMAT_CHAR_BIT;
2393 if (order == floatformat_little || order == floatformat_littlebyte_bigword)
2398 /* Move towards the most significant part of the field. */
2399 while (cur_bitshift < len)
2401 result |= (unsigned long)*(data + cur_byte) << cur_bitshift;
2402 cur_bitshift += FLOATFORMAT_CHAR_BIT;
2403 if (order == floatformat_little || order == floatformat_littlebyte_bigword)
2408 if (len < sizeof(result) * FLOATFORMAT_CHAR_BIT)
2409 /* Mask out bits which are not part of the field */
2410 result &= ((1UL << len) - 1);
2414 /* Convert from FMT to a DOUBLEST.
2415 FROM is the address of the extended float.
2416 Store the DOUBLEST in *TO. */
2419 floatformat_to_doublest (const struct floatformat *fmt, char *from,
2422 unsigned char *ufrom = (unsigned char *) from;
2426 unsigned int mant_bits, mant_off;
2428 int special_exponent; /* It's a NaN, denorm or zero */
2430 /* If the mantissa bits are not contiguous from one end of the
2431 mantissa to the other, we need to make a private copy of the
2432 source bytes that is in the right order since the unpacking
2433 algorithm assumes that the bits are contiguous.
2435 Swap the bytes individually rather than accessing them through
2436 "long *" since we have no guarantee that they start on a long
2437 alignment, and also sizeof(long) for the host could be different
2438 than sizeof(long) for the target. FIXME: Assumes sizeof(long)
2439 for the target is 4. */
2441 if (fmt->byteorder == floatformat_littlebyte_bigword)
2443 static unsigned char *newfrom;
2444 unsigned char *swapin, *swapout;
2447 longswaps = fmt->totalsize / FLOATFORMAT_CHAR_BIT;
2450 if (newfrom == NULL)
2452 newfrom = (unsigned char *) xmalloc (fmt->totalsize);
2457 while (longswaps-- > 0)
2459 /* This is ugly, but efficient */
2460 *swapout++ = swapin[4];
2461 *swapout++ = swapin[5];
2462 *swapout++ = swapin[6];
2463 *swapout++ = swapin[7];
2464 *swapout++ = swapin[0];
2465 *swapout++ = swapin[1];
2466 *swapout++ = swapin[2];
2467 *swapout++ = swapin[3];
2472 exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize,
2473 fmt->exp_start, fmt->exp_len);
2474 /* Note that if exponent indicates a NaN, we can't really do anything useful
2475 (not knowing if the host has NaN's, or how to build one). So it will
2476 end up as an infinity or something close; that is OK. */
2478 mant_bits_left = fmt->man_len;
2479 mant_off = fmt->man_start;
2482 special_exponent = exponent == 0 || exponent == fmt->exp_nan;
2484 /* Don't bias NaNs. Use minimum exponent for denorms. For simplicity,
2485 we don't check for zero as the exponent doesn't matter. */
2486 if (!special_exponent)
2487 exponent -= fmt->exp_bias;
2488 else if (exponent == 0)
2489 exponent = 1 - fmt->exp_bias;
2491 /* Build the result algebraically. Might go infinite, underflow, etc;
2494 /* If this format uses a hidden bit, explicitly add it in now. Otherwise,
2495 increment the exponent by one to account for the integer bit. */
2497 if (!special_exponent)
2499 if (fmt->intbit == floatformat_intbit_no)
2500 dto = ldexp (1.0, exponent);
2505 while (mant_bits_left > 0)
2507 mant_bits = min (mant_bits_left, 32);
2509 mant = get_field (ufrom, fmt->byteorder, fmt->totalsize,
2510 mant_off, mant_bits);
2512 dto += ldexp ((double) mant, exponent - mant_bits);
2513 exponent -= mant_bits;
2514 mant_off += mant_bits;
2515 mant_bits_left -= mant_bits;
2518 /* Negate it if negative. */
2519 if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1))
2524 static void put_field (unsigned char *, enum floatformat_byteorders,
2526 unsigned int, unsigned int, unsigned long);
2528 /* Set a field which starts at START and is LEN bytes long. DATA and
2529 TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
2531 put_field (unsigned char *data, enum floatformat_byteorders order,
2532 unsigned int total_len, unsigned int start, unsigned int len,
2533 unsigned long stuff_to_put)
2535 unsigned int cur_byte;
2538 /* Start at the least significant part of the field. */
2539 if (order == floatformat_little || order == floatformat_littlebyte_bigword)
2541 int excess = FLOATFORMAT_CHAR_BIT - (total_len % FLOATFORMAT_CHAR_BIT);
2542 cur_byte = (total_len / FLOATFORMAT_CHAR_BIT)
2543 - ((start + len + excess) / FLOATFORMAT_CHAR_BIT);
2544 cur_bitshift = ((start + len + excess) % FLOATFORMAT_CHAR_BIT)
2545 - FLOATFORMAT_CHAR_BIT;
2549 cur_byte = (start + len) / FLOATFORMAT_CHAR_BIT;
2551 ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT;
2553 if (cur_bitshift > -FLOATFORMAT_CHAR_BIT)
2555 *(data + cur_byte) &=
2556 ~(((1 << ((start + len) % FLOATFORMAT_CHAR_BIT)) - 1)
2557 << (-cur_bitshift));
2558 *(data + cur_byte) |=
2559 (stuff_to_put & ((1 << FLOATFORMAT_CHAR_BIT) - 1)) << (-cur_bitshift);
2561 cur_bitshift += FLOATFORMAT_CHAR_BIT;
2562 if (order == floatformat_little || order == floatformat_littlebyte_bigword)
2567 /* Move towards the most significant part of the field. */
2568 while (cur_bitshift < len)
2570 if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT)
2572 /* This is the last byte. */
2573 *(data + cur_byte) &=
2574 ~((1 << (len - cur_bitshift)) - 1);
2575 *(data + cur_byte) |= (stuff_to_put >> cur_bitshift);
2578 *(data + cur_byte) = ((stuff_to_put >> cur_bitshift)
2579 & ((1 << FLOATFORMAT_CHAR_BIT) - 1));
2580 cur_bitshift += FLOATFORMAT_CHAR_BIT;
2581 if (order == floatformat_little || order == floatformat_littlebyte_bigword)
2588 #ifdef HAVE_LONG_DOUBLE
2589 /* Return the fractional part of VALUE, and put the exponent of VALUE in *EPTR.
2590 The range of the returned value is >= 0.5 and < 1.0. This is equivalent to
2591 frexp, but operates on the long double data type. */
2593 static long double ldfrexp (long double value, int *eptr);
2596 ldfrexp (long double value, int *eptr)
2601 /* Unfortunately, there are no portable functions for extracting the exponent
2602 of a long double, so we have to do it iteratively by multiplying or dividing
2603 by two until the fraction is between 0.5 and 1.0. */
2611 if (value >= tmp) /* Value >= 1.0 */
2612 while (value >= tmp)
2617 else if (value != 0.0l) /* Value < 1.0 and > 0.0 */
2631 #endif /* HAVE_LONG_DOUBLE */
2634 /* The converse: convert the DOUBLEST *FROM to an extended float
2635 and store where TO points. Neither FROM nor TO have any alignment
2639 floatformat_from_doublest (CONST struct floatformat *fmt, DOUBLEST *from,
2645 unsigned int mant_bits, mant_off;
2647 unsigned char *uto = (unsigned char *) to;
2649 memcpy (&dfrom, from, sizeof (dfrom));
2650 memset (uto, 0, (fmt->totalsize + FLOATFORMAT_CHAR_BIT - 1)
2651 / FLOATFORMAT_CHAR_BIT);
2653 return; /* Result is zero */
2654 if (dfrom != dfrom) /* Result is NaN */
2657 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start,
2658 fmt->exp_len, fmt->exp_nan);
2659 /* Be sure it's not infinity, but NaN value is irrel */
2660 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->man_start,
2665 /* If negative, set the sign bit. */
2668 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1, 1);
2672 if (dfrom + dfrom == dfrom && dfrom != 0.0) /* Result is Infinity */
2674 /* Infinity exponent is same as NaN's. */
2675 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start,
2676 fmt->exp_len, fmt->exp_nan);
2677 /* Infinity mantissa is all zeroes. */
2678 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->man_start,
2683 #ifdef HAVE_LONG_DOUBLE
2684 mant = ldfrexp (dfrom, &exponent);
2686 mant = frexp (dfrom, &exponent);
2689 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, fmt->exp_len,
2690 exponent + fmt->exp_bias - 1);
2692 mant_bits_left = fmt->man_len;
2693 mant_off = fmt->man_start;
2694 while (mant_bits_left > 0)
2696 unsigned long mant_long;
2697 mant_bits = mant_bits_left < 32 ? mant_bits_left : 32;
2699 mant *= 4294967296.0;
2700 mant_long = ((unsigned long) mant) & 0xffffffffL;
2703 /* If the integer bit is implicit, then we need to discard it.
2704 If we are discarding a zero, we should be (but are not) creating
2705 a denormalized number which means adjusting the exponent
2707 if (mant_bits_left == fmt->man_len
2708 && fmt->intbit == floatformat_intbit_no)
2711 mant_long &= 0xffffffffL;
2717 /* The bits we want are in the most significant MANT_BITS bits of
2718 mant_long. Move them to the least significant. */
2719 mant_long >>= 32 - mant_bits;
2722 put_field (uto, fmt->byteorder, fmt->totalsize,
2723 mant_off, mant_bits, mant_long);
2724 mant_off += mant_bits;
2725 mant_bits_left -= mant_bits;
2727 if (fmt->byteorder == floatformat_littlebyte_bigword)
2730 unsigned char *swaplow = uto;
2731 unsigned char *swaphigh = uto + 4;
2734 for (count = 0; count < 4; count++)
2737 *swaplow++ = *swaphigh;
2743 /* print routines to handle variable size regs, etc. */
2745 /* temporary storage using circular buffer */
2751 static char buf[NUMCELLS][CELLSIZE];
2752 static int cell = 0;
2753 if (++cell >= NUMCELLS)
2761 return (TARGET_ADDR_BIT / 8 * 2);
2765 paddr (CORE_ADDR addr)
2767 return phex (addr, TARGET_ADDR_BIT / 8);
2771 paddr_nz (CORE_ADDR addr)
2773 return phex_nz (addr, TARGET_ADDR_BIT / 8);
2777 decimal2str (char *paddr_str, char *sign, ULONGEST addr)
2779 /* steal code from valprint.c:print_decimal(). Should this worry
2780 about the real size of addr as the above does? */
2781 unsigned long temp[3];
2785 temp[i] = addr % (1000 * 1000 * 1000);
2786 addr /= (1000 * 1000 * 1000);
2789 while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
2793 sprintf (paddr_str, "%s%lu",
2797 sprintf (paddr_str, "%s%lu%09lu",
2798 sign, temp[1], temp[0]);
2801 sprintf (paddr_str, "%s%lu%09lu%09lu",
2802 sign, temp[2], temp[1], temp[0]);
2805 internal_error (__FILE__, __LINE__, "failed internal consistency check");
2810 paddr_u (CORE_ADDR addr)
2812 char *paddr_str = get_cell ();
2813 decimal2str (paddr_str, "", addr);
2818 paddr_d (LONGEST addr)
2820 char *paddr_str = get_cell ();
2822 decimal2str (paddr_str, "-", -addr);
2824 decimal2str (paddr_str, "", addr);
2828 /* eliminate warning from compiler on 32-bit systems */
2829 static int thirty_two = 32;
2832 phex (ULONGEST l, int sizeof_l)
2834 char *str = get_cell ();
2838 sprintf (str, "%08lx%08lx",
2839 (unsigned long) (l >> thirty_two),
2840 (unsigned long) (l & 0xffffffff));
2843 sprintf (str, "%08lx", (unsigned long) l);
2846 sprintf (str, "%04x", (unsigned short) (l & 0xffff));
2849 phex (l, sizeof (l));
2856 phex_nz (ULONGEST l, int sizeof_l)
2858 char *str = get_cell ();
2863 unsigned long high = (unsigned long) (l >> thirty_two);
2865 sprintf (str, "%lx", (unsigned long) (l & 0xffffffff));
2867 sprintf (str, "%lx%08lx",
2868 high, (unsigned long) (l & 0xffffffff));
2872 sprintf (str, "%lx", (unsigned long) l);
2875 sprintf (str, "%x", (unsigned short) (l & 0xffff));
2878 phex_nz (l, sizeof (l));
2885 /* Convert to / from the hosts pointer to GDB's internal CORE_ADDR
2886 using the target's conversion routines. */
2888 host_pointer_to_address (void *ptr)
2890 if (sizeof (ptr) != TYPE_LENGTH (builtin_type_ptr))
2891 internal_error (__FILE__, __LINE__,
2892 "core_addr_to_void_ptr: bad cast");
2893 return POINTER_TO_ADDRESS (builtin_type_ptr, &ptr);
2897 address_to_host_pointer (CORE_ADDR addr)
2900 if (sizeof (ptr) != TYPE_LENGTH (builtin_type_ptr))
2901 internal_error (__FILE__, __LINE__,
2902 "core_addr_to_void_ptr: bad cast");
2903 ADDRESS_TO_POINTER (builtin_type_ptr, &ptr, addr);