]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/utils.c
PowerPC64 call lacks nop error
[thirdparty/binutils-gdb.git] / gdb / utils.c
CommitLineData
c906108c 1/* General utility routines for GDB, the GNU debugger.
1bac305b 2
ecd75fc8 3 Copyright (C) 1986-2014 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
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
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
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.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 19
4e8f7a8b 20#include "defs.h"
5a56e9c5 21#include "dyn-string.h"
4e8f7a8b 22#include <ctype.h>
0b6cb71e 23#include "gdb_wait.h"
4e8f7a8b 24#include "event-top.h"
60250e8b 25#include "exceptions.h"
95e54da7 26#include "gdbthread.h"
202cbf1c 27#include "fnmatch.h"
cbb099e8 28#include "gdb_bfd.h"
7991dee7
JK
29#ifdef HAVE_SYS_RESOURCE_H
30#include <sys/resource.h>
31#endif /* HAVE_SYS_RESOURCE_H */
4e8f7a8b 32
6a83354a
AC
33#ifdef TUI
34#include "tui/tui.h" /* For tui_get_command_dimension. */
35#endif
36
9d271fd8
AC
37#ifdef __GO32__
38#include <pc.h>
39#endif
40
042be3a9 41#include <signal.h>
0a1c4d10 42#include "timeval-utils.h"
c906108c
SS
43#include "gdbcmd.h"
44#include "serial.h"
45#include "bfd.h"
46#include "target.h"
50f182aa 47#include "gdb-demangle.h"
c906108c
SS
48#include "expression.h"
49#include "language.h"
234b45d4 50#include "charset.h"
c906108c 51#include "annotate.h"
303c8ebd 52#include "filenames.h"
7b90c3f9 53#include "symfile.h"
ae5a43e0 54#include "gdb_obstack.h"
9544c605 55#include "gdbcore.h"
698ba934 56#include "top.h"
7c953934 57#include "main.h"
cb08cc53 58#include "solist.h"
c906108c 59
8731e58e 60#include "inferior.h" /* for signed_pointer_to_address */
ac2e2ef7 61
3b78cdbb 62#include "gdb_curses.h"
020cc13c 63
dbda9972 64#include "readline/readline.h"
c906108c 65
75feb17d
DJ
66#include <sys/time.h>
67#include <time.h>
68
8626589c 69#include "gdb_usleep.h"
390a8aca 70#include "interps.h"
dc92e161 71#include "gdb_regex.h"
8626589c 72
a3828db0 73#if !HAVE_DECL_MALLOC
5ac79d78 74extern PTR malloc (); /* ARI: PTR */
3c37485b 75#endif
a3828db0 76#if !HAVE_DECL_REALLOC
5ac79d78 77extern PTR realloc (); /* ARI: PTR */
0e52036f 78#endif
a3828db0 79#if !HAVE_DECL_FREE
81b8eb80
AC
80extern void free ();
81#endif
81b8eb80 82
9a4105ab 83void (*deprecated_error_begin_hook) (void);
c906108c
SS
84
85/* Prototypes for local functions */
86
d9fcf2fb 87static void vfprintf_maybe_filtered (struct ui_file *, const char *,
a0b31db1 88 va_list, int) ATTRIBUTE_PRINTF (2, 0);
c906108c 89
d9fcf2fb 90static void fputs_maybe_filtered (const char *, struct ui_file *, int);
c906108c 91
a14ed312 92static void prompt_for_continue (void);
c906108c 93
eb0d3137 94static void set_screen_size (void);
a14ed312 95static void set_width (void);
c906108c 96
260c0b2a
DE
97/* Time spent in prompt_for_continue in the currently executing command
98 waiting for user to respond.
99 Initialized in make_command_stats_cleanup.
100 Modified in prompt_for_continue and defaulted_query.
101 Used in report_command_stats. */
102
103static struct timeval prompt_for_continue_wait_time;
104
75feb17d
DJ
105/* A flag indicating whether to timestamp debugging messages. */
106
107static int debug_timestamp = 0;
108
581e13c1 109/* Nonzero if we have job control. */
c906108c
SS
110
111int job_control;
112
c906108c
SS
113/* Nonzero means quit immediately if Control-C is typed now, rather
114 than waiting until QUIT is executed. Be careful in setting this;
115 code which executes with immediate_quit set has to be very careful
116 about being able to deal with being interrupted at any time. It is
117 almost always better to use QUIT; the only exception I can think of
118 is being able to quit out of a system call (using EINTR loses if
119 the SIGINT happens between the previous QUIT and the system call).
120 To immediately quit in the case in which a SIGINT happens between
121 the previous QUIT and setting immediate_quit (desirable anytime we
122 expect to block), call QUIT after setting immediate_quit. */
123
124int immediate_quit;
125
c906108c
SS
126/* Nonzero means that strings with character values >0x7F should be printed
127 as octal escapes. Zero means just print the value (e.g. it's an
128 international character, and the terminal or window can cope.) */
129
130int sevenbit_strings = 0;
920d2a44
AC
131static void
132show_sevenbit_strings (struct ui_file *file, int from_tty,
133 struct cmd_list_element *c, const char *value)
134{
3e43a32a
MS
135 fprintf_filtered (file, _("Printing of 8-bit characters "
136 "in strings as \\nnn is %s.\n"),
920d2a44
AC
137 value);
138}
c906108c 139
c906108c
SS
140/* String to be printed before warning messages, if any. */
141
142char *warning_pre_print = "\nwarning: ";
143
144int pagination_enabled = 1;
920d2a44
AC
145static void
146show_pagination_enabled (struct ui_file *file, int from_tty,
147 struct cmd_list_element *c, const char *value)
148{
149 fprintf_filtered (file, _("State of pagination is %s.\n"), value);
150}
151
c906108c 152\f
c27f5738 153/* Cleanup utilities.
c5aa993b 154
c27f5738
DE
155 These are not defined in cleanups.c (nor declared in cleanups.h)
156 because while they use the "cleanup API" they are not part of the
157 "cleanup API". */
7a292a7a 158
7a292a7a 159static void
fba45db2 160do_freeargv (void *arg)
7a292a7a 161{
c5aa993b 162 freeargv ((char **) arg);
7a292a7a
SS
163}
164
165struct cleanup *
fba45db2 166make_cleanup_freeargv (char **arg)
7a292a7a 167{
e0088cfd 168 return make_cleanup (do_freeargv, arg);
7a292a7a
SS
169}
170
5a56e9c5
DE
171static void
172do_dyn_string_delete (void *arg)
173{
174 dyn_string_delete ((dyn_string_t) arg);
175}
176
177struct cleanup *
178make_cleanup_dyn_string_delete (dyn_string_t arg)
179{
e0088cfd 180 return make_cleanup (do_dyn_string_delete, arg);
5a56e9c5
DE
181}
182
5c65bbb6
AC
183static void
184do_bfd_close_cleanup (void *arg)
185{
cbb099e8 186 gdb_bfd_unref (arg);
5c65bbb6
AC
187}
188
189struct cleanup *
f9a062ff 190make_cleanup_bfd_unref (bfd *abfd)
5c65bbb6
AC
191{
192 return make_cleanup (do_bfd_close_cleanup, abfd);
193}
194
f5ff8c83
AC
195static void
196do_close_cleanup (void *arg)
197{
f042532c 198 int *fd = arg;
e0627e85 199
f042532c 200 close (*fd);
f5ff8c83
AC
201}
202
203struct cleanup *
204make_cleanup_close (int fd)
205{
f042532c 206 int *saved_fd = xmalloc (sizeof (fd));
e0627e85 207
f042532c 208 *saved_fd = fd;
a05016c0 209 return make_cleanup_dtor (do_close_cleanup, saved_fd, xfree);
f5ff8c83
AC
210}
211
7c8a8b04
TT
212/* Helper function which does the work for make_cleanup_fclose. */
213
214static void
215do_fclose_cleanup (void *arg)
216{
c02866a0 217 FILE *file = arg;
e0627e85 218
c02866a0 219 fclose (file);
7c8a8b04
TT
220}
221
222/* Return a new cleanup that closes FILE. */
223
224struct cleanup *
225make_cleanup_fclose (FILE *file)
226{
227 return make_cleanup (do_fclose_cleanup, file);
228}
229
16ad9370
TT
230/* Helper function which does the work for make_cleanup_obstack_free. */
231
232static void
233do_obstack_free (void *arg)
234{
235 struct obstack *ob = arg;
e0627e85 236
16ad9370
TT
237 obstack_free (ob, NULL);
238}
239
240/* Return a new cleanup that frees OBSTACK. */
241
242struct cleanup *
243make_cleanup_obstack_free (struct obstack *obstack)
244{
245 return make_cleanup (do_obstack_free, obstack);
246}
247
11cf8741 248static void
d9fcf2fb 249do_ui_file_delete (void *arg)
11cf8741 250{
d9fcf2fb 251 ui_file_delete (arg);
11cf8741
JM
252}
253
254struct cleanup *
d9fcf2fb 255make_cleanup_ui_file_delete (struct ui_file *arg)
11cf8741 256{
e0088cfd 257 return make_cleanup (do_ui_file_delete, arg);
11cf8741
JM
258}
259
8d4d924b
JK
260/* Helper function for make_cleanup_ui_out_redirect_pop. */
261
262static void
263do_ui_out_redirect_pop (void *arg)
264{
265 struct ui_out *uiout = arg;
266
267 if (ui_out_redirect (uiout, NULL) < 0)
268 warning (_("Cannot restore redirection of the current output protocol"));
269}
270
271/* Return a new cleanup that pops the last redirection by ui_out_redirect
272 with NULL parameter. */
273
274struct cleanup *
275make_cleanup_ui_out_redirect_pop (struct ui_out *uiout)
276{
e0088cfd 277 return make_cleanup (do_ui_out_redirect_pop, uiout);
8d4d924b
JK
278}
279
7b90c3f9
JB
280static void
281do_free_section_addr_info (void *arg)
282{
283 free_section_addr_info (arg);
284}
285
286struct cleanup *
287make_cleanup_free_section_addr_info (struct section_addr_info *addrs)
288{
e0088cfd 289 return make_cleanup (do_free_section_addr_info, addrs);
7b90c3f9
JB
290}
291
0b080f59
VP
292struct restore_integer_closure
293{
294 int *variable;
295 int value;
296};
297
298static void
299restore_integer (void *p)
300{
301 struct restore_integer_closure *closure = p;
e0627e85 302
0b080f59
VP
303 *(closure->variable) = closure->value;
304}
7b90c3f9 305
3e43a32a
MS
306/* Remember the current value of *VARIABLE and make it restored when
307 the cleanup is run. */
5da1313b 308
c906108c 309struct cleanup *
0b080f59
VP
310make_cleanup_restore_integer (int *variable)
311{
312 struct restore_integer_closure *c =
313 xmalloc (sizeof (struct restore_integer_closure));
e0627e85 314
0b080f59
VP
315 c->variable = variable;
316 c->value = *variable;
317
e0088cfd 318 return make_cleanup_dtor (restore_integer, (void *) c, xfree);
0b080f59
VP
319}
320
3e43a32a
MS
321/* Remember the current value of *VARIABLE and make it restored when
322 the cleanup is run. */
5da1313b
JK
323
324struct cleanup *
325make_cleanup_restore_uinteger (unsigned int *variable)
326{
327 return make_cleanup_restore_integer ((int *) variable);
328}
329
c0edd9ed
JK
330/* Helper for make_cleanup_unpush_target. */
331
332static void
333do_unpush_target (void *arg)
334{
335 struct target_ops *ops = arg;
336
337 unpush_target (ops);
338}
339
340/* Return a new cleanup that unpushes OPS. */
341
342struct cleanup *
343make_cleanup_unpush_target (struct target_ops *ops)
344{
e0088cfd 345 return make_cleanup (do_unpush_target, ops);
c0edd9ed
JK
346}
347
8e3b41a9
JK
348/* Helper for make_cleanup_htab_delete compile time checking the types. */
349
350static void
351do_htab_delete_cleanup (void *htab_voidp)
352{
353 htab_t htab = htab_voidp;
354
355 htab_delete (htab);
356}
357
358/* Return a new cleanup that deletes HTAB. */
359
360struct cleanup *
361make_cleanup_htab_delete (htab_t htab)
362{
363 return make_cleanup (do_htab_delete_cleanup, htab);
364}
365
5da1313b
JK
366struct restore_ui_file_closure
367{
368 struct ui_file **variable;
369 struct ui_file *value;
370};
371
372static void
373do_restore_ui_file (void *p)
374{
375 struct restore_ui_file_closure *closure = p;
376
377 *(closure->variable) = closure->value;
378}
379
380/* Remember the current value of *VARIABLE and make it restored when
381 the cleanup is run. */
382
383struct cleanup *
384make_cleanup_restore_ui_file (struct ui_file **variable)
385{
386 struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure);
387
388 c->variable = variable;
389 c->value = *variable;
390
391 return make_cleanup_dtor (do_restore_ui_file, (void *) c, xfree);
392}
393
028d0ed5
TJB
394/* Helper for make_cleanup_value_free_to_mark. */
395
396static void
397do_value_free_to_mark (void *value)
398{
399 value_free_to_mark ((struct value *) value);
400}
401
402/* Free all values allocated since MARK was obtained by value_mark
403 (except for those released) when the cleanup is run. */
404
405struct cleanup *
406make_cleanup_value_free_to_mark (struct value *mark)
407{
e0088cfd 408 return make_cleanup (do_value_free_to_mark, mark);
028d0ed5
TJB
409}
410
72fc29ff
TT
411/* Helper for make_cleanup_value_free. */
412
413static void
414do_value_free (void *value)
415{
416 value_free (value);
417}
418
419/* Free VALUE. */
420
421struct cleanup *
422make_cleanup_value_free (struct value *value)
423{
e0088cfd 424 return make_cleanup (do_value_free, value);
72fc29ff
TT
425}
426
cb08cc53
JK
427/* Helper for make_cleanup_free_so. */
428
429static void
430do_free_so (void *arg)
431{
432 struct so_list *so = arg;
433
434 free_so (so);
435}
436
437/* Make cleanup handler calling free_so for SO. */
438
439struct cleanup *
440make_cleanup_free_so (struct so_list *so)
441{
e0088cfd 442 return make_cleanup (do_free_so, so);
cb08cc53
JK
443}
444
5b12a61c
JK
445/* Helper for make_cleanup_restore_current_language. */
446
447static void
448do_restore_current_language (void *p)
449{
450 enum language saved_lang = (uintptr_t) p;
451
452 set_language (saved_lang);
453}
454
455/* Remember the current value of CURRENT_LANGUAGE and make it restored when
456 the cleanup is run. */
457
458struct cleanup *
459make_cleanup_restore_current_language (void)
460{
461 enum language saved_lang = current_language->la_language;
462
463 return make_cleanup (do_restore_current_language,
464 (void *) (uintptr_t) saved_lang);
465}
466
410a0ff2
SDJ
467/* Helper function for make_cleanup_clear_parser_state. */
468
469static void
470do_clear_parser_state (void *ptr)
471{
472 struct parser_state **p = (struct parser_state **) ptr;
473
474 *p = NULL;
475}
476
477/* Clean (i.e., set to NULL) the parser state variable P. */
478
479struct cleanup *
480make_cleanup_clear_parser_state (struct parser_state **p)
481{
482 return make_cleanup (do_clear_parser_state, (void *) p);
483}
484
c906108c
SS
485/* This function is useful for cleanups.
486 Do
487
c5aa993b
JM
488 foo = xmalloc (...);
489 old_chain = make_cleanup (free_current_contents, &foo);
c906108c
SS
490
491 to arrange to free the object thus allocated. */
492
493void
2f9429ae 494free_current_contents (void *ptr)
c906108c 495{
2f9429ae 496 void **location = ptr;
e0627e85 497
e2f9c474 498 if (location == NULL)
8e65ff28 499 internal_error (__FILE__, __LINE__,
e2e0b3e5 500 _("free_current_contents: NULL pointer"));
2f9429ae 501 if (*location != NULL)
e2f9c474 502 {
b8c9b27d 503 xfree (*location);
e2f9c474
AC
504 *location = NULL;
505 }
c906108c 506}
c906108c 507\f
c5aa993b 508
8731e58e 509
f5a96129
AC
510/* Print a warning message. The first argument STRING is the warning
511 message, used as an fprintf format string, the second is the
512 va_list of arguments for that string. A warning is unfiltered (not
513 paginated) so that the user does not need to page through each
514 screen full of warnings when there are lots of them. */
c906108c
SS
515
516void
f5a96129 517vwarning (const char *string, va_list args)
c906108c 518{
9a4105ab
AC
519 if (deprecated_warning_hook)
520 (*deprecated_warning_hook) (string, args);
f5a96129
AC
521 else
522 {
523 target_terminal_ours ();
581e13c1 524 wrap_here (""); /* Force out any buffered output. */
f5a96129
AC
525 gdb_flush (gdb_stdout);
526 if (warning_pre_print)
306d9ac5 527 fputs_unfiltered (warning_pre_print, gdb_stderr);
f5a96129
AC
528 vfprintf_unfiltered (gdb_stderr, string, args);
529 fprintf_unfiltered (gdb_stderr, "\n");
f5a96129 530 }
c906108c
SS
531}
532
c906108c
SS
533/* Print an error message and return to command level.
534 The first argument STRING is the error message, used as a fprintf string,
535 and the remaining args are passed as arguments to it. */
536
c25c4a8b 537void
4ce44c66
JM
538verror (const char *string, va_list args)
539{
6b1b7650 540 throw_verror (GENERIC_ERROR, string, args);
4ce44c66
JM
541}
542
c25c4a8b 543void
d75e3c94 544error_stream (struct ui_file *stream)
2acceee2 545{
759ef836 546 char *message = ui_file_xstrdup (stream, NULL);
e0627e85 547
6b1b7650 548 make_cleanup (xfree, message);
8a3fe4f8 549 error (("%s"), message);
2acceee2 550}
c906108c 551
7991dee7
JK
552/* Dump core trying to increase the core soft limit to hard limit first. */
553
eae7090b 554void
7991dee7
JK
555dump_core (void)
556{
557#ifdef HAVE_SETRLIMIT
558 struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY };
559
560 setrlimit (RLIMIT_CORE, &rlim);
561#endif /* HAVE_SETRLIMIT */
562
563 abort (); /* NOTE: GDB has only three calls to abort(). */
564}
565
3e43a32a 566/* Check whether GDB will be able to dump core using the dump_core
eae7090b
GB
567 function. Returns zero if GDB cannot or should not dump core.
568 If LIMIT_KIND is LIMIT_CUR the user's soft limit will be respected.
569 If LIMIT_KIND is LIMIT_MAX only the hard limit will be respected. */
7991dee7 570
eae7090b
GB
571int
572can_dump_core (enum resource_limit_kind limit_kind)
7991dee7
JK
573{
574#ifdef HAVE_GETRLIMIT
575 struct rlimit rlim;
576
577 /* Be quiet and assume we can dump if an error is returned. */
578 if (getrlimit (RLIMIT_CORE, &rlim) != 0)
579 return 1;
580
eae7090b 581 switch (limit_kind)
7991dee7 582 {
eae7090b
GB
583 case LIMIT_CUR:
584 if (rlim.rlim_cur == 0)
585 return 0;
586
587 case LIMIT_MAX:
588 if (rlim.rlim_max == 0)
589 return 0;
7991dee7
JK
590 }
591#endif /* HAVE_GETRLIMIT */
592
593 return 1;
594}
595
eae7090b
GB
596/* Print a warning that we cannot dump core. */
597
598void
599warn_cant_dump_core (const char *reason)
600{
601 fprintf_unfiltered (gdb_stderr,
602 _("%s\nUnable to dump core, use `ulimit -c"
603 " unlimited' before executing GDB next time.\n"),
604 reason);
605}
606
607/* Check whether GDB will be able to dump core using the dump_core
608 function, and print a warning if we cannot. */
609
610static int
611can_dump_core_warn (enum resource_limit_kind limit_kind,
612 const char *reason)
613{
614 int core_dump_allowed = can_dump_core (limit_kind);
615
616 if (!core_dump_allowed)
617 warn_cant_dump_core (reason);
618
619 return core_dump_allowed;
620}
621
3c16cced
PA
622/* Allow the user to configure the debugger behavior with respect to
623 what to do when an internal problem is detected. */
624
625const char internal_problem_ask[] = "ask";
626const char internal_problem_yes[] = "yes";
627const char internal_problem_no[] = "no";
40478521 628static const char *const internal_problem_modes[] =
3c16cced
PA
629{
630 internal_problem_ask,
631 internal_problem_yes,
632 internal_problem_no,
633 NULL
634};
3c16cced 635
581e13c1 636/* Print a message reporting an internal error/warning. Ask the user
dec43320
AC
637 if they want to continue, dump core, or just exit. Return
638 something to indicate a quit. */
c906108c 639
dec43320 640struct internal_problem
c906108c 641{
dec43320 642 const char *name;
57fcfb1b 643 int user_settable_should_quit;
3c16cced 644 const char *should_quit;
57fcfb1b 645 int user_settable_should_dump_core;
3c16cced 646 const char *should_dump_core;
dec43320
AC
647};
648
649/* Report a problem, internal to GDB, to the user. Once the problem
650 has been reported, and assuming GDB didn't quit, the caller can
651 either allow execution to resume or throw an error. */
652
a0b31db1 653static void ATTRIBUTE_PRINTF (4, 0)
dec43320 654internal_vproblem (struct internal_problem *problem,
8731e58e 655 const char *file, int line, const char *fmt, va_list ap)
dec43320 656{
dec43320 657 static int dejavu;
375fc983 658 int quit_p;
7be570e7 659 int dump_core_p;
714b1282 660 char *reason;
48be7c1b 661 struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
c906108c 662
dec43320 663 /* Don't allow infinite error/warning recursion. */
714b1282
AC
664 {
665 static char msg[] = "Recursive internal problem.\n";
5d502164 666
714b1282
AC
667 switch (dejavu)
668 {
669 case 0:
670 dejavu = 1;
671 break;
672 case 1:
673 dejavu = 2;
674 fputs_unfiltered (msg, gdb_stderr);
7991dee7 675 abort (); /* NOTE: GDB has only three calls to abort(). */
714b1282
AC
676 default:
677 dejavu = 3;
bf1d7d9c
JB
678 /* Newer GLIBC versions put the warn_unused_result attribute
679 on write, but this is one of those rare cases where
680 ignoring the return value is correct. Casting to (void)
681 does not fix this problem. This is the solution suggested
682 at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509. */
683 if (write (STDERR_FILENO, msg, sizeof (msg)) != sizeof (msg))
7991dee7 684 abort (); /* NOTE: GDB has only three calls to abort(). */
714b1282
AC
685 exit (1);
686 }
687 }
c906108c 688
dec43320 689 /* Try to get the message out and at the start of a new line. */
4261bedc 690 target_terminal_ours ();
dec43320
AC
691 begin_line ();
692
714b1282
AC
693 /* Create a string containing the full error/warning message. Need
694 to call query with this full string, as otherwize the reason
695 (error/warning) and question become separated. Format using a
696 style similar to a compiler error message. Include extra detail
697 so that the user knows that they are living on the edge. */
698 {
699 char *msg;
5d502164 700
e623b504 701 msg = xstrvprintf (fmt, ap);
3e43a32a
MS
702 reason = xstrprintf ("%s:%d: %s: %s\n"
703 "A problem internal to GDB has been detected,\n"
704 "further debugging may prove unreliable.",
705 file, line, problem->name, msg);
714b1282
AC
706 xfree (msg);
707 make_cleanup (xfree, reason);
708 }
7be570e7 709
196a707b
GB
710 /* Emit the message unless query will emit it below. */
711 if (problem->should_quit != internal_problem_ask || !confirm)
712 fprintf_unfiltered (gdb_stderr, "%s\n", reason);
713
3c16cced 714 if (problem->should_quit == internal_problem_ask)
dec43320 715 {
dec43320 716 /* Default (yes/batch case) is to quit GDB. When in batch mode
3c16cced
PA
717 this lessens the likelihood of GDB going into an infinite
718 loop. */
e360902b 719 if (!confirm)
196a707b 720 quit_p = 1;
26bb68be
PP
721 else
722 quit_p = query (_("%s\nQuit this debugging session? "), reason);
dec43320 723 }
3c16cced
PA
724 else if (problem->should_quit == internal_problem_yes)
725 quit_p = 1;
726 else if (problem->should_quit == internal_problem_no)
727 quit_p = 0;
728 else
729 internal_error (__FILE__, __LINE__, _("bad switch"));
dec43320 730
add6c04d
GB
731 fputs_unfiltered (_("\nThis is a bug, please report it."), gdb_stderr);
732 if (REPORT_BUGS_TO[0])
733 fprintf_unfiltered (gdb_stderr, _(" For instructions, see:\n%s."),
734 REPORT_BUGS_TO);
735 fputs_unfiltered ("\n\n", gdb_stderr);
736
3c16cced 737 if (problem->should_dump_core == internal_problem_ask)
dec43320 738 {
eae7090b 739 if (!can_dump_core_warn (LIMIT_MAX, reason))
7991dee7
JK
740 dump_core_p = 0;
741 else
742 {
743 /* Default (yes/batch case) is to dump core. This leaves a GDB
744 `dropping' so that it is easier to see that something went
745 wrong in GDB. */
746 dump_core_p = query (_("%s\nCreate a core file of GDB? "), reason);
747 }
dec43320 748 }
3c16cced 749 else if (problem->should_dump_core == internal_problem_yes)
eae7090b 750 dump_core_p = can_dump_core_warn (LIMIT_MAX, reason);
3c16cced
PA
751 else if (problem->should_dump_core == internal_problem_no)
752 dump_core_p = 0;
753 else
754 internal_error (__FILE__, __LINE__, _("bad switch"));
7be570e7 755
375fc983 756 if (quit_p)
7be570e7
JM
757 {
758 if (dump_core_p)
7991dee7 759 dump_core ();
375fc983
AC
760 else
761 exit (1);
7be570e7
JM
762 }
763 else
764 {
765 if (dump_core_p)
375fc983 766 {
9b265ec2 767#ifdef HAVE_WORKING_FORK
375fc983 768 if (fork () == 0)
7991dee7 769 dump_core ();
9b265ec2 770#endif
375fc983 771 }
7be570e7 772 }
96baa820
JM
773
774 dejavu = 0;
48be7c1b 775 do_cleanups (cleanup);
dec43320
AC
776}
777
778static struct internal_problem internal_error_problem = {
57fcfb1b 779 "internal-error", 1, internal_problem_ask, 1, internal_problem_ask
dec43320
AC
780};
781
c25c4a8b 782void
8731e58e 783internal_verror (const char *file, int line, const char *fmt, va_list ap)
dec43320
AC
784{
785 internal_vproblem (&internal_error_problem, file, line, fmt, ap);
2c51604d 786 throw_quit (_("Command aborted."));
c906108c
SS
787}
788
dec43320 789static struct internal_problem internal_warning_problem = {
57fcfb1b 790 "internal-warning", 1, internal_problem_ask, 1, internal_problem_ask
dec43320
AC
791};
792
793void
8731e58e 794internal_vwarning (const char *file, int line, const char *fmt, va_list ap)
dec43320
AC
795{
796 internal_vproblem (&internal_warning_problem, file, line, fmt, ap);
797}
798
799void
800internal_warning (const char *file, int line, const char *string, ...)
801{
802 va_list ap;
e0627e85 803
dec43320
AC
804 va_start (ap, string);
805 internal_vwarning (file, line, string, ap);
806 va_end (ap);
807}
808
57fcfb1b
GB
809static struct internal_problem demangler_warning_problem = {
810 "demangler-warning", 1, internal_problem_ask, 0, internal_problem_no
811};
812
813void
814demangler_vwarning (const char *file, int line, const char *fmt, va_list ap)
815{
816 internal_vproblem (&demangler_warning_problem, file, line, fmt, ap);
817}
818
819void
820demangler_warning (const char *file, int line, const char *string, ...)
821{
822 va_list ap;
823
824 va_start (ap, string);
825 demangler_vwarning (file, line, string, ap);
826 va_end (ap);
827}
828
3c16cced
PA
829/* Dummy functions to keep add_prefix_cmd happy. */
830
831static void
832set_internal_problem_cmd (char *args, int from_tty)
833{
834}
835
836static void
837show_internal_problem_cmd (char *args, int from_tty)
838{
839}
840
841/* When GDB reports an internal problem (error or warning) it gives
842 the user the opportunity to quit GDB and/or create a core file of
843 the current debug session. This function registers a few commands
844 that make it possible to specify that GDB should always or never
845 quit or create a core file, without asking. The commands look
846 like:
847
848 maint set PROBLEM-NAME quit ask|yes|no
849 maint show PROBLEM-NAME quit
850 maint set PROBLEM-NAME corefile ask|yes|no
851 maint show PROBLEM-NAME corefile
852
853 Where PROBLEM-NAME is currently "internal-error" or
854 "internal-warning". */
855
856static void
857add_internal_problem_command (struct internal_problem *problem)
858{
859 struct cmd_list_element **set_cmd_list;
860 struct cmd_list_element **show_cmd_list;
861 char *set_doc;
862 char *show_doc;
863
864 set_cmd_list = xmalloc (sizeof (*set_cmd_list));
865 show_cmd_list = xmalloc (sizeof (*set_cmd_list));
866 *set_cmd_list = NULL;
867 *show_cmd_list = NULL;
868
869 set_doc = xstrprintf (_("Configure what GDB does when %s is detected."),
870 problem->name);
871
872 show_doc = xstrprintf (_("Show what GDB does when %s is detected."),
873 problem->name);
874
875 add_prefix_cmd ((char*) problem->name,
876 class_maintenance, set_internal_problem_cmd, set_doc,
877 set_cmd_list,
c4f7c687
MK
878 concat ("maintenance set ", problem->name, " ",
879 (char *) NULL),
3c16cced
PA
880 0/*allow-unknown*/, &maintenance_set_cmdlist);
881
882 add_prefix_cmd ((char*) problem->name,
883 class_maintenance, show_internal_problem_cmd, show_doc,
884 show_cmd_list,
c4f7c687
MK
885 concat ("maintenance show ", problem->name, " ",
886 (char *) NULL),
3c16cced
PA
887 0/*allow-unknown*/, &maintenance_show_cmdlist);
888
57fcfb1b
GB
889 if (problem->user_settable_should_quit)
890 {
891 set_doc = xstrprintf (_("Set whether GDB should quit "
892 "when an %s is detected"),
893 problem->name);
894 show_doc = xstrprintf (_("Show whether GDB will quit "
895 "when an %s is detected"),
896 problem->name);
897 add_setshow_enum_cmd ("quit", class_maintenance,
898 internal_problem_modes,
899 &problem->should_quit,
900 set_doc,
901 show_doc,
902 NULL, /* help_doc */
903 NULL, /* setfunc */
904 NULL, /* showfunc */
905 set_cmd_list,
906 show_cmd_list);
907
908 xfree (set_doc);
909 xfree (show_doc);
910 }
1eefb858 911
57fcfb1b
GB
912 if (problem->user_settable_should_dump_core)
913 {
914 set_doc = xstrprintf (_("Set whether GDB should create a core "
915 "file of GDB when %s is detected"),
916 problem->name);
917 show_doc = xstrprintf (_("Show whether GDB will create a core "
918 "file of GDB when %s is detected"),
919 problem->name);
920 add_setshow_enum_cmd ("corefile", class_maintenance,
921 internal_problem_modes,
922 &problem->should_dump_core,
923 set_doc,
924 show_doc,
925 NULL, /* help_doc */
926 NULL, /* setfunc */
927 NULL, /* showfunc */
928 set_cmd_list,
929 show_cmd_list);
930
931 xfree (set_doc);
932 xfree (show_doc);
933 }
3c16cced
PA
934}
935
0cf4063e
JB
936/* Return a newly allocated string, containing the PREFIX followed
937 by the system error message for errno (separated by a colon).
938
939 The result must be deallocated after use. */
940
941static char *
942perror_string (const char *prefix)
943{
944 char *err;
945 char *combined;
946
947 err = safe_strerror (errno);
948 combined = (char *) xmalloc (strlen (err) + strlen (prefix) + 3);
949 strcpy (combined, prefix);
950 strcat (combined, ": ");
951 strcat (combined, err);
952
953 return combined;
954}
955
c906108c 956/* Print the system error message for errno, and also mention STRING
598d3636
JK
957 as the file name for which the error was encountered. Use ERRCODE
958 for the thrown exception. Then return to command level. */
c906108c 959
c25c4a8b 960void
598d3636 961throw_perror_with_name (enum errors errcode, const char *string)
c906108c 962{
c906108c
SS
963 char *combined;
964
0cf4063e
JB
965 combined = perror_string (string);
966 make_cleanup (xfree, combined);
c906108c
SS
967
968 /* I understand setting these is a matter of taste. Still, some people
969 may clear errno but not know about bfd_error. Doing this here is not
581e13c1 970 unreasonable. */
c906108c
SS
971 bfd_set_error (bfd_error_no_error);
972 errno = 0;
973
598d3636
JK
974 throw_error (errcode, _("%s."), combined);
975}
976
977/* See throw_perror_with_name, ERRCODE defaults here to GENERIC_ERROR. */
978
979void
980perror_with_name (const char *string)
981{
982 throw_perror_with_name (GENERIC_ERROR, string);
c906108c
SS
983}
984
7c647d61
JB
985/* Same as perror_with_name except that it prints a warning instead
986 of throwing an error. */
987
988void
989perror_warning_with_name (const char *string)
990{
991 char *combined;
992
993 combined = perror_string (string);
994 warning (_("%s"), combined);
995 xfree (combined);
996}
997
c906108c
SS
998/* Print the system error message for ERRCODE, and also mention STRING
999 as the file name for which the error was encountered. */
1000
1001void
6972bc8b 1002print_sys_errmsg (const char *string, int errcode)
c906108c
SS
1003{
1004 char *err;
1005 char *combined;
1006
1007 err = safe_strerror (errcode);
1008 combined = (char *) alloca (strlen (err) + strlen (string) + 3);
1009 strcpy (combined, string);
1010 strcat (combined, ": ");
1011 strcat (combined, err);
1012
1013 /* We want anything which was printed on stdout to come out first, before
1014 this message. */
1015 gdb_flush (gdb_stdout);
1016 fprintf_unfiltered (gdb_stderr, "%s.\n", combined);
1017}
1018
1019/* Control C eventually causes this to be called, at a convenient time. */
1020
1021void
fba45db2 1022quit (void)
c906108c 1023{
06c868a8
JK
1024 if (sync_quit_force_run)
1025 {
1026 sync_quit_force_run = 0;
1027 quit_force (NULL, stdin == instream);
1028 }
1029
7be570e7
JM
1030#ifdef __MSDOS__
1031 /* No steenking SIGINT will ever be coming our way when the
1032 program is resumed. Don't lie. */
2c51604d 1033 throw_quit ("Quit");
7be570e7 1034#else
c906108c 1035 if (job_control
8731e58e
AC
1036 /* If there is no terminal switching for this target, then we can't
1037 possibly get screwed by the lack of job control. */
b0ed115f 1038 || !target_supports_terminal_ours ())
2c51604d 1039 throw_quit ("Quit");
c906108c 1040 else
2c51604d 1041 throw_quit ("Quit (expect signal SIGINT when the program is resumed)");
7be570e7 1042#endif
c906108c
SS
1043}
1044
c906108c 1045\f
c906108c 1046/* Called when a memory allocation fails, with the number of bytes of
581e13c1 1047 memory requested in SIZE. */
c906108c 1048
c25c4a8b 1049void
d26e3629 1050malloc_failure (long size)
c906108c
SS
1051{
1052 if (size > 0)
1053 {
8e65ff28 1054 internal_error (__FILE__, __LINE__,
e2e0b3e5 1055 _("virtual memory exhausted: can't allocate %ld bytes."),
8731e58e 1056 size);
c906108c
SS
1057 }
1058 else
1059 {
e2e0b3e5 1060 internal_error (__FILE__, __LINE__, _("virtual memory exhausted."));
c906108c
SS
1061 }
1062}
1063
c906108c
SS
1064/* My replacement for the read system call.
1065 Used like `read' but keeps going if `read' returns too soon. */
1066
1067int
fba45db2 1068myread (int desc, char *addr, int len)
c906108c 1069{
52f0bd74 1070 int val;
c906108c
SS
1071 int orglen = len;
1072
1073 while (len > 0)
1074 {
1075 val = read (desc, addr, len);
1076 if (val < 0)
1077 return val;
1078 if (val == 0)
1079 return orglen - len;
1080 len -= val;
1081 addr += val;
1082 }
1083 return orglen;
1084}
d26e3629 1085
c906108c 1086void
aa1ee363 1087print_spaces (int n, struct ui_file *file)
c906108c 1088{
392a587b 1089 fputs_unfiltered (n_spaces (n), file);
c906108c
SS
1090}
1091
1092/* Print a host address. */
1093
1094void
ac16bf07 1095gdb_print_host_address (const void *addr, struct ui_file *stream)
c906108c 1096{
ea8992ce 1097 fprintf_filtered (stream, "%s", host_address_to_string (addr));
c906108c 1098}
c906108c 1099\f
c5aa993b 1100
dc92e161
TT
1101/* A cleanup function that calls regfree. */
1102
1103static void
1104do_regfree_cleanup (void *r)
1105{
1106 regfree (r);
1107}
1108
1109/* Create a new cleanup that frees the compiled regular expression R. */
1110
1111struct cleanup *
1112make_regfree_cleanup (regex_t *r)
1113{
1114 return make_cleanup (do_regfree_cleanup, r);
1115}
1116
1117/* Return an xmalloc'd error message resulting from a regular
1118 expression compilation failure. */
1119
1120char *
1121get_regcomp_error (int code, regex_t *rx)
1122{
1123 size_t length = regerror (code, rx, NULL, 0);
1124 char *result = xmalloc (length);
1125
1126 regerror (code, rx, result, length);
1127 return result;
1128}
1129
cc16e6c9 1130/* Compile a regexp and throw an exception on error. This returns a
db26349c
TT
1131 cleanup to free the resulting pattern on success. RX must not be
1132 NULL. */
cc16e6c9
TT
1133
1134struct cleanup *
1135compile_rx_or_error (regex_t *pattern, const char *rx, const char *message)
1136{
1137 int code;
1138
db26349c 1139 gdb_assert (rx != NULL);
cc16e6c9
TT
1140
1141 code = regcomp (pattern, rx, REG_NOSUB);
1142 if (code != 0)
1143 {
1144 char *err = get_regcomp_error (code, pattern);
1145
1146 make_cleanup (xfree, err);
1147 error (("%s: %s"), message, err);
1148 }
1149
1150 return make_regfree_cleanup (pattern);
1151}
1152
dc92e161
TT
1153\f
1154
981c7f5a 1155/* This function supports the query, nquery, and yquery functions.
cbdeadca 1156 Ask user a y-or-n question and return 0 if answer is no, 1 if
981c7f5a
DJ
1157 answer is yes, or default the answer to the specified default
1158 (for yquery or nquery). DEFCHAR may be 'y' or 'n' to provide a
1159 default answer, or '\0' for no default.
cbdeadca
JJ
1160 CTLSTR is the control string and should end in "? ". It should
1161 not say how to answer, because we do that.
1162 ARGS are the arguments passed along with the CTLSTR argument to
1163 printf. */
1164
a0b31db1 1165static int ATTRIBUTE_PRINTF (1, 0)
cbdeadca
JJ
1166defaulted_query (const char *ctlstr, const char defchar, va_list args)
1167{
1168 int answer;
1169 int ans2;
1170 int retval;
1171 int def_value;
1172 char def_answer, not_def_answer;
981c7f5a 1173 char *y_string, *n_string, *question;
260c0b2a
DE
1174 /* Used to add duration we waited for user to respond to
1175 prompt_for_continue_wait_time. */
1176 struct timeval prompt_started, prompt_ended, prompt_delta;
cbdeadca
JJ
1177
1178 /* Set up according to which answer is the default. */
981c7f5a
DJ
1179 if (defchar == '\0')
1180 {
1181 def_value = 1;
1182 def_answer = 'Y';
1183 not_def_answer = 'N';
1184 y_string = "y";
1185 n_string = "n";
1186 }
1187 else if (defchar == 'y')
cbdeadca
JJ
1188 {
1189 def_value = 1;
1190 def_answer = 'Y';
1191 not_def_answer = 'N';
1192 y_string = "[y]";
1193 n_string = "n";
1194 }
1195 else
1196 {
1197 def_value = 0;
1198 def_answer = 'N';
1199 not_def_answer = 'Y';
1200 y_string = "y";
1201 n_string = "[n]";
1202 }
1203
981c7f5a 1204 /* Automatically answer the default value if the user did not want
a502cf95 1205 prompts or the command was issued with the server prefix. */
e360902b 1206 if (!confirm || server_command)
981c7f5a
DJ
1207 return def_value;
1208
1209 /* If input isn't coming from the user directly, just say what
7a01c6e0 1210 question we're asking, and then answer the default automatically. This
981c7f5a
DJ
1211 way, important error messages don't get lost when talking to GDB
1212 over a pipe. */
c63a1f86 1213 if (! input_from_terminal_p ())
981c7f5a
DJ
1214 {
1215 wrap_here ("");
1216 vfprintf_filtered (gdb_stdout, ctlstr, args);
1217
3e43a32a
MS
1218 printf_filtered (_("(%s or %s) [answered %c; "
1219 "input not from terminal]\n"),
981c7f5a
DJ
1220 y_string, n_string, def_answer);
1221 gdb_flush (gdb_stdout);
1222
1223 return def_value;
1224 }
1225
9a4105ab 1226 if (deprecated_query_hook)
cbdeadca 1227 {
9a4105ab 1228 return deprecated_query_hook (ctlstr, args);
cbdeadca
JJ
1229 }
1230
981c7f5a
DJ
1231 /* Format the question outside of the loop, to avoid reusing args. */
1232 question = xstrvprintf (ctlstr, args);
1233
260c0b2a
DE
1234 /* Used for calculating time spend waiting for user. */
1235 gettimeofday (&prompt_started, NULL);
1236
cbdeadca
JJ
1237 while (1)
1238 {
581e13c1 1239 wrap_here (""); /* Flush any buffered output. */
cbdeadca
JJ
1240 gdb_flush (gdb_stdout);
1241
1242 if (annotation_level > 1)
a3f17187 1243 printf_filtered (("\n\032\032pre-query\n"));
cbdeadca 1244
981c7f5a 1245 fputs_filtered (question, gdb_stdout);
a3f17187 1246 printf_filtered (_("(%s or %s) "), y_string, n_string);
cbdeadca
JJ
1247
1248 if (annotation_level > 1)
a3f17187 1249 printf_filtered (("\n\032\032query\n"));
cbdeadca
JJ
1250
1251 wrap_here ("");
1252 gdb_flush (gdb_stdout);
1253
1254 answer = fgetc (stdin);
8626589c
JB
1255
1256 /* We expect fgetc to block until a character is read. But
1257 this may not be the case if the terminal was opened with
1258 the NONBLOCK flag. In that case, if there is nothing to
1259 read on stdin, fgetc returns EOF, but also sets the error
1260 condition flag on stdin and errno to EAGAIN. With a true
1261 EOF, stdin's error condition flag is not set.
1262
1263 A situation where this behavior was observed is a pseudo
1264 terminal on AIX. */
1265 while (answer == EOF && ferror (stdin) && errno == EAGAIN)
1266 {
1267 /* Not a real EOF. Wait a little while and try again until
1268 we read something. */
1269 clearerr (stdin);
1270 gdb_usleep (10000);
1271 answer = fgetc (stdin);
1272 }
1273
cbdeadca
JJ
1274 clearerr (stdin); /* in case of C-d */
1275 if (answer == EOF) /* C-d */
1276 {
fa3fd85b 1277 printf_filtered ("EOF [assumed %c]\n", def_answer);
cbdeadca
JJ
1278 retval = def_value;
1279 break;
1280 }
581e13c1 1281 /* Eat rest of input line, to EOF or newline. */
cbdeadca
JJ
1282 if (answer != '\n')
1283 do
1284 {
1285 ans2 = fgetc (stdin);
1286 clearerr (stdin);
1287 }
1288 while (ans2 != EOF && ans2 != '\n' && ans2 != '\r');
1289
1290 if (answer >= 'a')
1291 answer -= 040;
1292 /* Check answer. For the non-default, the user must specify
1293 the non-default explicitly. */
1294 if (answer == not_def_answer)
1295 {
1296 retval = !def_value;
1297 break;
1298 }
981c7f5a
DJ
1299 /* Otherwise, if a default was specified, the user may either
1300 specify the required input or have it default by entering
1301 nothing. */
1302 if (answer == def_answer
1303 || (defchar != '\0' &&
1304 (answer == '\n' || answer == '\r' || answer == EOF)))
cbdeadca
JJ
1305 {
1306 retval = def_value;
1307 break;
1308 }
1309 /* Invalid entries are not defaulted and require another selection. */
a3f17187 1310 printf_filtered (_("Please answer %s or %s.\n"),
cbdeadca
JJ
1311 y_string, n_string);
1312 }
1313
260c0b2a
DE
1314 /* Add time spend in this routine to prompt_for_continue_wait_time. */
1315 gettimeofday (&prompt_ended, NULL);
1316 timeval_sub (&prompt_delta, &prompt_ended, &prompt_started);
1317 timeval_add (&prompt_for_continue_wait_time,
1318 &prompt_for_continue_wait_time, &prompt_delta);
1319
981c7f5a 1320 xfree (question);
cbdeadca 1321 if (annotation_level > 1)
a3f17187 1322 printf_filtered (("\n\032\032post-query\n"));
cbdeadca
JJ
1323 return retval;
1324}
1325\f
1326
1327/* Ask user a y-or-n question and return 0 if answer is no, 1 if
1328 answer is yes, or 0 if answer is defaulted.
1329 Takes three args which are given to printf to print the question.
1330 The first, a control string, should end in "? ".
1331 It should not say how to answer, because we do that. */
1332
1333int
1334nquery (const char *ctlstr, ...)
1335{
1336 va_list args;
899500d6 1337 int ret;
cbdeadca
JJ
1338
1339 va_start (args, ctlstr);
899500d6 1340 ret = defaulted_query (ctlstr, 'n', args);
cbdeadca 1341 va_end (args);
899500d6 1342 return ret;
cbdeadca
JJ
1343}
1344
1345/* Ask user a y-or-n question and return 0 if answer is no, 1 if
1346 answer is yes, or 1 if answer is defaulted.
1347 Takes three args which are given to printf to print the question.
1348 The first, a control string, should end in "? ".
1349 It should not say how to answer, because we do that. */
1350
1351int
1352yquery (const char *ctlstr, ...)
1353{
1354 va_list args;
899500d6 1355 int ret;
cbdeadca
JJ
1356
1357 va_start (args, ctlstr);
899500d6 1358 ret = defaulted_query (ctlstr, 'y', args);
cbdeadca 1359 va_end (args);
899500d6 1360 return ret;
cbdeadca
JJ
1361}
1362
981c7f5a
DJ
1363/* Ask user a y-or-n question and return 1 iff answer is yes.
1364 Takes three args which are given to printf to print the question.
1365 The first, a control string, should end in "? ".
1366 It should not say how to answer, because we do that. */
1367
1368int
1369query (const char *ctlstr, ...)
1370{
1371 va_list args;
899500d6 1372 int ret;
981c7f5a
DJ
1373
1374 va_start (args, ctlstr);
899500d6 1375 ret = defaulted_query (ctlstr, '\0', args);
981c7f5a 1376 va_end (args);
899500d6 1377 return ret;
981c7f5a
DJ
1378}
1379
6c7a06a3
TT
1380/* A helper for parse_escape that converts a host character to a
1381 target character. C is the host character. If conversion is
1382 possible, then the target character is stored in *TARGET_C and the
1383 function returns 1. Otherwise, the function returns 0. */
1384
1385static int
f870a310 1386host_char_to_target (struct gdbarch *gdbarch, int c, int *target_c)
234b45d4 1387{
6c7a06a3
TT
1388 struct obstack host_data;
1389 char the_char = c;
1390 struct cleanup *cleanups;
1391 int result = 0;
234b45d4 1392
6c7a06a3
TT
1393 obstack_init (&host_data);
1394 cleanups = make_cleanup_obstack_free (&host_data);
234b45d4 1395
f870a310 1396 convert_between_encodings (target_charset (gdbarch), host_charset (),
ac91cd70
PA
1397 (gdb_byte *) &the_char, 1, 1,
1398 &host_data, translit_none);
6c7a06a3
TT
1399
1400 if (obstack_object_size (&host_data) == 1)
1401 {
1402 result = 1;
1403 *target_c = *(char *) obstack_base (&host_data);
1404 }
1405
1406 do_cleanups (cleanups);
1407 return result;
234b45d4
KB
1408}
1409
c906108c
SS
1410/* Parse a C escape sequence. STRING_PTR points to a variable
1411 containing a pointer to the string to parse. That pointer
1412 should point to the character after the \. That pointer
1413 is updated past the characters we use. The value of the
1414 escape sequence is returned.
1415
1416 A negative value means the sequence \ newline was seen,
1417 which is supposed to be equivalent to nothing at all.
1418
1419 If \ is followed by a null character, we return a negative
1420 value and leave the string pointer pointing at the null character.
1421
1422 If \ is followed by 000, we return 0 and leave the string pointer
1423 after the zeros. A value of 0 does not mean end of string. */
1424
1425int
d7561cbb 1426parse_escape (struct gdbarch *gdbarch, const char **string_ptr)
c906108c 1427{
581e13c1 1428 int target_char = -2; /* Initialize to avoid GCC warnings. */
52f0bd74 1429 int c = *(*string_ptr)++;
e0627e85 1430
6c7a06a3
TT
1431 switch (c)
1432 {
8731e58e
AC
1433 case '\n':
1434 return -2;
1435 case 0:
1436 (*string_ptr)--;
1437 return 0;
8731e58e
AC
1438
1439 case '0':
1440 case '1':
1441 case '2':
1442 case '3':
1443 case '4':
1444 case '5':
1445 case '6':
1446 case '7':
1447 {
6c7a06a3 1448 int i = host_hex_value (c);
aa1ee363 1449 int count = 0;
8731e58e
AC
1450 while (++count < 3)
1451 {
5cb316ef 1452 c = (**string_ptr);
6c7a06a3 1453 if (isdigit (c) && c != '8' && c != '9')
8731e58e 1454 {
5cb316ef 1455 (*string_ptr)++;
8731e58e 1456 i *= 8;
6c7a06a3 1457 i += host_hex_value (c);
8731e58e
AC
1458 }
1459 else
1460 {
8731e58e
AC
1461 break;
1462 }
1463 }
1464 return i;
1465 }
6c7a06a3
TT
1466
1467 case 'a':
1468 c = '\a';
1469 break;
1470 case 'b':
1471 c = '\b';
1472 break;
1473 case 'f':
1474 c = '\f';
1475 break;
1476 case 'n':
1477 c = '\n';
1478 break;
1479 case 'r':
1480 c = '\r';
1481 break;
1482 case 't':
1483 c = '\t';
1484 break;
1485 case 'v':
1486 c = '\v';
1487 break;
1488
1489 default:
1490 break;
1491 }
1492
f870a310 1493 if (!host_char_to_target (gdbarch, c, &target_char))
3351ea09
JB
1494 error (_("The escape sequence `\\%c' is equivalent to plain `%c',"
1495 " which has no equivalent\nin the `%s' character set."),
905b671b 1496 c, c, target_charset (gdbarch));
6c7a06a3 1497 return target_char;
c906108c
SS
1498}
1499\f
1500/* Print the character C on STREAM as part of the contents of a literal
1501 string whose delimiter is QUOTER. Note that this routine should only
1502 be call for printing things which are independent of the language
6ef284bd
SM
1503 of the program being debugged.
1504
1505 printchar will normally escape backslashes and instances of QUOTER. If
1506 QUOTER is 0, printchar won't escape backslashes or any quoting character.
1507 As a side effect, if you pass the backslash character as the QUOTER,
1508 printchar will escape backslashes as usual, but not any other quoting
1509 character. */
c906108c 1510
43e526b9 1511static void
74f832da 1512printchar (int c, void (*do_fputs) (const char *, struct ui_file *),
bee0189a
DJ
1513 void (*do_fprintf) (struct ui_file *, const char *, ...)
1514 ATTRIBUTE_FPTR_PRINTF_2, struct ui_file *stream, int quoter)
c906108c 1515{
c906108c
SS
1516 c &= 0xFF; /* Avoid sign bit follies */
1517
c5aa993b
JM
1518 if (c < 0x20 || /* Low control chars */
1519 (c >= 0x7F && c < 0xA0) || /* DEL, High controls */
1520 (sevenbit_strings && c >= 0x80))
1521 { /* high order bit set */
1522 switch (c)
1523 {
1524 case '\n':
43e526b9 1525 do_fputs ("\\n", stream);
c5aa993b
JM
1526 break;
1527 case '\b':
43e526b9 1528 do_fputs ("\\b", stream);
c5aa993b
JM
1529 break;
1530 case '\t':
43e526b9 1531 do_fputs ("\\t", stream);
c5aa993b
JM
1532 break;
1533 case '\f':
43e526b9 1534 do_fputs ("\\f", stream);
c5aa993b
JM
1535 break;
1536 case '\r':
43e526b9 1537 do_fputs ("\\r", stream);
c5aa993b
JM
1538 break;
1539 case '\033':
43e526b9 1540 do_fputs ("\\e", stream);
c5aa993b
JM
1541 break;
1542 case '\007':
43e526b9 1543 do_fputs ("\\a", stream);
c5aa993b
JM
1544 break;
1545 default:
43e526b9 1546 do_fprintf (stream, "\\%.3o", (unsigned int) c);
c5aa993b
JM
1547 break;
1548 }
1549 }
1550 else
1551 {
6ef284bd 1552 if (quoter != 0 && (c == '\\' || c == quoter))
43e526b9
JM
1553 do_fputs ("\\", stream);
1554 do_fprintf (stream, "%c", c);
c5aa993b 1555 }
c906108c 1556}
43e526b9
JM
1557
1558/* Print the character C on STREAM as part of the contents of a
1559 literal string whose delimiter is QUOTER. Note that these routines
1560 should only be call for printing things which are independent of
581e13c1 1561 the language of the program being debugged. */
43e526b9
JM
1562
1563void
fba45db2 1564fputstr_filtered (const char *str, int quoter, struct ui_file *stream)
43e526b9
JM
1565{
1566 while (*str)
1567 printchar (*str++, fputs_filtered, fprintf_filtered, stream, quoter);
1568}
1569
1570void
fba45db2 1571fputstr_unfiltered (const char *str, int quoter, struct ui_file *stream)
43e526b9
JM
1572{
1573 while (*str)
1574 printchar (*str++, fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1575}
1576
0876f84a
DJ
1577void
1578fputstrn_filtered (const char *str, int n, int quoter,
1579 struct ui_file *stream)
1580{
1581 int i;
e0627e85 1582
0876f84a
DJ
1583 for (i = 0; i < n; i++)
1584 printchar (str[i], fputs_filtered, fprintf_filtered, stream, quoter);
1585}
1586
43e526b9 1587void
8731e58e
AC
1588fputstrn_unfiltered (const char *str, int n, int quoter,
1589 struct ui_file *stream)
43e526b9
JM
1590{
1591 int i;
5d502164 1592
43e526b9
JM
1593 for (i = 0; i < n; i++)
1594 printchar (str[i], fputs_unfiltered, fprintf_unfiltered, stream, quoter);
1595}
c906108c 1596\f
c5aa993b 1597
c906108c
SS
1598/* Number of lines per page or UINT_MAX if paging is disabled. */
1599static unsigned int lines_per_page;
920d2a44
AC
1600static void
1601show_lines_per_page (struct ui_file *file, int from_tty,
1602 struct cmd_list_element *c, const char *value)
1603{
3e43a32a
MS
1604 fprintf_filtered (file,
1605 _("Number of lines gdb thinks are in a page is %s.\n"),
920d2a44
AC
1606 value);
1607}
eb0d3137 1608
cbfbd72a 1609/* Number of chars per line or UINT_MAX if line folding is disabled. */
c906108c 1610static unsigned int chars_per_line;
920d2a44
AC
1611static void
1612show_chars_per_line (struct ui_file *file, int from_tty,
1613 struct cmd_list_element *c, const char *value)
1614{
3e43a32a
MS
1615 fprintf_filtered (file,
1616 _("Number of characters gdb thinks "
1617 "are in a line is %s.\n"),
920d2a44
AC
1618 value);
1619}
eb0d3137 1620
c906108c
SS
1621/* Current count of lines printed on this page, chars on this line. */
1622static unsigned int lines_printed, chars_printed;
1623
1624/* Buffer and start column of buffered text, for doing smarter word-
1625 wrapping. When someone calls wrap_here(), we start buffering output
1626 that comes through fputs_filtered(). If we see a newline, we just
1627 spit it out and forget about the wrap_here(). If we see another
1628 wrap_here(), we spit it out and remember the newer one. If we see
1629 the end of the line, we spit out a newline, the indent, and then
1630 the buffered output. */
1631
1632/* Malloc'd buffer with chars_per_line+2 bytes. Contains characters which
1633 are waiting to be output (they have already been counted in chars_printed).
1634 When wrap_buffer[0] is null, the buffer is empty. */
1635static char *wrap_buffer;
1636
1637/* Pointer in wrap_buffer to the next character to fill. */
1638static char *wrap_pointer;
1639
1640/* String to indent by if the wrap occurs. Must not be NULL if wrap_column
1641 is non-zero. */
1642static char *wrap_indent;
1643
1644/* Column number on the screen where wrap_buffer begins, or 0 if wrapping
1645 is not in effect. */
1646static int wrap_column;
c906108c 1647\f
c5aa993b 1648
eb0d3137
MK
1649/* Inialize the number of lines per page and chars per line. */
1650
c906108c 1651void
fba45db2 1652init_page_info (void)
c906108c 1653{
5da1313b
JK
1654 if (batch_flag)
1655 {
1656 lines_per_page = UINT_MAX;
1657 chars_per_line = UINT_MAX;
1658 }
1659 else
c906108c 1660#if defined(TUI)
5ecb1806 1661 if (!tui_get_command_dimension (&chars_per_line, &lines_per_page))
c906108c
SS
1662#endif
1663 {
eb0d3137 1664 int rows, cols;
c906108c 1665
ec145965
EZ
1666#if defined(__GO32__)
1667 rows = ScreenRows ();
1668 cols = ScreenCols ();
1669 lines_per_page = rows;
1670 chars_per_line = cols;
1671#else
eb0d3137
MK
1672 /* Make sure Readline has initialized its terminal settings. */
1673 rl_reset_terminal (NULL);
c906108c 1674
eb0d3137
MK
1675 /* Get the screen size from Readline. */
1676 rl_get_screen_size (&rows, &cols);
1677 lines_per_page = rows;
1678 chars_per_line = cols;
c906108c 1679
1a66331e
PM
1680 /* Readline should have fetched the termcap entry for us.
1681 Only try to use tgetnum function if rl_get_screen_size
1682 did not return a useful value. */
1683 if (((rows <= 0) && (tgetnum ("li") < 0))
1684 /* Also disable paging if inside EMACS. */
1685 || getenv ("EMACS"))
eb0d3137 1686 {
1a66331e
PM
1687 /* The number of lines per page is not mentioned in the terminal
1688 description or EMACS evironment variable is set. This probably
1689 means that paging is not useful, so disable paging. */
eb0d3137
MK
1690 lines_per_page = UINT_MAX;
1691 }
c906108c 1692
c906108c 1693 /* If the output is not a terminal, don't paginate it. */
d9fcf2fb 1694 if (!ui_file_isatty (gdb_stdout))
c5aa993b 1695 lines_per_page = UINT_MAX;
eb0d3137 1696#endif
ec145965 1697 }
eb0d3137
MK
1698
1699 set_screen_size ();
c5aa993b 1700 set_width ();
c906108c
SS
1701}
1702
5da1313b
JK
1703/* Helper for make_cleanup_restore_page_info. */
1704
1705static void
1706do_restore_page_info_cleanup (void *arg)
1707{
1708 set_screen_size ();
1709 set_width ();
1710}
1711
1712/* Provide cleanup for restoring the terminal size. */
1713
1714struct cleanup *
1715make_cleanup_restore_page_info (void)
1716{
1717 struct cleanup *back_to;
1718
1719 back_to = make_cleanup (do_restore_page_info_cleanup, NULL);
1720 make_cleanup_restore_uinteger (&lines_per_page);
1721 make_cleanup_restore_uinteger (&chars_per_line);
1722
1723 return back_to;
1724}
1725
1726/* Temporarily set BATCH_FLAG and the associated unlimited terminal size.
1727 Provide cleanup for restoring the original state. */
1728
1729struct cleanup *
1730set_batch_flag_and_make_cleanup_restore_page_info (void)
1731{
1732 struct cleanup *back_to = make_cleanup_restore_page_info ();
1733
1734 make_cleanup_restore_integer (&batch_flag);
1735 batch_flag = 1;
1736 init_page_info ();
1737
1738 return back_to;
1739}
1740
eb0d3137
MK
1741/* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE. */
1742
1743static void
1744set_screen_size (void)
1745{
1746 int rows = lines_per_page;
1747 int cols = chars_per_line;
1748
1749 if (rows <= 0)
1750 rows = INT_MAX;
1751
1752 if (cols <= 0)
0caa462c 1753 cols = INT_MAX;
eb0d3137
MK
1754
1755 /* Update Readline's idea of the terminal size. */
1756 rl_set_screen_size (rows, cols);
1757}
1758
1759/* Reinitialize WRAP_BUFFER according to the current value of
1760 CHARS_PER_LINE. */
1761
c906108c 1762static void
fba45db2 1763set_width (void)
c906108c
SS
1764{
1765 if (chars_per_line == 0)
c5aa993b 1766 init_page_info ();
c906108c
SS
1767
1768 if (!wrap_buffer)
1769 {
1770 wrap_buffer = (char *) xmalloc (chars_per_line + 2);
1771 wrap_buffer[0] = '\0';
1772 }
1773 else
1774 wrap_buffer = (char *) xrealloc (wrap_buffer, chars_per_line + 2);
eb0d3137 1775 wrap_pointer = wrap_buffer; /* Start it at the beginning. */
c906108c
SS
1776}
1777
c5aa993b 1778static void
fba45db2 1779set_width_command (char *args, int from_tty, struct cmd_list_element *c)
c906108c 1780{
eb0d3137 1781 set_screen_size ();
c906108c
SS
1782 set_width ();
1783}
1784
eb0d3137
MK
1785static void
1786set_height_command (char *args, int from_tty, struct cmd_list_element *c)
1787{
1788 set_screen_size ();
1789}
1790
c906108c
SS
1791/* Wait, so the user can read what's on the screen. Prompt the user
1792 to continue by pressing RETURN. */
1793
1794static void
fba45db2 1795prompt_for_continue (void)
c906108c
SS
1796{
1797 char *ignore;
1798 char cont_prompt[120];
260c0b2a
DE
1799 /* Used to add duration we waited for user to respond to
1800 prompt_for_continue_wait_time. */
1801 struct timeval prompt_started, prompt_ended, prompt_delta;
1802
1803 gettimeofday (&prompt_started, NULL);
c906108c
SS
1804
1805 if (annotation_level > 1)
a3f17187 1806 printf_unfiltered (("\n\032\032pre-prompt-for-continue\n"));
c906108c
SS
1807
1808 strcpy (cont_prompt,
1809 "---Type <return> to continue, or q <return> to quit---");
1810 if (annotation_level > 1)
1811 strcat (cont_prompt, "\n\032\032prompt-for-continue\n");
1812
1813 /* We must do this *before* we call gdb_readline, else it will eventually
1814 call us -- thinking that we're trying to print beyond the end of the
1815 screen. */
1816 reinitialize_more_filter ();
1817
1818 immediate_quit++;
522002f9 1819 QUIT;
82584158
PA
1820
1821 /* We'll need to handle input. */
1822 target_terminal_ours ();
1823
c906108c
SS
1824 /* On a real operating system, the user can quit with SIGINT.
1825 But not on GO32.
1826
1827 'q' is provided on all systems so users don't have to change habits
1828 from system to system, and because telling them what to do in
1829 the prompt is more user-friendly than expecting them to think of
1830 SIGINT. */
1831 /* Call readline, not gdb_readline, because GO32 readline handles control-C
1832 whereas control-C to gdb_readline will cause the user to get dumped
1833 out to DOS. */
b4f5539f 1834 ignore = gdb_readline_wrapper (cont_prompt);
c906108c 1835
260c0b2a
DE
1836 /* Add time spend in this routine to prompt_for_continue_wait_time. */
1837 gettimeofday (&prompt_ended, NULL);
1838 timeval_sub (&prompt_delta, &prompt_ended, &prompt_started);
1839 timeval_add (&prompt_for_continue_wait_time,
1840 &prompt_for_continue_wait_time, &prompt_delta);
1841
c906108c 1842 if (annotation_level > 1)
a3f17187 1843 printf_unfiltered (("\n\032\032post-prompt-for-continue\n"));
c906108c
SS
1844
1845 if (ignore)
1846 {
1847 char *p = ignore;
5d502164 1848
c906108c
SS
1849 while (*p == ' ' || *p == '\t')
1850 ++p;
1851 if (p[0] == 'q')
522002f9 1852 quit ();
b8c9b27d 1853 xfree (ignore);
c906108c
SS
1854 }
1855 immediate_quit--;
1856
1857 /* Now we have to do this again, so that GDB will know that it doesn't
1858 need to save the ---Type <return>--- line at the top of the screen. */
1859 reinitialize_more_filter ();
1860
581e13c1 1861 dont_repeat (); /* Forget prev cmd -- CR won't repeat it. */
c906108c
SS
1862}
1863
bd712aed
DE
1864/* Initalize timer to keep track of how long we waited for the user. */
1865
1866void
1867reset_prompt_for_continue_wait_time (void)
1868{
1869 static const struct timeval zero_timeval = { 0 };
1870
1871 prompt_for_continue_wait_time = zero_timeval;
1872}
1873
1874/* Fetch the cumulative time spent in prompt_for_continue. */
1875
1876struct timeval
1877get_prompt_for_continue_wait_time (void)
1878{
1879 return prompt_for_continue_wait_time;
1880}
1881
c906108c
SS
1882/* Reinitialize filter; ie. tell it to reset to original values. */
1883
1884void
fba45db2 1885reinitialize_more_filter (void)
c906108c
SS
1886{
1887 lines_printed = 0;
1888 chars_printed = 0;
1889}
1890
1891/* Indicate that if the next sequence of characters overflows the line,
581e13c1 1892 a newline should be inserted here rather than when it hits the end.
c906108c
SS
1893 If INDENT is non-null, it is a string to be printed to indent the
1894 wrapped part on the next line. INDENT must remain accessible until
1895 the next call to wrap_here() or until a newline is printed through
1896 fputs_filtered().
1897
1898 If the line is already overfull, we immediately print a newline and
1899 the indentation, and disable further wrapping.
1900
1901 If we don't know the width of lines, but we know the page height,
1902 we must not wrap words, but should still keep track of newlines
1903 that were explicitly printed.
1904
1905 INDENT should not contain tabs, as that will mess up the char count
1906 on the next line. FIXME.
1907
1908 This routine is guaranteed to force out any output which has been
1909 squirreled away in the wrap_buffer, so wrap_here ((char *)0) can be
1910 used to force out output from the wrap_buffer. */
1911
1912void
fba45db2 1913wrap_here (char *indent)
c906108c 1914{
581e13c1 1915 /* This should have been allocated, but be paranoid anyway. */
c906108c 1916 if (!wrap_buffer)
3e43a32a
MS
1917 internal_error (__FILE__, __LINE__,
1918 _("failed internal consistency check"));
c906108c
SS
1919
1920 if (wrap_buffer[0])
1921 {
1922 *wrap_pointer = '\0';
1923 fputs_unfiltered (wrap_buffer, gdb_stdout);
1924 }
1925 wrap_pointer = wrap_buffer;
1926 wrap_buffer[0] = '\0';
3e43a32a 1927 if (chars_per_line == UINT_MAX) /* No line overflow checking. */
c906108c
SS
1928 {
1929 wrap_column = 0;
1930 }
1931 else if (chars_printed >= chars_per_line)
1932 {
1933 puts_filtered ("\n");
1934 if (indent != NULL)
1935 puts_filtered (indent);
1936 wrap_column = 0;
1937 }
1938 else
1939 {
1940 wrap_column = chars_printed;
1941 if (indent == NULL)
1942 wrap_indent = "";
1943 else
1944 wrap_indent = indent;
1945 }
1946}
1947
4a351cef 1948/* Print input string to gdb_stdout, filtered, with wrap,
581e13c1 1949 arranging strings in columns of n chars. String can be
4a351cef
AF
1950 right or left justified in the column. Never prints
1951 trailing spaces. String should never be longer than
1952 width. FIXME: this could be useful for the EXAMINE
581e13c1 1953 command, which currently doesn't tabulate very well. */
4a351cef
AF
1954
1955void
1956puts_filtered_tabular (char *string, int width, int right)
1957{
1958 int spaces = 0;
1959 int stringlen;
1960 char *spacebuf;
1961
1962 gdb_assert (chars_per_line > 0);
1963 if (chars_per_line == UINT_MAX)
1964 {
1965 fputs_filtered (string, gdb_stdout);
1966 fputs_filtered ("\n", gdb_stdout);
1967 return;
1968 }
1969
1970 if (((chars_printed - 1) / width + 2) * width >= chars_per_line)
1971 fputs_filtered ("\n", gdb_stdout);
1972
1973 if (width >= chars_per_line)
1974 width = chars_per_line - 1;
1975
1976 stringlen = strlen (string);
1977
1978 if (chars_printed > 0)
1979 spaces = width - (chars_printed - 1) % width - 1;
1980 if (right)
1981 spaces += width - stringlen;
1982
1983 spacebuf = alloca (spaces + 1);
1984 spacebuf[spaces] = '\0';
1985 while (spaces--)
1986 spacebuf[spaces] = ' ';
1987
1988 fputs_filtered (spacebuf, gdb_stdout);
1989 fputs_filtered (string, gdb_stdout);
1990}
1991
1992
c906108c 1993/* Ensure that whatever gets printed next, using the filtered output
581e13c1 1994 commands, starts at the beginning of the line. I.e. if there is
c906108c 1995 any pending output for the current line, flush it and start a new
581e13c1 1996 line. Otherwise do nothing. */
c906108c
SS
1997
1998void
fba45db2 1999begin_line (void)
c906108c
SS
2000{
2001 if (chars_printed > 0)
2002 {
2003 puts_filtered ("\n");
2004 }
2005}
2006
ac9a91a7 2007
c906108c
SS
2008/* Like fputs but if FILTER is true, pause after every screenful.
2009
2010 Regardless of FILTER can wrap at points other than the final
2011 character of a line.
2012
2013 Unlike fputs, fputs_maybe_filtered does not return a value.
2014 It is OK for LINEBUFFER to be NULL, in which case just don't print
2015 anything.
2016
2017 Note that a longjmp to top level may occur in this routine (only if
2018 FILTER is true) (since prompt_for_continue may do so) so this
2019 routine should not be called when cleanups are not in place. */
2020
2021static void
fba45db2
KB
2022fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
2023 int filter)
c906108c
SS
2024{
2025 const char *lineptr;
2026
2027 if (linebuffer == 0)
2028 return;
2029
2030 /* Don't do any filtering if it is disabled. */
390a8aca 2031 if (stream != gdb_stdout
b2e7f004
JK
2032 || !pagination_enabled
2033 || batch_flag
390a8aca 2034 || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX)
58dadb1b 2035 || top_level_interpreter () == NULL
390a8aca 2036 || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
c906108c
SS
2037 {
2038 fputs_unfiltered (linebuffer, stream);
2039 return;
2040 }
2041
2042 /* Go through and output each character. Show line extension
2043 when this is necessary; prompt user for new page when this is
2044 necessary. */
c5aa993b 2045
c906108c
SS
2046 lineptr = linebuffer;
2047 while (*lineptr)
2048 {
2049 /* Possible new page. */
8731e58e 2050 if (filter && (lines_printed >= lines_per_page - 1))
c906108c
SS
2051 prompt_for_continue ();
2052
2053 while (*lineptr && *lineptr != '\n')
2054 {
2055 /* Print a single line. */
2056 if (*lineptr == '\t')
2057 {
2058 if (wrap_column)
2059 *wrap_pointer++ = '\t';
2060 else
2061 fputc_unfiltered ('\t', stream);
2062 /* Shifting right by 3 produces the number of tab stops
2063 we have already passed, and then adding one and
c5aa993b 2064 shifting left 3 advances to the next tab stop. */
c906108c
SS
2065 chars_printed = ((chars_printed >> 3) + 1) << 3;
2066 lineptr++;
2067 }
2068 else
2069 {
2070 if (wrap_column)
2071 *wrap_pointer++ = *lineptr;
2072 else
c5aa993b 2073 fputc_unfiltered (*lineptr, stream);
c906108c
SS
2074 chars_printed++;
2075 lineptr++;
2076 }
c5aa993b 2077
c906108c
SS
2078 if (chars_printed >= chars_per_line)
2079 {
2080 unsigned int save_chars = chars_printed;
2081
2082 chars_printed = 0;
2083 lines_printed++;
2084 /* If we aren't actually wrapping, don't output newline --
c5aa993b
JM
2085 if chars_per_line is right, we probably just overflowed
2086 anyway; if it's wrong, let us keep going. */
c906108c
SS
2087 if (wrap_column)
2088 fputc_unfiltered ('\n', stream);
2089
2090 /* Possible new page. */
2091 if (lines_printed >= lines_per_page - 1)
2092 prompt_for_continue ();
2093
581e13c1 2094 /* Now output indentation and wrapped string. */
c906108c
SS
2095 if (wrap_column)
2096 {
2097 fputs_unfiltered (wrap_indent, stream);
581e13c1
MS
2098 *wrap_pointer = '\0'; /* Null-terminate saved stuff, */
2099 fputs_unfiltered (wrap_buffer, stream); /* and eject it. */
c906108c
SS
2100 /* FIXME, this strlen is what prevents wrap_indent from
2101 containing tabs. However, if we recurse to print it
2102 and count its chars, we risk trouble if wrap_indent is
581e13c1 2103 longer than (the user settable) chars_per_line.
c906108c
SS
2104 Note also that this can set chars_printed > chars_per_line
2105 if we are printing a long string. */
2106 chars_printed = strlen (wrap_indent)
c5aa993b 2107 + (save_chars - wrap_column);
c906108c
SS
2108 wrap_pointer = wrap_buffer; /* Reset buffer */
2109 wrap_buffer[0] = '\0';
c5aa993b
JM
2110 wrap_column = 0; /* And disable fancy wrap */
2111 }
c906108c
SS
2112 }
2113 }
2114
2115 if (*lineptr == '\n')
2116 {
2117 chars_printed = 0;
3e43a32a
MS
2118 wrap_here ((char *) 0); /* Spit out chars, cancel
2119 further wraps. */
c906108c
SS
2120 lines_printed++;
2121 fputc_unfiltered ('\n', stream);
2122 lineptr++;
2123 }
2124 }
2125}
2126
2127void
fba45db2 2128fputs_filtered (const char *linebuffer, struct ui_file *stream)
c906108c
SS
2129{
2130 fputs_maybe_filtered (linebuffer, stream, 1);
2131}
2132
2133int
fba45db2 2134putchar_unfiltered (int c)
c906108c 2135{
11cf8741 2136 char buf = c;
e0627e85 2137
d9fcf2fb 2138 ui_file_write (gdb_stdout, &buf, 1);
c906108c
SS
2139 return c;
2140}
2141
d1f4cff8
AC
2142/* Write character C to gdb_stdout using GDB's paging mechanism and return C.
2143 May return nonlocally. */
2144
2145int
2146putchar_filtered (int c)
2147{
2148 return fputc_filtered (c, gdb_stdout);
2149}
2150
c906108c 2151int
fba45db2 2152fputc_unfiltered (int c, struct ui_file *stream)
c906108c 2153{
11cf8741 2154 char buf = c;
e0627e85 2155
d9fcf2fb 2156 ui_file_write (stream, &buf, 1);
c906108c
SS
2157 return c;
2158}
2159
2160int
fba45db2 2161fputc_filtered (int c, struct ui_file *stream)
c906108c
SS
2162{
2163 char buf[2];
2164
2165 buf[0] = c;
2166 buf[1] = 0;
2167 fputs_filtered (buf, stream);
2168 return c;
2169}
2170
2171/* puts_debug is like fputs_unfiltered, except it prints special
2172 characters in printable fashion. */
2173
2174void
fba45db2 2175puts_debug (char *prefix, char *string, char *suffix)
c906108c
SS
2176{
2177 int ch;
2178
2179 /* Print prefix and suffix after each line. */
2180 static int new_line = 1;
2181 static int return_p = 0;
2182 static char *prev_prefix = "";
2183 static char *prev_suffix = "";
2184
2185 if (*string == '\n')
2186 return_p = 0;
2187
2188 /* If the prefix is changing, print the previous suffix, a new line,
2189 and the new prefix. */
c5aa993b 2190 if ((return_p || (strcmp (prev_prefix, prefix) != 0)) && !new_line)
c906108c 2191 {
9846de1b
JM
2192 fputs_unfiltered (prev_suffix, gdb_stdlog);
2193 fputs_unfiltered ("\n", gdb_stdlog);
2194 fputs_unfiltered (prefix, gdb_stdlog);
c906108c
SS
2195 }
2196
2197 /* Print prefix if we printed a newline during the previous call. */
2198 if (new_line)
2199 {
2200 new_line = 0;
9846de1b 2201 fputs_unfiltered (prefix, gdb_stdlog);
c906108c
SS
2202 }
2203
2204 prev_prefix = prefix;
2205 prev_suffix = suffix;
2206
2207 /* Output characters in a printable format. */
2208 while ((ch = *string++) != '\0')
2209 {
2210 switch (ch)
c5aa993b 2211 {
c906108c
SS
2212 default:
2213 if (isprint (ch))
9846de1b 2214 fputc_unfiltered (ch, gdb_stdlog);
c906108c
SS
2215
2216 else
9846de1b 2217 fprintf_unfiltered (gdb_stdlog, "\\x%02x", ch & 0xff);
c906108c
SS
2218 break;
2219
c5aa993b
JM
2220 case '\\':
2221 fputs_unfiltered ("\\\\", gdb_stdlog);
2222 break;
2223 case '\b':
2224 fputs_unfiltered ("\\b", gdb_stdlog);
2225 break;
2226 case '\f':
2227 fputs_unfiltered ("\\f", gdb_stdlog);
2228 break;
2229 case '\n':
2230 new_line = 1;
2231 fputs_unfiltered ("\\n", gdb_stdlog);
2232 break;
2233 case '\r':
2234 fputs_unfiltered ("\\r", gdb_stdlog);
2235 break;
2236 case '\t':
2237 fputs_unfiltered ("\\t", gdb_stdlog);
2238 break;
2239 case '\v':
2240 fputs_unfiltered ("\\v", gdb_stdlog);
2241 break;
2242 }
c906108c
SS
2243
2244 return_p = ch == '\r';
2245 }
2246
2247 /* Print suffix if we printed a newline. */
2248 if (new_line)
2249 {
9846de1b
JM
2250 fputs_unfiltered (suffix, gdb_stdlog);
2251 fputs_unfiltered ("\n", gdb_stdlog);
c906108c
SS
2252 }
2253}
2254
2255
2256/* Print a variable number of ARGS using format FORMAT. If this
2257 information is going to put the amount written (since the last call
2258 to REINITIALIZE_MORE_FILTER or the last page break) over the page size,
2259 call prompt_for_continue to get the users permision to continue.
2260
2261 Unlike fprintf, this function does not return a value.
2262
2263 We implement three variants, vfprintf (takes a vararg list and stream),
2264 fprintf (takes a stream to write on), and printf (the usual).
2265
2266 Note also that a longjmp to top level may occur in this routine
2267 (since prompt_for_continue may do so) so this routine should not be
2268 called when cleanups are not in place. */
2269
2270static void
fba45db2
KB
2271vfprintf_maybe_filtered (struct ui_file *stream, const char *format,
2272 va_list args, int filter)
c906108c
SS
2273{
2274 char *linebuffer;
2275 struct cleanup *old_cleanups;
2276
e623b504 2277 linebuffer = xstrvprintf (format, args);
b8c9b27d 2278 old_cleanups = make_cleanup (xfree, linebuffer);
c906108c
SS
2279 fputs_maybe_filtered (linebuffer, stream, filter);
2280 do_cleanups (old_cleanups);
2281}
2282
2283
2284void
fba45db2 2285vfprintf_filtered (struct ui_file *stream, const char *format, va_list args)
c906108c
SS
2286{
2287 vfprintf_maybe_filtered (stream, format, args, 1);
2288}
2289
2290void
fba45db2 2291vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args)
c906108c
SS
2292{
2293 char *linebuffer;
2294 struct cleanup *old_cleanups;
2295
e623b504 2296 linebuffer = xstrvprintf (format, args);
b8c9b27d 2297 old_cleanups = make_cleanup (xfree, linebuffer);
75feb17d
DJ
2298 if (debug_timestamp && stream == gdb_stdlog)
2299 {
2300 struct timeval tm;
2301 char *timestamp;
6e5abd65 2302 int len, need_nl;
75feb17d
DJ
2303
2304 gettimeofday (&tm, NULL);
6e5abd65
PA
2305
2306 len = strlen (linebuffer);
2307 need_nl = (len > 0 && linebuffer[len - 1] != '\n');
2308
2309 timestamp = xstrprintf ("%ld:%ld %s%s",
2310 (long) tm.tv_sec, (long) tm.tv_usec,
2311 linebuffer,
2312 need_nl ? "\n": "");
75feb17d
DJ
2313 make_cleanup (xfree, timestamp);
2314 fputs_unfiltered (timestamp, stream);
2315 }
6e5abd65
PA
2316 else
2317 fputs_unfiltered (linebuffer, stream);
c906108c
SS
2318 do_cleanups (old_cleanups);
2319}
2320
2321void
fba45db2 2322vprintf_filtered (const char *format, va_list args)
c906108c
SS
2323{
2324 vfprintf_maybe_filtered (gdb_stdout, format, args, 1);
2325}
2326
2327void
fba45db2 2328vprintf_unfiltered (const char *format, va_list args)
c906108c
SS
2329{
2330 vfprintf_unfiltered (gdb_stdout, format, args);
2331}
2332
c906108c 2333void
8731e58e 2334fprintf_filtered (struct ui_file *stream, const char *format, ...)
c906108c
SS
2335{
2336 va_list args;
e0627e85 2337
c906108c 2338 va_start (args, format);
c906108c
SS
2339 vfprintf_filtered (stream, format, args);
2340 va_end (args);
2341}
2342
c906108c 2343void
8731e58e 2344fprintf_unfiltered (struct ui_file *stream, const char *format, ...)
c906108c
SS
2345{
2346 va_list args;
e0627e85 2347
c906108c 2348 va_start (args, format);
c906108c
SS
2349 vfprintf_unfiltered (stream, format, args);
2350 va_end (args);
2351}
2352
2353/* Like fprintf_filtered, but prints its result indented.
2354 Called as fprintfi_filtered (spaces, stream, format, ...); */
2355
c906108c 2356void
8731e58e
AC
2357fprintfi_filtered (int spaces, struct ui_file *stream, const char *format,
2358 ...)
c906108c
SS
2359{
2360 va_list args;
e0627e85 2361
c906108c 2362 va_start (args, format);
c906108c
SS
2363 print_spaces_filtered (spaces, stream);
2364
2365 vfprintf_filtered (stream, format, args);
2366 va_end (args);
2367}
2368
2369
c906108c 2370void
8731e58e 2371printf_filtered (const char *format, ...)
c906108c
SS
2372{
2373 va_list args;
e0627e85 2374
c906108c 2375 va_start (args, format);
c906108c
SS
2376 vfprintf_filtered (gdb_stdout, format, args);
2377 va_end (args);
2378}
2379
2380
c906108c 2381void
8731e58e 2382printf_unfiltered (const char *format, ...)
c906108c
SS
2383{
2384 va_list args;
e0627e85 2385
c906108c 2386 va_start (args, format);
c906108c
SS
2387 vfprintf_unfiltered (gdb_stdout, format, args);
2388 va_end (args);
2389}
2390
2391/* Like printf_filtered, but prints it's result indented.
2392 Called as printfi_filtered (spaces, format, ...); */
2393
c906108c 2394void
8731e58e 2395printfi_filtered (int spaces, const char *format, ...)
c906108c
SS
2396{
2397 va_list args;
e0627e85 2398
c906108c 2399 va_start (args, format);
c906108c
SS
2400 print_spaces_filtered (spaces, gdb_stdout);
2401 vfprintf_filtered (gdb_stdout, format, args);
2402 va_end (args);
2403}
2404
2405/* Easy -- but watch out!
2406
2407 This routine is *not* a replacement for puts()! puts() appends a newline.
2408 This one doesn't, and had better not! */
2409
2410void
fba45db2 2411puts_filtered (const char *string)
c906108c
SS
2412{
2413 fputs_filtered (string, gdb_stdout);
2414}
2415
2416void
fba45db2 2417puts_unfiltered (const char *string)
c906108c
SS
2418{
2419 fputs_unfiltered (string, gdb_stdout);
2420}
2421
2422/* Return a pointer to N spaces and a null. The pointer is good
2423 until the next call to here. */
2424char *
fba45db2 2425n_spaces (int n)
c906108c 2426{
392a587b
JM
2427 char *t;
2428 static char *spaces = 0;
2429 static int max_spaces = -1;
c906108c
SS
2430
2431 if (n > max_spaces)
2432 {
2433 if (spaces)
b8c9b27d 2434 xfree (spaces);
c5aa993b
JM
2435 spaces = (char *) xmalloc (n + 1);
2436 for (t = spaces + n; t != spaces;)
c906108c
SS
2437 *--t = ' ';
2438 spaces[n] = '\0';
2439 max_spaces = n;
2440 }
2441
2442 return spaces + max_spaces - n;
2443}
2444
2445/* Print N spaces. */
2446void
fba45db2 2447print_spaces_filtered (int n, struct ui_file *stream)
c906108c
SS
2448{
2449 fputs_filtered (n_spaces (n), stream);
2450}
2451\f
4a351cef 2452/* C++/ObjC demangler stuff. */
c906108c 2453
389e51db
AC
2454/* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
2455 LANG, using demangling args ARG_MODE, and print it filtered to STREAM.
2456 If the name is not mangled, or the language for the name is unknown, or
581e13c1 2457 demangling is off, the name is printed in its "raw" form. */
c906108c
SS
2458
2459void
0d5cff50 2460fprintf_symbol_filtered (struct ui_file *stream, const char *name,
8731e58e 2461 enum language lang, int arg_mode)
c906108c
SS
2462{
2463 char *demangled;
2464
2465 if (name != NULL)
2466 {
2467 /* If user wants to see raw output, no problem. */
2468 if (!demangle)
2469 {
2470 fputs_filtered (name, stream);
2471 }
2472 else
2473 {
9a3d7dfd 2474 demangled = language_demangle (language_def (lang), name, arg_mode);
c906108c
SS
2475 fputs_filtered (demangled ? demangled : name, stream);
2476 if (demangled != NULL)
2477 {
b8c9b27d 2478 xfree (demangled);
c906108c
SS
2479 }
2480 }
2481 }
2482}
2483
2484/* Do a strcmp() type operation on STRING1 and STRING2, ignoring any
2485 differences in whitespace. Returns 0 if they match, non-zero if they
2486 don't (slightly different than strcmp()'s range of return values).
c5aa993b 2487
c906108c
SS
2488 As an extra hack, string1=="FOO(ARGS)" matches string2=="FOO".
2489 This "feature" is useful when searching for matching C++ function names
2490 (such as if the user types 'break FOO', where FOO is a mangled C++
581e13c1 2491 function). */
c906108c
SS
2492
2493int
fba45db2 2494strcmp_iw (const char *string1, const char *string2)
c906108c
SS
2495{
2496 while ((*string1 != '\0') && (*string2 != '\0'))
2497 {
2498 while (isspace (*string1))
2499 {
2500 string1++;
2501 }
2502 while (isspace (*string2))
2503 {
2504 string2++;
2505 }
559a7a62
JK
2506 if (case_sensitivity == case_sensitive_on && *string1 != *string2)
2507 break;
2508 if (case_sensitivity == case_sensitive_off
2509 && (tolower ((unsigned char) *string1)
2510 != tolower ((unsigned char) *string2)))
2511 break;
c906108c
SS
2512 if (*string1 != '\0')
2513 {
2514 string1++;
2515 string2++;
2516 }
2517 }
2518 return (*string1 != '\0' && *string1 != '(') || (*string2 != '\0');
2519}
2de7ced7 2520
0fe19209
DC
2521/* This is like strcmp except that it ignores whitespace and treats
2522 '(' as the first non-NULL character in terms of ordering. Like
2523 strcmp (and unlike strcmp_iw), it returns negative if STRING1 <
2524 STRING2, 0 if STRING2 = STRING2, and positive if STRING1 > STRING2
2525 according to that ordering.
2526
2527 If a list is sorted according to this function and if you want to
2528 find names in the list that match some fixed NAME according to
2529 strcmp_iw(LIST_ELT, NAME), then the place to start looking is right
2530 where this function would put NAME.
2531
559a7a62
JK
2532 This function must be neutral to the CASE_SENSITIVITY setting as the user
2533 may choose it during later lookup. Therefore this function always sorts
2534 primarily case-insensitively and secondarily case-sensitively.
2535
0fe19209
DC
2536 Here are some examples of why using strcmp to sort is a bad idea:
2537
2538 Whitespace example:
2539
2540 Say your partial symtab contains: "foo<char *>", "goo". Then, if
2541 we try to do a search for "foo<char*>", strcmp will locate this
2542 after "foo<char *>" and before "goo". Then lookup_partial_symbol
2543 will start looking at strings beginning with "goo", and will never
2544 see the correct match of "foo<char *>".
2545
2546 Parenthesis example:
2547
2548 In practice, this is less like to be an issue, but I'll give it a
2549 shot. Let's assume that '$' is a legitimate character to occur in
2550 symbols. (Which may well even be the case on some systems.) Then
2551 say that the partial symbol table contains "foo$" and "foo(int)".
2552 strcmp will put them in this order, since '$' < '('. Now, if the
2553 user searches for "foo", then strcmp will sort "foo" before "foo$".
2554 Then lookup_partial_symbol will notice that strcmp_iw("foo$",
2555 "foo") is false, so it won't proceed to the actual match of
2556 "foo(int)" with "foo". */
2557
2558int
2559strcmp_iw_ordered (const char *string1, const char *string2)
2560{
559a7a62
JK
2561 const char *saved_string1 = string1, *saved_string2 = string2;
2562 enum case_sensitivity case_pass = case_sensitive_off;
2563
2564 for (;;)
0fe19209 2565 {
b11b1f88
JK
2566 /* C1 and C2 are valid only if *string1 != '\0' && *string2 != '\0'.
2567 Provide stub characters if we are already at the end of one of the
2568 strings. */
2569 char c1 = 'X', c2 = 'X';
2570
2571 while (*string1 != '\0' && *string2 != '\0')
0fe19209 2572 {
b11b1f88
JK
2573 while (isspace (*string1))
2574 string1++;
2575 while (isspace (*string2))
2576 string2++;
2577
559a7a62
JK
2578 switch (case_pass)
2579 {
2580 case case_sensitive_off:
2581 c1 = tolower ((unsigned char) *string1);
2582 c2 = tolower ((unsigned char) *string2);
2583 break;
2584 case case_sensitive_on:
b11b1f88
JK
2585 c1 = *string1;
2586 c2 = *string2;
559a7a62
JK
2587 break;
2588 }
b11b1f88
JK
2589 if (c1 != c2)
2590 break;
2591
2592 if (*string1 != '\0')
2593 {
2594 string1++;
2595 string2++;
2596 }
0fe19209 2597 }
b11b1f88
JK
2598
2599 switch (*string1)
0fe19209 2600 {
b11b1f88
JK
2601 /* Characters are non-equal unless they're both '\0'; we want to
2602 make sure we get the comparison right according to our
2603 comparison in the cases where one of them is '\0' or '('. */
2604 case '\0':
2605 if (*string2 == '\0')
559a7a62 2606 break;
b11b1f88
JK
2607 else
2608 return -1;
2609 case '(':
2610 if (*string2 == '\0')
2611 return 1;
2612 else
2613 return -1;
2614 default:
2615 if (*string2 == '\0' || *string2 == '(')
2616 return 1;
559a7a62
JK
2617 else if (c1 > c2)
2618 return 1;
2619 else if (c1 < c2)
2620 return -1;
2621 /* PASSTHRU */
0fe19209 2622 }
559a7a62
JK
2623
2624 if (case_pass == case_sensitive_on)
2625 return 0;
2626
2627 /* Otherwise the strings were equal in case insensitive way, make
2628 a more fine grained comparison in a case sensitive way. */
2629
2630 case_pass = case_sensitive_on;
2631 string1 = saved_string1;
2632 string2 = saved_string2;
0fe19209 2633 }
0fe19209
DC
2634}
2635
2de7ced7
DJ
2636/* A simple comparison function with opposite semantics to strcmp. */
2637
2638int
2639streq (const char *lhs, const char *rhs)
2640{
2641 return !strcmp (lhs, rhs);
2642}
c906108c 2643\f
c5aa993b 2644
c906108c 2645/*
c5aa993b
JM
2646 ** subset_compare()
2647 ** Answer whether string_to_compare is a full or partial match to
2648 ** template_string. The partial match must be in sequence starting
2649 ** at index 0.
2650 */
c906108c 2651int
fba45db2 2652subset_compare (char *string_to_compare, char *template_string)
7a292a7a
SS
2653{
2654 int match;
e0627e85 2655
8731e58e
AC
2656 if (template_string != (char *) NULL && string_to_compare != (char *) NULL
2657 && strlen (string_to_compare) <= strlen (template_string))
2658 match =
2659 (strncmp
2660 (template_string, string_to_compare, strlen (string_to_compare)) == 0);
7a292a7a
SS
2661 else
2662 match = 0;
2663 return match;
2664}
c906108c 2665
7a292a7a 2666static void
fba45db2 2667pagination_on_command (char *arg, int from_tty)
c906108c
SS
2668{
2669 pagination_enabled = 1;
2670}
2671
7a292a7a 2672static void
fba45db2 2673pagination_off_command (char *arg, int from_tty)
c906108c
SS
2674{
2675 pagination_enabled = 0;
2676}
75feb17d
DJ
2677
2678static void
2679show_debug_timestamp (struct ui_file *file, int from_tty,
2680 struct cmd_list_element *c, const char *value)
2681{
3e43a32a
MS
2682 fprintf_filtered (file, _("Timestamping debugging messages is %s.\n"),
2683 value);
75feb17d 2684}
c906108c 2685\f
c5aa993b 2686
c906108c 2687void
fba45db2 2688initialize_utils (void)
c906108c 2689{
35096d9d 2690 add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\
77dec115
EZ
2691Set number of characters where GDB should wrap lines of its output."), _("\
2692Show number of characters where GDB should wrap lines of its output."), _("\
2693This affects where GDB wraps its output to fit the screen width.\n\
f81d1120 2694Setting this to \"unlimited\" or zero prevents GDB from wrapping its output."),
35096d9d 2695 set_width_command,
920d2a44 2696 show_chars_per_line,
35096d9d
AC
2697 &setlist, &showlist);
2698
2699 add_setshow_uinteger_cmd ("height", class_support, &lines_per_page, _("\
77dec115
EZ
2700Set number of lines in a page for GDB output pagination."), _("\
2701Show number of lines in a page for GDB output pagination."), _("\
2702This affects the number of lines after which GDB will pause\n\
2703its output and ask you whether to continue.\n\
f81d1120 2704Setting this to \"unlimited\" or zero causes GDB never pause during output."),
35096d9d 2705 set_height_command,
920d2a44 2706 show_lines_per_page,
35096d9d 2707 &setlist, &showlist);
c5aa993b 2708
c906108c
SS
2709 init_page_info ();
2710
5bf193a2
AC
2711 add_setshow_boolean_cmd ("pagination", class_support,
2712 &pagination_enabled, _("\
77dec115
EZ
2713Set state of GDB output pagination."), _("\
2714Show state of GDB output pagination."), _("\
2715When pagination is ON, GDB pauses at end of each screenful of\n\
2716its output and asks you whether to continue.\n\
f81d1120 2717Turning pagination off is an alternative to \"set height unlimited\"."),
5bf193a2 2718 NULL,
920d2a44 2719 show_pagination_enabled,
5bf193a2 2720 &setlist, &showlist);
4261bedc 2721
c906108c
SS
2722 if (xdb_commands)
2723 {
c5aa993b 2724 add_com ("am", class_support, pagination_on_command,
1bedd215 2725 _("Enable pagination"));
c5aa993b 2726 add_com ("sm", class_support, pagination_off_command,
1bedd215 2727 _("Disable pagination"));
c906108c
SS
2728 }
2729
5bf193a2
AC
2730 add_setshow_boolean_cmd ("sevenbit-strings", class_support,
2731 &sevenbit_strings, _("\
2732Set printing of 8-bit characters in strings as \\nnn."), _("\
2733Show printing of 8-bit characters in strings as \\nnn."), NULL,
2734 NULL,
920d2a44 2735 show_sevenbit_strings,
5bf193a2
AC
2736 &setprintlist, &showprintlist);
2737
75feb17d
DJ
2738 add_setshow_boolean_cmd ("timestamp", class_maintenance,
2739 &debug_timestamp, _("\
2740Set timestamping of debugging messages."), _("\
2741Show timestamping of debugging messages."), _("\
2742When set, debugging messages will be marked with seconds and microseconds."),
2743 NULL,
2744 show_debug_timestamp,
2745 &setdebuglist, &showdebuglist);
c906108c
SS
2746}
2747
66bf4b3a 2748const char *
5af949e3 2749paddress (struct gdbarch *gdbarch, CORE_ADDR addr)
66bf4b3a
AC
2750{
2751 /* Truncate address to the size of a target address, avoiding shifts
2752 larger or equal than the width of a CORE_ADDR. The local
2753 variable ADDR_BIT stops the compiler reporting a shift overflow
581e13c1 2754 when it won't occur. */
66bf4b3a
AC
2755 /* NOTE: This assumes that the significant address information is
2756 kept in the least significant bits of ADDR - the upper bits were
76e71323 2757 either zero or sign extended. Should gdbarch_address_to_pointer or
66bf4b3a
AC
2758 some ADDRESS_TO_PRINTABLE() be used to do the conversion? */
2759
5af949e3 2760 int addr_bit = gdbarch_addr_bit (gdbarch);
66bf4b3a
AC
2761
2762 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2763 addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
2764 return hex_string (addr);
2765}
2766
f1310107
TJB
2767/* This function is described in "defs.h". */
2768
2769const char *
2770print_core_address (struct gdbarch *gdbarch, CORE_ADDR address)
2771{
2772 int addr_bit = gdbarch_addr_bit (gdbarch);
2773
2774 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2775 address &= ((CORE_ADDR) 1 << addr_bit) - 1;
2776
2777 /* FIXME: cagney/2002-05-03: Need local_address_string() function
2778 that returns the language localized string formatted to a width
2779 based on gdbarch_addr_bit. */
2780 if (addr_bit <= 32)
2781 return hex_string_custom (address, 8);
2782 else
2783 return hex_string_custom (address, 16);
2784}
2785
8e3b41a9
JK
2786/* Callback hash_f for htab_create_alloc or htab_create_alloc_ex. */
2787
2788hashval_t
2789core_addr_hash (const void *ap)
2790{
2791 const CORE_ADDR *addrp = ap;
2792
2793 return *addrp;
2794}
2795
2796/* Callback eq_f for htab_create_alloc or htab_create_alloc_ex. */
2797
2798int
2799core_addr_eq (const void *ap, const void *bp)
2800{
2801 const CORE_ADDR *addr_ap = ap;
2802 const CORE_ADDR *addr_bp = bp;
2803
2804 return *addr_ap == *addr_bp;
2805}
2806
03dd37c3
AC
2807/* Convert a string back into a CORE_ADDR. */
2808CORE_ADDR
2809string_to_core_addr (const char *my_string)
2810{
2811 CORE_ADDR addr = 0;
9544c605 2812
03dd37c3
AC
2813 if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
2814 {
ced572fe 2815 /* Assume that it is in hex. */
03dd37c3 2816 int i;
5d502164 2817
03dd37c3
AC
2818 for (i = 2; my_string[i] != '\0'; i++)
2819 {
2820 if (isdigit (my_string[i]))
2821 addr = (my_string[i] - '0') + (addr * 16);
8731e58e 2822 else if (isxdigit (my_string[i]))
03dd37c3
AC
2823 addr = (tolower (my_string[i]) - 'a' + 0xa) + (addr * 16);
2824 else
63f06803 2825 error (_("invalid hex \"%s\""), my_string);
03dd37c3
AC
2826 }
2827 }
2828 else
2829 {
2830 /* Assume that it is in decimal. */
2831 int i;
5d502164 2832
03dd37c3
AC
2833 for (i = 0; my_string[i] != '\0'; i++)
2834 {
2835 if (isdigit (my_string[i]))
2836 addr = (my_string[i] - '0') + (addr * 10);
2837 else
63f06803 2838 error (_("invalid decimal \"%s\""), my_string);
03dd37c3
AC
2839 }
2840 }
9544c605 2841
03dd37c3
AC
2842 return addr;
2843}
58d370e0
TT
2844
2845char *
2846gdb_realpath (const char *filename)
2847{
70d35819
AC
2848 /* Method 1: The system has a compile time upper bound on a filename
2849 path. Use that and realpath() to canonicalize the name. This is
2850 the most common case. Note that, if there isn't a compile time
2851 upper bound, you want to avoid realpath() at all costs. */
d8d2a3ee 2852#if defined (HAVE_REALPATH) && defined (PATH_MAX)
70d35819 2853 {
70d35819 2854 char buf[PATH_MAX];
82c0260e 2855 const char *rp = realpath (filename, buf);
5d502164 2856
70d35819
AC
2857 if (rp == NULL)
2858 rp = filename;
2859 return xstrdup (rp);
6f88d630 2860 }
a4db0f07
RH
2861#endif /* HAVE_REALPATH */
2862
70d35819
AC
2863 /* Method 2: The host system (i.e., GNU) has the function
2864 canonicalize_file_name() which malloc's a chunk of memory and
2865 returns that, use that. */
2866#if defined(HAVE_CANONICALIZE_FILE_NAME)
2867 {
2868 char *rp = canonicalize_file_name (filename);
5d502164 2869
70d35819
AC
2870 if (rp == NULL)
2871 return xstrdup (filename);
2872 else
2873 return rp;
2874 }
58d370e0 2875#endif
70d35819 2876
6411e720
AC
2877 /* FIXME: cagney/2002-11-13:
2878
2879 Method 2a: Use realpath() with a NULL buffer. Some systems, due
7a9dd1b2 2880 to the problems described in method 3, have modified their
6411e720
AC
2881 realpath() implementation so that it will allocate a buffer when
2882 NULL is passed in. Before this can be used, though, some sort of
2883 configure time test would need to be added. Otherwize the code
2884 will likely core dump. */
2885
70d35819
AC
2886 /* Method 3: Now we're getting desperate! The system doesn't have a
2887 compile time buffer size and no alternative function. Query the
2888 OS, using pathconf(), for the buffer limit. Care is needed
2889 though, some systems do not limit PATH_MAX (return -1 for
2890 pathconf()) making it impossible to pass a correctly sized buffer
2891 to realpath() (it could always overflow). On those systems, we
2892 skip this. */
8c0da261 2893#if defined (HAVE_REALPATH) && defined (_PC_PATH_MAX) && defined(HAVE_ALLOCA)
70d35819
AC
2894 {
2895 /* Find out the max path size. */
2896 long path_max = pathconf ("/", _PC_PATH_MAX);
5d502164 2897
70d35819
AC
2898 if (path_max > 0)
2899 {
2900 /* PATH_MAX is bounded. */
2901 char *buf = alloca (path_max);
2902 char *rp = realpath (filename, buf);
5d502164 2903
70d35819
AC
2904 return xstrdup (rp ? rp : filename);
2905 }
2906 }
2907#endif
2908
9c5e4386
JB
2909 /* The MS Windows method. If we don't have realpath, we assume we
2910 don't have symlinks and just canonicalize to a Windows absolute
2911 path. GetFullPath converts ../ and ./ in relative paths to
2912 absolute paths, filling in current drive if one is not given
2913 or using the current directory of a specified drive (eg, "E:foo").
2914 It also converts all forward slashes to back slashes. */
2915 /* The file system is case-insensitive but case-preserving.
2916 So we do not lowercase the path. Otherwise, we might not
2917 be able to display the original casing in a given path. */
2918#if defined (_WIN32)
2919 {
2920 char buf[MAX_PATH];
2921 DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL);
2922
2923 if (len > 0 && len < MAX_PATH)
2924 return xstrdup (buf);
2925 }
2926#endif
2927
70d35819
AC
2928 /* This system is a lost cause, just dup the buffer. */
2929 return xstrdup (filename);
58d370e0 2930}
303c8ebd 2931
4856b6bc
JK
2932/* Return a copy of FILENAME, with its directory prefix canonicalized
2933 by gdb_realpath. */
2934
2935char *
2936gdb_realpath_keepfile (const char *filename)
2937{
2938 const char *base_name = lbasename (filename);
2939 char *dir_name;
2940 char *real_path;
2941 char *result;
2942
2943 /* Extract the basename of filename, and return immediately
2944 a copy of filename if it does not contain any directory prefix. */
2945 if (base_name == filename)
2946 return xstrdup (filename);
2947
2948 dir_name = alloca ((size_t) (base_name - filename + 2));
2949 /* Allocate enough space to store the dir_name + plus one extra
2950 character sometimes needed under Windows (see below), and
2951 then the closing \000 character. */
2952 strncpy (dir_name, filename, base_name - filename);
2953 dir_name[base_name - filename] = '\000';
2954
2955#ifdef HAVE_DOS_BASED_FILE_SYSTEM
2956 /* We need to be careful when filename is of the form 'd:foo', which
2957 is equivalent of d:./foo, which is totally different from d:/foo. */
2958 if (strlen (dir_name) == 2 && isalpha (dir_name[0]) && dir_name[1] == ':')
2959 {
2960 dir_name[2] = '.';
2961 dir_name[3] = '\000';
2962 }
2963#endif
2964
2965 /* Canonicalize the directory prefix, and build the resulting
2966 filename. If the dirname realpath already contains an ending
2967 directory separator, avoid doubling it. */
2968 real_path = gdb_realpath (dir_name);
2969 if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1]))
2970 result = concat (real_path, base_name, (char *) NULL);
2971 else
2972 result = concat (real_path, SLASH_STRING, base_name, (char *) NULL);
2973
2974 xfree (real_path);
2975 return result;
2976}
2977
04affae3
JK
2978/* Return PATH in absolute form, performing tilde-expansion if necessary.
2979 PATH cannot be NULL or the empty string.
2980 This does not resolve symlinks however, use gdb_realpath for that.
2981 Space for the result is allocated with malloc.
2982 If the path is already absolute, it is strdup'd.
2983 If there is a problem computing the absolute path, the path is returned
2984 unchanged (still strdup'd). */
2985
2986char *
2987gdb_abspath (const char *path)
2988{
2989 gdb_assert (path != NULL && path[0] != '\0');
2990
2991 if (path[0] == '~')
2992 return tilde_expand (path);
2993
2994 if (IS_ABSOLUTE_PATH (path))
2995 return xstrdup (path);
2996
2997 /* Beware the // my son, the Emacs barfs, the botch that catch... */
2998 return concat (current_directory,
2999 IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
3000 ? "" : SLASH_STRING,
3001 path, (char *) NULL);
3002}
3003
5b03f266
AC
3004ULONGEST
3005align_up (ULONGEST v, int n)
3006{
3007 /* Check that N is really a power of two. */
3008 gdb_assert (n && (n & (n-1)) == 0);
3009 return (v + n - 1) & -n;
3010}
3011
3012ULONGEST
3013align_down (ULONGEST v, int n)
3014{
3015 /* Check that N is really a power of two. */
3016 gdb_assert (n && (n & (n-1)) == 0);
3017 return (v & -n);
3018}
ae5a43e0 3019
5bd1ef56
TT
3020/* See utils.h. */
3021
3022LONGEST
3023gdb_sign_extend (LONGEST value, int bit)
3024{
3025 gdb_assert (bit >= 1 && bit <= 8 * sizeof (LONGEST));
3026
3027 if (((value >> (bit - 1)) & 1) != 0)
3028 {
3029 LONGEST signbit = ((LONGEST) 1) << (bit - 1);
3030
3031 value = (value ^ signbit) - signbit;
3032 }
3033
3034 return value;
3035}
3036
ae5a43e0
DJ
3037/* Allocation function for the libiberty hash table which uses an
3038 obstack. The obstack is passed as DATA. */
3039
3040void *
3041hashtab_obstack_allocate (void *data, size_t size, size_t count)
3042{
241fd515 3043 size_t total = size * count;
ae5a43e0 3044 void *ptr = obstack_alloc ((struct obstack *) data, total);
e0627e85 3045
ae5a43e0
DJ
3046 memset (ptr, 0, total);
3047 return ptr;
3048}
3049
3050/* Trivial deallocation function for the libiberty splay tree and hash
3051 table - don't deallocate anything. Rely on later deletion of the
3052 obstack. DATA will be the obstack, although it is not needed
3053 here. */
3054
3055void
3056dummy_obstack_deallocate (void *object, void *data)
3057{
3058 return;
3059}
253c8abb
DJ
3060
3061/* The bit offset of the highest byte in a ULONGEST, for overflow
3062 checking. */
3063
3064#define HIGH_BYTE_POSN ((sizeof (ULONGEST) - 1) * HOST_CHAR_BIT)
3065
3066/* True (non-zero) iff DIGIT is a valid digit in radix BASE,
3067 where 2 <= BASE <= 36. */
3068
3069static int
3070is_digit_in_base (unsigned char digit, int base)
3071{
3072 if (!isalnum (digit))
3073 return 0;
3074 if (base <= 10)
3075 return (isdigit (digit) && digit < base + '0');
3076 else
3077 return (isdigit (digit) || tolower (digit) < base - 10 + 'a');
3078}
3079
3080static int
3081digit_to_int (unsigned char c)
3082{
3083 if (isdigit (c))
3084 return c - '0';
3085 else
3086 return tolower (c) - 'a' + 10;
3087}
3088
3089/* As for strtoul, but for ULONGEST results. */
3090
3091ULONGEST
3092strtoulst (const char *num, const char **trailer, int base)
3093{
3094 unsigned int high_part;
3095 ULONGEST result;
3096 int minus = 0;
3097 int i = 0;
3098
3099 /* Skip leading whitespace. */
3100 while (isspace (num[i]))
3101 i++;
3102
3103 /* Handle prefixes. */
3104 if (num[i] == '+')
3105 i++;
3106 else if (num[i] == '-')
3107 {
3108 minus = 1;
3109 i++;
3110 }
3111
3112 if (base == 0 || base == 16)
3113 {
3114 if (num[i] == '0' && (num[i + 1] == 'x' || num[i + 1] == 'X'))
3115 {
3116 i += 2;
3117 if (base == 0)
3118 base = 16;
3119 }
3120 }
3121
3122 if (base == 0 && num[i] == '0')
3123 base = 8;
3124
3125 if (base == 0)
3126 base = 10;
3127
3128 if (base < 2 || base > 36)
3129 {
3130 errno = EINVAL;
3131 return 0;
3132 }
3133
3134 result = high_part = 0;
3135 for (; is_digit_in_base (num[i], base); i += 1)
3136 {
3137 result = result * base + digit_to_int (num[i]);
3138 high_part = high_part * base + (unsigned int) (result >> HIGH_BYTE_POSN);
3139 result &= ((ULONGEST) 1 << HIGH_BYTE_POSN) - 1;
3140 if (high_part > 0xff)
3141 {
3142 errno = ERANGE;
3143 result = ~ (ULONGEST) 0;
3144 high_part = 0;
3145 minus = 0;
3146 break;
3147 }
3148 }
3149
3150 if (trailer != NULL)
3151 *trailer = &num[i];
3152
3153 result = result + ((ULONGEST) high_part << HIGH_BYTE_POSN);
3154 if (minus)
3155 return -result;
3156 else
3157 return result;
3158}
e1024ff1
DJ
3159
3160/* Simple, portable version of dirname that does not modify its
3161 argument. */
3162
3163char *
3164ldirname (const char *filename)
3165{
3166 const char *base = lbasename (filename);
3167 char *dirname;
3168
3169 while (base > filename && IS_DIR_SEPARATOR (base[-1]))
3170 --base;
3171
3172 if (base == filename)
3173 return NULL;
3174
3175 dirname = xmalloc (base - filename + 2);
3176 memcpy (dirname, filename, base - filename);
3177
3178 /* On DOS based file systems, convert "d:foo" to "d:.", so that we
3179 create "d:./bar" later instead of the (different) "d:/bar". */
3180 if (base - filename == 2 && IS_ABSOLUTE_PATH (base)
3181 && !IS_DIR_SEPARATOR (filename[0]))
3182 dirname[base++ - filename] = '.';
3183
3184 dirname[base - filename] = '\0';
3185 return dirname;
3186}
d1a41061
PP
3187
3188/* Call libiberty's buildargv, and return the result.
3189 If buildargv fails due to out-of-memory, call nomem.
3190 Therefore, the returned value is guaranteed to be non-NULL,
3191 unless the parameter itself is NULL. */
3192
3193char **
3194gdb_buildargv (const char *s)
3195{
3196 char **argv = buildargv (s);
e0627e85 3197
d1a41061 3198 if (s != NULL && argv == NULL)
d26e3629 3199 malloc_failure (0);
d1a41061
PP
3200 return argv;
3201}
3c16cced 3202
dc146f7c
VP
3203int
3204compare_positive_ints (const void *ap, const void *bp)
3205{
3206 /* Because we know we're comparing two ints which are positive,
3207 there's no danger of overflow here. */
3208 return * (int *) ap - * (int *) bp;
3209}
3210
f8eba3c6
TT
3211/* String compare function for qsort. */
3212
3213int
3214compare_strings (const void *arg1, const void *arg2)
3215{
3216 const char **s1 = (const char **) arg1;
3217 const char **s2 = (const char **) arg2;
3218
3219 return strcmp (*s1, *s2);
3220}
3221
d18b8b7a 3222#define AMBIGUOUS_MESS1 ".\nMatching formats:"
3e43a32a
MS
3223#define AMBIGUOUS_MESS2 \
3224 ".\nUse \"set gnutarget format-name\" to specify the format."
d18b8b7a
HZ
3225
3226const char *
3227gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
3228{
3229 char *ret, *retp;
3230 int ret_len;
3231 char **p;
3232
3233 /* Check if errmsg just need simple return. */
3234 if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL)
3235 return bfd_errmsg (error_tag);
3236
3237 ret_len = strlen (bfd_errmsg (error_tag)) + strlen (AMBIGUOUS_MESS1)
3238 + strlen (AMBIGUOUS_MESS2);
3239 for (p = matching; *p; p++)
3240 ret_len += strlen (*p) + 1;
3241 ret = xmalloc (ret_len + 1);
3242 retp = ret;
3243 make_cleanup (xfree, ret);
3244
3245 strcpy (retp, bfd_errmsg (error_tag));
3246 retp += strlen (retp);
3247
3248 strcpy (retp, AMBIGUOUS_MESS1);
3249 retp += strlen (retp);
3250
3251 for (p = matching; *p; p++)
3252 {
3253 sprintf (retp, " %s", *p);
3254 retp += strlen (retp);
3255 }
3256 xfree (matching);
3257
3258 strcpy (retp, AMBIGUOUS_MESS2);
3259
3260 return ret;
3261}
3262
74164c56
JK
3263/* Return ARGS parsed as a valid pid, or throw an error. */
3264
3265int
c0939df1 3266parse_pid_to_attach (const char *args)
74164c56
JK
3267{
3268 unsigned long pid;
3269 char *dummy;
3270
3271 if (!args)
3272 error_no_arg (_("process-id to attach"));
3273
c0939df1 3274 dummy = (char *) args;
74164c56
JK
3275 pid = strtoul (args, &dummy, 0);
3276 /* Some targets don't set errno on errors, grrr! */
3277 if ((pid == 0 && dummy == args) || dummy != &args[strlen (args)])
3278 error (_("Illegal process-id: %s."), args);
3279
3280 return pid;
3281}
3282
353d1d73
JK
3283/* Helper for make_bpstat_clear_actions_cleanup. */
3284
3285static void
3286do_bpstat_clear_actions_cleanup (void *unused)
3287{
3288 bpstat_clear_actions ();
3289}
3290
3291/* Call bpstat_clear_actions for the case an exception is throw. You should
3292 discard_cleanups if no exception is caught. */
3293
3294struct cleanup *
3295make_bpstat_clear_actions_cleanup (void)
3296{
3297 return make_cleanup (do_bpstat_clear_actions_cleanup, NULL);
3298}
3299
df15bd07
JK
3300/* Check for GCC >= 4.x according to the symtab->producer string. Return minor
3301 version (x) of 4.x in such case. If it is not GCC or it is GCC older than
3302 4.x return -1. If it is GCC 5.x or higher return INT_MAX. */
3303
3304int
3305producer_is_gcc_ge_4 (const char *producer)
3306{
3307 const char *cs;
3308 int major, minor;
3309
3310 if (producer == NULL)
3311 {
3312 /* For unknown compilers expect their behavior is not compliant. For GCC
3313 this case can also happen for -gdwarf-4 type units supported since
3314 gcc-4.5. */
3315
3316 return -1;
3317 }
3318
3319 /* Skip any identifier after "GNU " - such as "C++" or "Java". */
3320
3321 if (strncmp (producer, "GNU ", strlen ("GNU ")) != 0)
3322 {
3323 /* For non-GCC compilers expect their behavior is not compliant. */
3324
3325 return -1;
3326 }
3327 cs = &producer[strlen ("GNU ")];
3328 while (*cs && !isdigit (*cs))
3329 cs++;
3330 if (sscanf (cs, "%d.%d", &major, &minor) != 2)
3331 {
3332 /* Not recognized as GCC. */
3333
3334 return -1;
3335 }
3336
3337 if (major < 4)
3338 return -1;
3339 if (major > 4)
3340 return INT_MAX;
3341 return minor;
3342}
3343
e4ab2fad
JK
3344/* Helper for make_cleanup_free_char_ptr_vec. */
3345
3346static void
3347do_free_char_ptr_vec (void *arg)
3348{
3349 VEC (char_ptr) *char_ptr_vec = arg;
3350
3351 free_char_ptr_vec (char_ptr_vec);
3352}
3353
3354/* Make cleanup handler calling xfree for each element of CHAR_PTR_VEC and
3355 final VEC_free for CHAR_PTR_VEC itself.
3356
3357 You must not modify CHAR_PTR_VEC after this cleanup registration as the
3358 CHAR_PTR_VEC base address may change on its updates. Contrary to VEC_free
3359 this function does not (cannot) clear the pointer. */
3360
3361struct cleanup *
3362make_cleanup_free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec)
3363{
3364 return make_cleanup (do_free_char_ptr_vec, char_ptr_vec);
3365}
3366
6dea1fbd
JK
3367/* Substitute all occurences of string FROM by string TO in *STRINGP. *STRINGP
3368 must come from xrealloc-compatible allocator and it may be updated. FROM
1564a261
JK
3369 needs to be delimited by IS_DIR_SEPARATOR or DIRNAME_SEPARATOR (or be
3370 located at the start or end of *STRINGP. */
6dea1fbd
JK
3371
3372void
3373substitute_path_component (char **stringp, const char *from, const char *to)
3374{
3375 char *string = *stringp, *s;
3376 const size_t from_len = strlen (from);
3377 const size_t to_len = strlen (to);
3378
3379 for (s = string;;)
3380 {
3381 s = strstr (s, from);
3382 if (s == NULL)
3383 break;
3384
1564a261
JK
3385 if ((s == string || IS_DIR_SEPARATOR (s[-1])
3386 || s[-1] == DIRNAME_SEPARATOR)
3387 && (s[from_len] == '\0' || IS_DIR_SEPARATOR (s[from_len])
3388 || s[from_len] == DIRNAME_SEPARATOR))
6dea1fbd
JK
3389 {
3390 char *string_new;
3391
3392 string_new = xrealloc (string, (strlen (string) + to_len + 1));
3393
3394 /* Relocate the current S pointer. */
3395 s = s - string + string_new;
3396 string = string_new;
3397
3398 /* Replace from by to. */
3399 memmove (&s[to_len], &s[from_len], strlen (&s[from_len]) + 1);
3400 memcpy (s, to, to_len);
3401
3402 s += to_len;
3403 }
3404 else
3405 s++;
3406 }
3407
3408 *stringp = string;
3409}
3410
0b6cb71e
DE
3411#ifdef HAVE_WAITPID
3412
3413#ifdef SIGALRM
3414
3415/* SIGALRM handler for waitpid_with_timeout. */
3416
3417static void
3418sigalrm_handler (int signo)
3419{
3420 /* Nothing to do. */
3421}
3422
3423#endif
3424
3425/* Wrapper to wait for child PID to die with TIMEOUT.
3426 TIMEOUT is the time to stop waiting in seconds.
3427 If TIMEOUT is zero, pass WNOHANG to waitpid.
3428 Returns PID if it was successfully waited for, otherwise -1.
3429
3430 Timeouts are currently implemented with alarm and SIGALRM.
3431 If the host does not support them, this waits "forever".
3432 It would be odd though for a host to have waitpid and not SIGALRM. */
3433
3434pid_t
3435wait_to_die_with_timeout (pid_t pid, int *status, int timeout)
3436{
3437 pid_t waitpid_result;
3438
3439 gdb_assert (pid > 0);
3440 gdb_assert (timeout >= 0);
3441
3442 if (timeout > 0)
3443 {
3444#ifdef SIGALRM
3445#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
3446 struct sigaction sa, old_sa;
3447
3448 sa.sa_handler = sigalrm_handler;
3449 sigemptyset (&sa.sa_mask);
3450 sa.sa_flags = 0;
3451 sigaction (SIGALRM, &sa, &old_sa);
3452#else
3453 void (*ofunc) ();
3454
3455 ofunc = (void (*)()) signal (SIGALRM, sigalrm_handler);
3456#endif
3457
3458 alarm (timeout);
3459#endif
3460
3461 waitpid_result = waitpid (pid, status, 0);
3462
3463#ifdef SIGALRM
3464 alarm (0);
3465#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
3466 sigaction (SIGALRM, &old_sa, NULL);
3467#else
3468 signal (SIGALRM, ofunc);
3469#endif
3470#endif
3471 }
3472 else
3473 waitpid_result = waitpid (pid, status, WNOHANG);
3474
3475 if (waitpid_result == pid)
3476 return pid;
3477 else
3478 return -1;
3479}
3480
3481#endif /* HAVE_WAITPID */
3482
202cbf1c
JK
3483/* Provide fnmatch compatible function for FNM_FILE_NAME matching of host files.
3484 Both FNM_FILE_NAME and FNM_NOESCAPE must be set in FLAGS.
3485
3486 It handles correctly HAVE_DOS_BASED_FILE_SYSTEM and
3487 HAVE_CASE_INSENSITIVE_FILE_SYSTEM. */
3488
3489int
3490gdb_filename_fnmatch (const char *pattern, const char *string, int flags)
3491{
3492 gdb_assert ((flags & FNM_FILE_NAME) != 0);
3493
3494 /* It is unclear how '\' escaping vs. directory separator should coexist. */
3495 gdb_assert ((flags & FNM_NOESCAPE) != 0);
3496
3497#ifdef HAVE_DOS_BASED_FILE_SYSTEM
3498 {
3499 char *pattern_slash, *string_slash;
3500
3501 /* Replace '\' by '/' in both strings. */
3502
3503 pattern_slash = alloca (strlen (pattern) + 1);
3504 strcpy (pattern_slash, pattern);
3505 pattern = pattern_slash;
3506 for (; *pattern_slash != 0; pattern_slash++)
3507 if (IS_DIR_SEPARATOR (*pattern_slash))
3508 *pattern_slash = '/';
3509
3510 string_slash = alloca (strlen (string) + 1);
3511 strcpy (string_slash, string);
3512 string = string_slash;
3513 for (; *string_slash != 0; string_slash++)
3514 if (IS_DIR_SEPARATOR (*string_slash))
3515 *string_slash = '/';
3516 }
3517#endif /* HAVE_DOS_BASED_FILE_SYSTEM */
3518
3519#ifdef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
3520 flags |= FNM_CASEFOLD;
3521#endif /* HAVE_CASE_INSENSITIVE_FILE_SYSTEM */
3522
3523 return fnmatch (pattern, string, flags);
3524}
3525
2c0b251b
PA
3526/* Provide a prototype to silence -Wmissing-prototypes. */
3527extern initialize_file_ftype _initialize_utils;
3528
3c16cced
PA
3529void
3530_initialize_utils (void)
3531{
3532 add_internal_problem_command (&internal_error_problem);
3533 add_internal_problem_command (&internal_warning_problem);
57fcfb1b 3534 add_internal_problem_command (&demangler_warning_problem);
3c16cced 3535}