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