OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [top.c] - Blame information for rev 252

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
/* Top level stuff for GDB, the GNU debugger.
2
 
3
   Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4
   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5
   2008, 2009, 2010 Free Software Foundation, Inc.
6
 
7
   This file is part of GDB.
8
 
9
   This program is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 3 of the License, or
12
   (at your option) any later version.
13
 
14
   This program is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
 
22
#include "defs.h"
23
#include "gdbcmd.h"
24
#include "call-cmds.h"
25
#include "cli/cli-cmds.h"
26
#include "cli/cli-script.h"
27
#include "cli/cli-setshow.h"
28
#include "cli/cli-decode.h"
29
#include "symtab.h"
30
#include "inferior.h"
31
#include "exceptions.h"
32
#include <signal.h>
33
#include "target.h"
34
#include "breakpoint.h"
35
#include "gdbtypes.h"
36
#include "expression.h"
37
#include "value.h"
38
#include "language.h"
39
#include "terminal.h"           /* For job_control.  */
40
#include "annotate.h"
41
#include "completer.h"
42
#include "top.h"
43
#include "version.h"
44
#include "serial.h"
45
#include "doublest.h"
46
#include "gdb_assert.h"
47
#include "main.h"
48
#include "event-loop.h"
49
#include "gdbthread.h"
50
 
51
/* readline include files */
52
#include "readline/readline.h"
53
#include "readline/history.h"
54
 
55
/* readline defines this.  */
56
#undef savestring
57
 
58
#include <sys/types.h>
59
 
60
#include "event-top.h"
61
#include "gdb_string.h"
62
#include "gdb_stat.h"
63
#include <ctype.h>
64
#include "ui-out.h"
65
#include "cli-out.h"
66
 
67
/* Default command line prompt.  This is overriden in some configs. */
68
 
69
#ifndef DEFAULT_PROMPT
70
#define DEFAULT_PROMPT  "(gdb) "
71
#endif
72
 
73
/* Initialization file name for gdb.  This is overridden in some configs.  */
74
 
75
#ifndef PATH_MAX
76
# ifdef FILENAME_MAX
77
#  define PATH_MAX FILENAME_MAX
78
# else
79
#  define PATH_MAX 512
80
# endif
81
#endif
82
 
83
#ifndef GDBINIT_FILENAME
84
#define GDBINIT_FILENAME        ".gdbinit"
85
#endif
86
char gdbinit[PATH_MAX + 1] = GDBINIT_FILENAME;
87
 
88
int inhibit_gdbinit = 0;
89
 
90
/* If nonzero, and GDB has been configured to be able to use windows,
91
   attempt to open them upon startup.  */
92
 
93
int use_windows = 0;
94
 
95
extern char lang_frame_mismatch_warn[];         /* language.c */
96
 
97
/* Flag for whether we want all the "from_tty" gubbish printed.  */
98
 
99
int caution = 1;                /* Default is yes, sigh. */
100
static void
101
show_caution (struct ui_file *file, int from_tty,
102
              struct cmd_list_element *c, const char *value)
103
{
104
  fprintf_filtered (file, _("\
105
Whether to confirm potentially dangerous operations is %s.\n"),
106
                    value);
107
}
108
 
109
/* stdio stream that command input is being read from.  Set to stdin normally.
110
   Set by source_command to the file we are sourcing.  Set to NULL if we are
111
   executing a user-defined command or interacting via a GUI.  */
112
 
113
FILE *instream;
114
 
115
/* Flag to indicate whether a user defined command is currently running.  */
116
 
117
int in_user_command;
118
 
119
/* Current working directory.  */
120
 
121
char *current_directory;
122
 
123
/* The directory name is actually stored here (usually).  */
124
char gdb_dirbuf[1024];
125
 
126
/* Function to call before reading a command, if nonzero.
127
   The function receives two args: an input stream,
128
   and a prompt string.  */
129
 
130
void (*window_hook) (FILE *, char *);
131
 
132
int epoch_interface;
133
int xgdb_verbose;
134
 
135
/* Buffer used for reading command lines, and the size
136
   allocated for it so far.  */
137
 
138
char *line;
139
int linesize = 100;
140
 
141
/* Nonzero if the current command is modified by "server ".  This
142
   affects things like recording into the command history, commands
143
   repeating on RETURN, etc.  This is so a user interface (emacs, GUI,
144
   whatever) can issue its own commands and also send along commands
145
   from the user, and have the user not notice that the user interface
146
   is issuing commands too.  */
147
int server_command;
148
 
149
/* Baud rate specified for talking to serial target systems.  Default
150
   is left as -1, so targets can choose their own defaults.  */
151
/* FIXME: This means that "show remotebaud" and gr_files_info can print -1
152
   or (unsigned int)-1.  This is a Bad User Interface.  */
153
 
154
int baud_rate = -1;
155
 
156
/* Timeout limit for response from target. */
157
 
158
/* The default value has been changed many times over the years.  It
159
   was originally 5 seconds.  But that was thought to be a long time
160
   to sit and wait, so it was changed to 2 seconds.  That was thought
161
   to be plenty unless the connection was going through some terminal
162
   server or multiplexer or other form of hairy serial connection.
163
 
164
   In mid-1996, remote_timeout was moved from remote.c to top.c and
165
   it began being used in other remote-* targets.  It appears that the
166
   default was changed to 20 seconds at that time, perhaps because the
167
   Renesas E7000 ICE didn't always respond in a timely manner.
168
 
169
   But if 5 seconds is a long time to sit and wait for retransmissions,
170
   20 seconds is far worse.  This demonstrates the difficulty of using
171
   a single variable for all protocol timeouts.
172
 
173
   As remote.c is used much more than remote-e7000.c, it was changed
174
   back to 2 seconds in 1999. */
175
 
176
int remote_timeout = 2;
177
 
178
/* Non-zero tells remote* modules to output debugging info.  */
179
 
180
int remote_debug = 0;
181
 
182
/* Sbrk location on entry to main.  Used for statistics only.  */
183
#ifdef HAVE_SBRK
184
char *lim_at_start;
185
#endif
186
 
187
/* Hooks for alternate command interfaces.  */
188
 
189
/* Called after most modules have been initialized, but before taking users
190
   command file.
191
 
192
   If the UI fails to initialize and it wants GDB to continue
193
   using the default UI, then it should clear this hook before returning. */
194
 
195
void (*deprecated_init_ui_hook) (char *argv0);
196
 
197
/* This hook is called from within gdb's many mini-event loops which could
198
   steal control from a real user interface's event loop. It returns
199
   non-zero if the user is requesting a detach, zero otherwise. */
200
 
201
int (*deprecated_ui_loop_hook) (int);
202
 
203
/* Called instead of command_loop at top level.  Can be invoked via
204
   throw_exception().  */
205
 
206
void (*deprecated_command_loop_hook) (void);
207
 
208
 
209
/* Called from print_frame_info to list the line we stopped in.  */
210
 
211
void (*deprecated_print_frame_info_listing_hook) (struct symtab * s, int line,
212
                                                  int stopline, int noerror);
213
/* Replaces most of query.  */
214
 
215
int (*deprecated_query_hook) (const char *, va_list);
216
 
217
/* Replaces most of warning.  */
218
 
219
void (*deprecated_warning_hook) (const char *, va_list);
220
 
221
/* These three functions support getting lines of text from the user.
222
   They are used in sequence.  First deprecated_readline_begin_hook is
223
   called with a text string that might be (for example) a message for
224
   the user to type in a sequence of commands to be executed at a
225
   breakpoint.  If this function calls back to a GUI, it might take
226
   this opportunity to pop up a text interaction window with this
227
   message.  Next, deprecated_readline_hook is called with a prompt
228
   that is emitted prior to collecting the user input.  It can be
229
   called multiple times.  Finally, deprecated_readline_end_hook is
230
   called to notify the GUI that we are done with the interaction
231
   window and it can close it.  */
232
 
233
void (*deprecated_readline_begin_hook) (char *, ...);
234
char *(*deprecated_readline_hook) (char *);
235
void (*deprecated_readline_end_hook) (void);
236
 
237
/* Called as appropriate to notify the interface that we have attached
238
   to or detached from an already running process. */
239
 
240
void (*deprecated_attach_hook) (void);
241
void (*deprecated_detach_hook) (void);
242
 
243
/* Called during long calculations to allow GUI to repair window damage, and to
244
   check for stop buttons, etc... */
245
 
246
void (*deprecated_interactive_hook) (void);
247
 
248
/* Tell the GUI someone changed the register REGNO. -1 means
249
   that the caller does not know which register changed or
250
   that several registers have changed (see value_assign). */
251
void (*deprecated_register_changed_hook) (int regno);
252
 
253
/* Called when going to wait for the target.  Usually allows the GUI to run
254
   while waiting for target events.  */
255
 
256
ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
257
                                       struct target_waitstatus *status,
258
                                       int options);
259
 
260
/* Used by UI as a wrapper around command execution.  May do various things
261
   like enabling/disabling buttons, etc...  */
262
 
263
void (*deprecated_call_command_hook) (struct cmd_list_element * c, char *cmd,
264
                                      int from_tty);
265
 
266
/* Called after a `set' command has finished.  Is only run if the
267
   `set' command succeeded.  */
268
 
269
void (*deprecated_set_hook) (struct cmd_list_element * c);
270
 
271
/* Called when the current thread changes.  Argument is thread id.  */
272
 
273
void (*deprecated_context_hook) (int id);
274
 
275
/* Handler for SIGHUP.  */
276
 
277
#ifdef SIGHUP
278
/* NOTE 1999-04-29: This function will be static again, once we modify
279
   gdb to use the event loop as the default command loop and we merge
280
   event-top.c into this file, top.c */
281
/* static */ int
282
quit_cover (void *s)
283
{
284
  caution = 0;                   /* Throw caution to the wind -- we're exiting.
285
                                   This prevents asking the user dumb questions.  */
286
  quit_command ((char *) 0, 0);
287
  return 0;
288
}
289
#endif /* defined SIGHUP */
290
 
291
/* Line number we are currently in in a file which is being sourced.  */
292
/* NOTE 1999-04-29: This variable will be static again, once we modify
293
   gdb to use the event loop as the default command loop and we merge
294
   event-top.c into this file, top.c */
295
/* static */ int source_line_number;
296
 
297
/* Name of the file we are sourcing.  */
298
/* NOTE 1999-04-29: This variable will be static again, once we modify
299
   gdb to use the event loop as the default command loop and we merge
300
   event-top.c into this file, top.c */
301
/* static */ char *source_file_name;
302
 
303
/* Clean up on error during a "source" command (or execution of a
304
   user-defined command).  */
305
 
306
void
307
do_restore_instream_cleanup (void *stream)
308
{
309
  /* Restore the previous input stream.  */
310
  instream = stream;
311
}
312
 
313
/* Read commands from STREAM.  */
314
void
315
read_command_file (FILE *stream)
316
{
317
  struct cleanup *cleanups;
318
 
319
  cleanups = make_cleanup (do_restore_instream_cleanup, instream);
320
  instream = stream;
321
  command_loop ();
322
  do_cleanups (cleanups);
323
}
324
 
325
void (*pre_init_ui_hook) (void);
326
 
327
#ifdef __MSDOS__
328
void
329
do_chdir_cleanup (void *old_dir)
330
{
331
  chdir (old_dir);
332
  xfree (old_dir);
333
}
334
#endif
335
 
336
void
337
prepare_execute_command (void)
338
{
339
  free_all_values ();
340
 
341
  /* With multiple threads running while the one we're examining is stopped,
342
     the dcache can get stale without us being able to detect it.
343
     For the duration of the command, though, use the dcache to help
344
     things like backtrace.  */
345
  if (non_stop)
346
    target_dcache_invalidate ();
347
}
348
 
349
/* Execute the line P as a command, in the current user context.
350
   Pass FROM_TTY as second argument to the defining function.  */
351
 
352
void
353
execute_command (char *p, int from_tty)
354
{
355
  struct cmd_list_element *c;
356
  enum language flang;
357
  static int warned = 0;
358
  char *line;
359
  long time_at_cmd_start = 0;
360
#ifdef HAVE_SBRK
361
  long space_at_cmd_start = 0;
362
#endif
363
  extern int display_time;
364
  extern int display_space;
365
 
366
  if (target_can_async_p ())
367
    {
368
      time_at_cmd_start = get_run_time ();
369
 
370
      if (display_space)
371
        {
372
#ifdef HAVE_SBRK
373
          char *lim = (char *) sbrk (0);
374
          space_at_cmd_start = lim - lim_at_start;
375
#endif
376
        }
377
    }
378
 
379
  prepare_execute_command ();
380
 
381
  /* Force cleanup of any alloca areas if using C alloca instead of
382
     a builtin alloca.  */
383
  alloca (0);
384
 
385
  /* This can happen when command_line_input hits end of file.  */
386
  if (p == NULL)
387
    return;
388
 
389
  target_log_command (p);
390
 
391
  while (*p == ' ' || *p == '\t')
392
    p++;
393
  if (*p)
394
    {
395
      char *arg;
396
      line = p;
397
 
398
      /* If trace-commands is set then this will print this command.  */
399
      print_command_trace (p);
400
 
401
      c = lookup_cmd (&p, cmdlist, "", 0, 1);
402
 
403
      /* Pass null arg rather than an empty one.  */
404
      arg = *p ? p : 0;
405
 
406
      /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy
407
         while the is_complete_command(cfunc) test is just plain
408
         bogus.  They should both be replaced by a test of the form
409
         c->strip_trailing_white_space_p.  */
410
      /* NOTE: cagney/2002-02-02: The function.cfunc in the below
411
         can't be replaced with func.  This is because it is the
412
         cfunc, and not the func, that has the value that the
413
         is_complete_command hack is testing for.  */
414
      /* Clear off trailing whitespace, except for set and complete
415
         command.  */
416
      if (arg
417
          && c->type != set_cmd
418
          && !is_complete_command (c))
419
        {
420
          p = arg + strlen (arg) - 1;
421
          while (p >= arg && (*p == ' ' || *p == '\t'))
422
            p--;
423
          *(p + 1) = '\0';
424
        }
425
 
426
      /* If this command has been pre-hooked, run the hook first. */
427
      execute_cmd_pre_hook (c);
428
 
429
      if (c->flags & DEPRECATED_WARN_USER)
430
        deprecated_cmd_warning (&line);
431
 
432
      if (c->class == class_user)
433
        execute_user_command (c, arg);
434
      else if (c->type == set_cmd || c->type == show_cmd)
435
        do_setshow_command (arg, from_tty & caution, c);
436
      else if (!cmd_func_p (c))
437
        error (_("That is not a command, just a help topic."));
438
      else if (deprecated_call_command_hook)
439
        deprecated_call_command_hook (c, arg, from_tty & caution);
440
      else
441
        cmd_func (c, arg, from_tty & caution);
442
 
443
      /* If this command has been post-hooked, run the hook last. */
444
      execute_cmd_post_hook (c);
445
 
446
    }
447
 
448
  /* Tell the user if the language has changed (except first time).
449
     First make sure that a new frame has been selected, in case this
450
     command or the hooks changed the program state.  */
451
  deprecated_safe_get_selected_frame ();
452
  if (current_language != expected_language)
453
    {
454
      if (language_mode == language_mode_auto && info_verbose)
455
        {
456
          language_info (1);    /* Print what changed.  */
457
        }
458
      warned = 0;
459
    }
460
 
461
  /* Warn the user if the working language does not match the
462
     language of the current frame.  Only warn the user if we are
463
     actually running the program, i.e. there is a stack. */
464
  /* FIXME:  This should be cacheing the frame and only running when
465
     the frame changes.  */
466
 
467
  if (has_stack_frames ())
468
    {
469
      flang = get_frame_language ();
470
      if (!warned
471
          && flang != language_unknown
472
          && flang != current_language->la_language)
473
        {
474
          printf_filtered ("%s\n", lang_frame_mismatch_warn);
475
          warned = 1;
476
        }
477
    }
478
}
479
 
480
/* Read commands from `instream' and execute them
481
   until end of file or error reading instream.  */
482
 
483
void
484
command_loop (void)
485
{
486
  struct cleanup *old_chain;
487
  char *command;
488
  int stdin_is_tty = ISATTY (stdin);
489
  long time_at_cmd_start;
490
#ifdef HAVE_SBRK
491
  long space_at_cmd_start = 0;
492
#endif
493
  extern int display_time;
494
  extern int display_space;
495
 
496
  while (instream && !feof (instream))
497
    {
498
      if (window_hook && instream == stdin)
499
        (*window_hook) (instream, get_prompt ());
500
 
501
      quit_flag = 0;
502
      if (instream == stdin && stdin_is_tty)
503
        reinitialize_more_filter ();
504
      old_chain = make_cleanup (null_cleanup, 0);
505
 
506
      /* Get a command-line. This calls the readline package. */
507
      command = command_line_input (instream == stdin ?
508
                                    get_prompt () : (char *) NULL,
509
                                    instream == stdin, "prompt");
510
      if (command == 0)
511
        return;
512
 
513
      time_at_cmd_start = get_run_time ();
514
 
515
      if (display_space)
516
        {
517
#ifdef HAVE_SBRK
518
          char *lim = (char *) sbrk (0);
519
          space_at_cmd_start = lim - lim_at_start;
520
#endif
521
        }
522
 
523
      execute_command (command, instream == stdin);
524
 
525
      /* Do any commands attached to breakpoint we are stopped at.  */
526
      bpstat_do_actions ();
527
 
528
      do_cleanups (old_chain);
529
 
530
      if (display_time)
531
        {
532
          long cmd_time = get_run_time () - time_at_cmd_start;
533
 
534
          printf_unfiltered (_("Command execution time: %ld.%06ld\n"),
535
                             cmd_time / 1000000, cmd_time % 1000000);
536
        }
537
 
538
      if (display_space)
539
        {
540
#ifdef HAVE_SBRK
541
          char *lim = (char *) sbrk (0);
542
          long space_now = lim - lim_at_start;
543
          long space_diff = space_now - space_at_cmd_start;
544
 
545
          printf_unfiltered (_("Space used: %ld (%s%ld for this command)\n"),
546
                             space_now,
547
                             (space_diff >= 0 ? "+" : ""),
548
                             space_diff);
549
#endif
550
        }
551
    }
552
}
553
 
554
/* Commands call this if they do not want to be repeated by null lines.  */
555
 
556
void
557
dont_repeat (void)
558
{
559
  if (server_command)
560
    return;
561
 
562
  /* If we aren't reading from standard input, we are saving the last
563
     thing read from stdin in line and don't want to delete it.  Null lines
564
     won't repeat here in any case.  */
565
  if (instream == stdin)
566
    *line = 0;
567
}
568
 
569
/* Read a line from the stream "instream" without command line editing.
570
 
571
   It prints PROMPT_ARG once at the start.
572
   Action is compatible with "readline", e.g. space for the result is
573
   malloc'd and should be freed by the caller.
574
 
575
   A NULL return means end of file.  */
576
char *
577
gdb_readline (char *prompt_arg)
578
{
579
  int c;
580
  char *result;
581
  int input_index = 0;
582
  int result_size = 80;
583
 
584
  if (prompt_arg)
585
    {
586
      /* Don't use a _filtered function here.  It causes the assumed
587
         character position to be off, since the newline we read from
588
         the user is not accounted for.  */
589
      fputs_unfiltered (prompt_arg, gdb_stdout);
590
      gdb_flush (gdb_stdout);
591
    }
592
 
593
  result = (char *) xmalloc (result_size);
594
 
595
  while (1)
596
    {
597
      /* Read from stdin if we are executing a user defined command.
598
         This is the right thing for prompt_for_continue, at least.  */
599
      c = fgetc (instream ? instream : stdin);
600
 
601
      if (c == EOF)
602
        {
603
          if (input_index > 0)
604
            /* The last line does not end with a newline.  Return it, and
605
               if we are called again fgetc will still return EOF and
606
               we'll return NULL then.  */
607
            break;
608
          xfree (result);
609
          return NULL;
610
        }
611
 
612
      if (c == '\n')
613
        {
614
          if (input_index > 0 && result[input_index - 1] == '\r')
615
            input_index--;
616
          break;
617
        }
618
 
619
      result[input_index++] = c;
620
      while (input_index >= result_size)
621
        {
622
          result_size *= 2;
623
          result = (char *) xrealloc (result, result_size);
624
        }
625
    }
626
 
627
  result[input_index++] = '\0';
628
  return result;
629
}
630
 
631
/* Variables which control command line editing and history
632
   substitution.  These variables are given default values at the end
633
   of this file.  */
634
static int command_editing_p;
635
 
636
/* NOTE 1999-04-29: This variable will be static again, once we modify
637
   gdb to use the event loop as the default command loop and we merge
638
   event-top.c into this file, top.c */
639
 
640
/* static */ int history_expansion_p;
641
 
642
static int write_history_p;
643
static void
644
show_write_history_p (struct ui_file *file, int from_tty,
645
                      struct cmd_list_element *c, const char *value)
646
{
647
  fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
648
                    value);
649
}
650
 
651
static int history_size;
652
static void
653
show_history_size (struct ui_file *file, int from_tty,
654
                   struct cmd_list_element *c, const char *value)
655
{
656
  fprintf_filtered (file, _("The size of the command history is %s.\n"),
657
                    value);
658
}
659
 
660
static char *history_filename;
661
static void
662
show_history_filename (struct ui_file *file, int from_tty,
663
                       struct cmd_list_element *c, const char *value)
664
{
665
  fprintf_filtered (file, _("\
666
The filename in which to record the command history is \"%s\".\n"),
667
                    value);
668
}
669
 
670
/* This is like readline(), but it has some gdb-specific behavior.
671
   gdb may want readline in both the synchronous and async modes during
672
   a single gdb invocation.  At the ordinary top-level prompt we might
673
   be using the async readline.  That means we can't use
674
   rl_pre_input_hook, since it doesn't work properly in async mode.
675
   However, for a secondary prompt (" >", such as occurs during a
676
   `define'), gdb wants a synchronous response.
677
 
678
   We used to call readline() directly, running it in synchronous
679
   mode.  But mixing modes this way is not supported, and as of
680
   readline 5.x it no longer works; the arrow keys come unbound during
681
   the synchronous call.  So we make a nested call into the event
682
   loop.  That's what gdb_readline_wrapper is for.  */
683
 
684
/* A flag set as soon as gdb_readline_wrapper_line is called; we can't
685
   rely on gdb_readline_wrapper_result, which might still be NULL if
686
   the user types Control-D for EOF.  */
687
static int gdb_readline_wrapper_done;
688
 
689
/* The result of the current call to gdb_readline_wrapper, once a newline
690
   is seen.  */
691
static char *gdb_readline_wrapper_result;
692
 
693
/* Any intercepted hook.  Operate-and-get-next sets this, expecting it
694
   to be called after the newline is processed (which will redisplay
695
   the prompt).  But in gdb_readline_wrapper we will not get a new
696
   prompt until the next call, or until we return to the event loop.
697
   So we disable this hook around the newline and restore it before we
698
   return.  */
699
static void (*saved_after_char_processing_hook) (void);
700
 
701
/* This function is called when readline has seen a complete line of
702
   text.  */
703
 
704
static void
705
gdb_readline_wrapper_line (char *line)
706
{
707
  gdb_assert (!gdb_readline_wrapper_done);
708
  gdb_readline_wrapper_result = line;
709
  gdb_readline_wrapper_done = 1;
710
 
711
  /* Prevent operate-and-get-next from acting too early.  */
712
  saved_after_char_processing_hook = after_char_processing_hook;
713
  after_char_processing_hook = NULL;
714
 
715
  /* Prevent parts of the prompt from being redisplayed if annotations
716
     are enabled, and readline's state getting out of sync.  */
717
  if (async_command_editing_p)
718
    rl_callback_handler_remove ();
719
}
720
 
721
struct gdb_readline_wrapper_cleanup
722
  {
723
    void (*handler_orig) (char *);
724
    int already_prompted_orig;
725
  };
726
 
727
static void
728
gdb_readline_wrapper_cleanup (void *arg)
729
{
730
  struct gdb_readline_wrapper_cleanup *cleanup = arg;
731
 
732
  rl_already_prompted = cleanup->already_prompted_orig;
733
 
734
  gdb_assert (input_handler == gdb_readline_wrapper_line);
735
  input_handler = cleanup->handler_orig;
736
  gdb_readline_wrapper_result = NULL;
737
  gdb_readline_wrapper_done = 0;
738
 
739
  after_char_processing_hook = saved_after_char_processing_hook;
740
  saved_after_char_processing_hook = NULL;
741
 
742
  xfree (cleanup);
743
}
744
 
745
char *
746
gdb_readline_wrapper (char *prompt)
747
{
748
  struct cleanup *back_to;
749
  struct gdb_readline_wrapper_cleanup *cleanup;
750
  char *retval;
751
 
752
  cleanup = xmalloc (sizeof (*cleanup));
753
  cleanup->handler_orig = input_handler;
754
  input_handler = gdb_readline_wrapper_line;
755
 
756
  cleanup->already_prompted_orig = rl_already_prompted;
757
 
758
  back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
759
 
760
  /* Display our prompt and prevent double prompt display.  */
761
  display_gdb_prompt (prompt);
762
  rl_already_prompted = 1;
763
 
764
  if (after_char_processing_hook)
765
    (*after_char_processing_hook) ();
766
  gdb_assert (after_char_processing_hook == NULL);
767
 
768
  /* gdb_do_one_event argument is unused.  */
769
  while (gdb_do_one_event (NULL) >= 0)
770
    if (gdb_readline_wrapper_done)
771
      break;
772
 
773
  retval = gdb_readline_wrapper_result;
774
  do_cleanups (back_to);
775
  return retval;
776
}
777
 
778
 
779
/* The current saved history number from operate-and-get-next.
780
   This is -1 if not valid.  */
781
static int operate_saved_history = -1;
782
 
783
/* This is put on the appropriate hook and helps operate-and-get-next
784
   do its work.  */
785
static void
786
gdb_rl_operate_and_get_next_completion (void)
787
{
788
  int delta = where_history () - operate_saved_history;
789
  /* The `key' argument to rl_get_previous_history is ignored.  */
790
  rl_get_previous_history (delta, 0);
791
  operate_saved_history = -1;
792
 
793
  /* readline doesn't automatically update the display for us.  */
794
  rl_redisplay ();
795
 
796
  after_char_processing_hook = NULL;
797
  rl_pre_input_hook = NULL;
798
}
799
 
800
/* This is a gdb-local readline command handler.  It accepts the
801
   current command line (like RET does) and, if this command was taken
802
   from the history, arranges for the next command in the history to
803
   appear on the command line when the prompt returns.
804
   We ignore the arguments.  */
805
static int
806
gdb_rl_operate_and_get_next (int count, int key)
807
{
808
  int where;
809
 
810
  /* Use the async hook.  */
811
  after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
812
 
813
  /* Find the current line, and find the next line to use.  */
814
  where = where_history();
815
 
816
  /* FIXME: kettenis/20020817: max_input_history is renamed into
817
     history_max_entries in readline-4.2.  When we do a new readline
818
     import, we should probably change it here too, even though
819
     readline maintains backwards compatibility for now by still
820
     defining max_input_history.  */
821
  if ((history_is_stifled () && (history_length >= max_input_history)) ||
822
      (where >= history_length - 1))
823
    operate_saved_history = where;
824
  else
825
    operate_saved_history = where + 1;
826
 
827
  return rl_newline (1, key);
828
}
829
 
830
/* Read one line from the command input stream `instream'
831
   into the local static buffer `linebuffer' (whose current length
832
   is `linelength').
833
   The buffer is made bigger as necessary.
834
   Returns the address of the start of the line.
835
 
836
   NULL is returned for end of file.
837
 
838
   *If* the instream == stdin & stdin is a terminal, the line read
839
   is copied into the file line saver (global var char *line,
840
   length linesize) so that it can be duplicated.
841
 
842
   This routine either uses fancy command line editing or
843
   simple input as the user has requested.  */
844
 
845
char *
846
command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
847
{
848
  static char *linebuffer = 0;
849
  static unsigned linelength = 0;
850
  char *p;
851
  char *p1;
852
  char *rl;
853
  char *local_prompt = prompt_arg;
854
  char *nline;
855
  char got_eof = 0;
856
 
857
  /* The annotation suffix must be non-NULL.  */
858
  if (annotation_suffix == NULL)
859
    annotation_suffix = "";
860
 
861
  if (annotation_level > 1 && instream == stdin)
862
    {
863
      local_prompt = alloca ((prompt_arg == NULL ? 0 : strlen (prompt_arg))
864
                             + strlen (annotation_suffix) + 40);
865
      if (prompt_arg == NULL)
866
        local_prompt[0] = '\0';
867
      else
868
        strcpy (local_prompt, prompt_arg);
869
      strcat (local_prompt, "\n\032\032");
870
      strcat (local_prompt, annotation_suffix);
871
      strcat (local_prompt, "\n");
872
    }
873
 
874
  if (linebuffer == 0)
875
    {
876
      linelength = 80;
877
      linebuffer = (char *) xmalloc (linelength);
878
    }
879
 
880
  p = linebuffer;
881
 
882
  /* Control-C quits instantly if typed while in this loop
883
     since it should not wait until the user types a newline.  */
884
  immediate_quit++;
885
#ifdef STOP_SIGNAL
886
  if (job_control)
887
    signal (STOP_SIGNAL, handle_stop_sig);
888
#endif
889
 
890
  while (1)
891
    {
892
      /* Make sure that all output has been output.  Some machines may let
893
         you get away with leaving out some of the gdb_flush, but not all.  */
894
      wrap_here ("");
895
      gdb_flush (gdb_stdout);
896
      gdb_flush (gdb_stderr);
897
 
898
      if (source_file_name != NULL)
899
        ++source_line_number;
900
 
901
      if (annotation_level > 1 && instream == stdin)
902
        {
903
          puts_unfiltered ("\n\032\032pre-");
904
          puts_unfiltered (annotation_suffix);
905
          puts_unfiltered ("\n");
906
        }
907
 
908
      /* Don't use fancy stuff if not talking to stdin.  */
909
      if (deprecated_readline_hook && input_from_terminal_p ())
910
        {
911
          rl = (*deprecated_readline_hook) (local_prompt);
912
        }
913
      else if (command_editing_p && input_from_terminal_p ())
914
        {
915
          rl = gdb_readline_wrapper (local_prompt);
916
        }
917
      else
918
        {
919
          rl = gdb_readline (local_prompt);
920
        }
921
 
922
      if (annotation_level > 1 && instream == stdin)
923
        {
924
          puts_unfiltered ("\n\032\032post-");
925
          puts_unfiltered (annotation_suffix);
926
          puts_unfiltered ("\n");
927
        }
928
 
929
      if (!rl || rl == (char *) EOF)
930
        {
931
          got_eof = 1;
932
          break;
933
        }
934
      if (strlen (rl) + 1 + (p - linebuffer) > linelength)
935
        {
936
          linelength = strlen (rl) + 1 + (p - linebuffer);
937
          nline = (char *) xrealloc (linebuffer, linelength);
938
          p += nline - linebuffer;
939
          linebuffer = nline;
940
        }
941
      p1 = rl;
942
      /* Copy line.  Don't copy null at end.  (Leaves line alone
943
         if this was just a newline)  */
944
      while (*p1)
945
        *p++ = *p1++;
946
 
947
      xfree (rl);               /* Allocated in readline.  */
948
 
949
      if (p == linebuffer || *(p - 1) != '\\')
950
        break;
951
 
952
      p--;                      /* Put on top of '\'.  */
953
      local_prompt = (char *) 0;
954
    }
955
 
956
#ifdef STOP_SIGNAL
957
  if (job_control)
958
    signal (STOP_SIGNAL, SIG_DFL);
959
#endif
960
  immediate_quit--;
961
 
962
  if (got_eof)
963
    return NULL;
964
 
965
#define SERVER_COMMAND_LENGTH 7
966
  server_command =
967
    (p - linebuffer > SERVER_COMMAND_LENGTH)
968
    && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
969
  if (server_command)
970
    {
971
      /* Note that we don't set `line'.  Between this and the check in
972
         dont_repeat, this insures that repeating will still do the
973
         right thing.  */
974
      *p = '\0';
975
      return linebuffer + SERVER_COMMAND_LENGTH;
976
    }
977
 
978
  /* Do history expansion if that is wished.  */
979
  if (history_expansion_p && instream == stdin
980
      && ISATTY (instream))
981
    {
982
      char *history_value;
983
      int expanded;
984
 
985
      *p = '\0';                /* Insert null now.  */
986
      expanded = history_expand (linebuffer, &history_value);
987
      if (expanded)
988
        {
989
          /* Print the changes.  */
990
          printf_unfiltered ("%s\n", history_value);
991
 
992
          /* If there was an error, call this function again.  */
993
          if (expanded < 0)
994
            {
995
              xfree (history_value);
996
              return command_line_input (prompt_arg, repeat, annotation_suffix);
997
            }
998
          if (strlen (history_value) > linelength)
999
            {
1000
              linelength = strlen (history_value) + 1;
1001
              linebuffer = (char *) xrealloc (linebuffer, linelength);
1002
            }
1003
          strcpy (linebuffer, history_value);
1004
          p = linebuffer + strlen (linebuffer);
1005
        }
1006
      xfree (history_value);
1007
    }
1008
 
1009
  /* If we just got an empty line, and that is supposed
1010
     to repeat the previous command, return the value in the
1011
     global buffer.  */
1012
  if (repeat && p == linebuffer)
1013
    return line;
1014
  for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
1015
  if (repeat && !*p1)
1016
    return line;
1017
 
1018
  *p = 0;
1019
 
1020
  /* Add line to history if appropriate.  */
1021
  if (instream == stdin
1022
      && ISATTY (stdin) && *linebuffer)
1023
    add_history (linebuffer);
1024
 
1025
  /* Note: lines consisting solely of comments are added to the command
1026
     history.  This is useful when you type a command, and then
1027
     realize you don't want to execute it quite yet.  You can comment
1028
     out the command and then later fetch it from the value history
1029
     and remove the '#'.  The kill ring is probably better, but some
1030
     people are in the habit of commenting things out.  */
1031
  if (*p1 == '#')
1032
    *p1 = '\0';                 /* Found a comment. */
1033
 
1034
  /* Save into global buffer if appropriate.  */
1035
  if (repeat)
1036
    {
1037
      if (linelength > linesize)
1038
        {
1039
          line = xrealloc (line, linelength);
1040
          linesize = linelength;
1041
        }
1042
      strcpy (line, linebuffer);
1043
      return line;
1044
    }
1045
 
1046
  return linebuffer;
1047
}
1048
 
1049
/* Print the GDB banner. */
1050
void
1051
print_gdb_version (struct ui_file *stream)
1052
{
1053
  /* From GNU coding standards, first line is meant to be easy for a
1054
     program to parse, and is just canonical program name and version
1055
     number, which starts after last space. */
1056
 
1057
  fprintf_filtered (stream, "GNU gdb %s%s\n", PKGVERSION, version);
1058
 
1059
  /* Second line is a copyright notice. */
1060
 
1061
  fprintf_filtered (stream, "Copyright (C) 2010 Free Software Foundation, Inc.\n");
1062
 
1063
  /* Following the copyright is a brief statement that the program is
1064
     free software, that users are free to copy and change it on
1065
     certain conditions, that it is covered by the GNU GPL, and that
1066
     there is no warranty. */
1067
 
1068
  fprintf_filtered (stream, "\
1069
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
1070
This is free software: you are free to change and redistribute it.\n\
1071
There is NO WARRANTY, to the extent permitted by law.  Type \"show copying\"\n\
1072
and \"show warranty\" for details.\n");
1073
 
1074
  /* After the required info we print the configuration information. */
1075
 
1076
  fprintf_filtered (stream, "This GDB was configured as \"");
1077
  if (strcmp (host_name, target_name) != 0)
1078
    {
1079
      fprintf_filtered (stream, "--host=%s --target=%s", host_name, target_name);
1080
    }
1081
  else
1082
    {
1083
      fprintf_filtered (stream, "%s", host_name);
1084
    }
1085
  fprintf_filtered (stream, "\".");
1086
 
1087
  if (REPORT_BUGS_TO[0])
1088
    {
1089
      fprintf_filtered (stream,
1090
                        _("\nFor bug reporting instructions, please see:\n"));
1091
      fprintf_filtered (stream, "%s.", REPORT_BUGS_TO);
1092
    }
1093
}
1094
 
1095
/* get_prompt: access method for the GDB prompt string.  */
1096
 
1097
char *
1098
get_prompt (void)
1099
{
1100
  return PROMPT (0);
1101
}
1102
 
1103
void
1104
set_prompt (char *s)
1105
{
1106
/* ??rehrauer: I don't know why this fails, since it looks as though
1107
   assignments to prompt are wrapped in calls to xstrdup...
1108
   if (prompt != NULL)
1109
   xfree (prompt);
1110
 */
1111
  PROMPT (0) = xstrdup (s);
1112
}
1113
 
1114
 
1115
struct qt_args
1116
{
1117
  char *args;
1118
  int from_tty;
1119
};
1120
 
1121
/* Callback for iterate_over_inferiors.  Kills or detaches the given
1122
   inferior, depending on how we originally gained control of it.  */
1123
 
1124
static int
1125
kill_or_detach (struct inferior *inf, void *args)
1126
{
1127
  struct qt_args *qt = args;
1128
  struct thread_info *thread;
1129
 
1130
  if (inf->pid == 0)
1131
    return 0;
1132
 
1133
  thread = any_thread_of_process (inf->pid);
1134
  if (thread != NULL)
1135
    {
1136
      switch_to_thread (thread->ptid);
1137
 
1138
      /* Leave core files alone.  */
1139
      if (target_has_execution)
1140
        {
1141
          if (inf->attach_flag)
1142
            target_detach (qt->args, qt->from_tty);
1143
          else
1144
            target_kill ();
1145
        }
1146
    }
1147
 
1148
  return 0;
1149
}
1150
 
1151
/* Callback for iterate_over_inferiors.  Prints info about what GDB
1152
   will do to each inferior on a "quit".  ARG points to a struct
1153
   ui_out where output is to be collected.  */
1154
 
1155
static int
1156
print_inferior_quit_action (struct inferior *inf, void *arg)
1157
{
1158
  struct ui_file *stb = arg;
1159
 
1160
  if (inf->pid == 0)
1161
    return 0;
1162
 
1163
  if (inf->attach_flag)
1164
    fprintf_filtered (stb,
1165
                      _("\tInferior %d [%s] will be detached.\n"), inf->num,
1166
                      target_pid_to_str (pid_to_ptid (inf->pid)));
1167
  else
1168
    fprintf_filtered (stb,
1169
                      _("\tInferior %d [%s] will be killed.\n"), inf->num,
1170
                      target_pid_to_str (pid_to_ptid (inf->pid)));
1171
 
1172
  return 0;
1173
}
1174
 
1175
/* If necessary, make the user confirm that we should quit.  Return
1176
   non-zero if we should quit, zero if we shouldn't.  */
1177
 
1178
int
1179
quit_confirm (void)
1180
{
1181
  struct ui_file *stb;
1182
  struct cleanup *old_chain;
1183
  char *str;
1184
  int qr;
1185
 
1186
  /* Don't even ask if we're only debugging a core file inferior.  */
1187
  if (!have_live_inferiors ())
1188
    return 1;
1189
 
1190
  /* Build the query string as a single string.  */
1191
  stb = mem_fileopen ();
1192
  old_chain = make_cleanup_ui_file_delete (stb);
1193
 
1194
  /* This is something of a hack.  But there's no reliable way to see
1195
     if a GUI is running.  The `use_windows' variable doesn't cut
1196
     it.  */
1197
  if (deprecated_init_ui_hook)
1198
    fprintf_filtered (stb, _("A debugging session is active.\n"
1199
                             "Do you still want to close the debugger?"));
1200
  else
1201
    {
1202
      fprintf_filtered (stb, _("A debugging session is active.\n\n"));
1203
      iterate_over_inferiors (print_inferior_quit_action, stb);
1204
      fprintf_filtered (stb, _("\nQuit anyway? "));
1205
    }
1206
 
1207
  str = ui_file_xstrdup (stb, NULL);
1208
  make_cleanup (xfree, str);
1209
 
1210
  qr = query ("%s", str);
1211
  do_cleanups (old_chain);
1212
  return qr;
1213
}
1214
 
1215
/* Helper routine for quit_force that requires error handling.  */
1216
 
1217
static int
1218
quit_target (void *arg)
1219
{
1220
  struct qt_args *qt = (struct qt_args *)arg;
1221
 
1222
  /* Kill or detach all inferiors.  */
1223
  iterate_over_inferiors (kill_or_detach, qt);
1224
 
1225
  /* Give all pushed targets a chance to do minimal cleanup, and pop
1226
     them all out.  */
1227
  pop_all_targets (1);
1228
 
1229
  /* Save the history information if it is appropriate to do so.  */
1230
  if (write_history_p && history_filename)
1231
    write_history (history_filename);
1232
 
1233
  do_final_cleanups (ALL_CLEANUPS);     /* Do any final cleanups before exiting */
1234
 
1235
  return 0;
1236
}
1237
 
1238
/* Quit without asking for confirmation.  */
1239
 
1240
void
1241
quit_force (char *args, int from_tty)
1242
{
1243
  int exit_code = 0;
1244
  struct qt_args qt;
1245
 
1246
  /* An optional expression may be used to cause gdb to terminate with the
1247
     value of that expression. */
1248
  if (args)
1249
    {
1250
      struct value *val = parse_and_eval (args);
1251
 
1252
      exit_code = (int) value_as_long (val);
1253
    }
1254
  else if (return_child_result)
1255
    exit_code = return_child_result_value;
1256
 
1257
  qt.args = args;
1258
  qt.from_tty = from_tty;
1259
 
1260
  /* We want to handle any quit errors and exit regardless.  */
1261
  catch_errors (quit_target, &qt,
1262
                "Quitting: ", RETURN_MASK_ALL);
1263
 
1264
  exit (exit_code);
1265
}
1266
 
1267
/* If OFF, the debugger will run in non-interactive mode, which means
1268
   that it will automatically select the default answer to all the
1269
   queries made to the user.  If ON, gdb will wait for the user to
1270
   answer all queries.  If AUTO, gdb will determine whether to run
1271
   in interactive mode or not depending on whether stdin is a terminal
1272
   or not.  */
1273
static enum auto_boolean interactive_mode = AUTO_BOOLEAN_AUTO;
1274
 
1275
/* Implement the "show interactive-mode" option.  */
1276
 
1277
static void
1278
show_interactive_mode (struct ui_file *file, int from_tty,
1279
                       struct cmd_list_element *c,
1280
                       const char *value)
1281
{
1282
  if (interactive_mode == AUTO_BOOLEAN_AUTO)
1283
    fprintf_filtered (file, "\
1284
Debugger's interactive mode is %s (currently %s).\n",
1285
                      value, input_from_terminal_p () ? "on" : "off");
1286
  else
1287
    fprintf_filtered (file, "Debugger's interactive mode is %s.\n", value);
1288
}
1289
 
1290
/* Returns whether GDB is running on a terminal and input is
1291
   currently coming from that terminal.  */
1292
 
1293
int
1294
input_from_terminal_p (void)
1295
{
1296
  if (interactive_mode != AUTO_BOOLEAN_AUTO)
1297
    return interactive_mode == AUTO_BOOLEAN_TRUE;
1298
 
1299
  if (gdb_has_a_terminal () && instream == stdin)
1300
    return 1;
1301
 
1302
  /* If INSTREAM is unset, and we are not in a user command, we
1303
     must be in Insight.  That's like having a terminal, for our
1304
     purposes.  */
1305
  if (instream == NULL && !in_user_command)
1306
    return 1;
1307
 
1308
  return 0;
1309
}
1310
 
1311
static void
1312
dont_repeat_command (char *ignored, int from_tty)
1313
{
1314
  *line = 0;                     /* Can't call dont_repeat here because we're not
1315
                                   necessarily reading from stdin.  */
1316
}
1317
 
1318
/* Functions to manipulate command line editing control variables.  */
1319
 
1320
/* Number of commands to print in each call to show_commands.  */
1321
#define Hist_print 10
1322
void
1323
show_commands (char *args, int from_tty)
1324
{
1325
  /* Index for history commands.  Relative to history_base.  */
1326
  int offset;
1327
 
1328
  /* Number of the history entry which we are planning to display next.
1329
     Relative to history_base.  */
1330
  static int num = 0;
1331
 
1332
  /* The first command in the history which doesn't exist (i.e. one more
1333
     than the number of the last command).  Relative to history_base.  */
1334
  int hist_len;
1335
 
1336
  /* Print out some of the commands from the command history.  */
1337
  /* First determine the length of the history list.  */
1338
  hist_len = history_size;
1339
  for (offset = 0; offset < history_size; offset++)
1340
    {
1341
      if (!history_get (history_base + offset))
1342
        {
1343
          hist_len = offset;
1344
          break;
1345
        }
1346
    }
1347
 
1348
  if (args)
1349
    {
1350
      if (args[0] == '+' && args[1] == '\0')
1351
        /* "info editing +" should print from the stored position.  */
1352
        ;
1353
      else
1354
        /* "info editing <exp>" should print around command number <exp>.  */
1355
        num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1356
    }
1357
  /* "show commands" means print the last Hist_print commands.  */
1358
  else
1359
    {
1360
      num = hist_len - Hist_print;
1361
    }
1362
 
1363
  if (num < 0)
1364
    num = 0;
1365
 
1366
  /* If there are at least Hist_print commands, we want to display the last
1367
     Hist_print rather than, say, the last 6.  */
1368
  if (hist_len - num < Hist_print)
1369
    {
1370
      num = hist_len - Hist_print;
1371
      if (num < 0)
1372
        num = 0;
1373
    }
1374
 
1375
  for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
1376
    {
1377
      printf_filtered ("%5d  %s\n", history_base + offset,
1378
                       (history_get (history_base + offset))->line);
1379
    }
1380
 
1381
  /* The next command we want to display is the next one that we haven't
1382
     displayed yet.  */
1383
  num += Hist_print;
1384
 
1385
  /* If the user repeats this command with return, it should do what
1386
     "show commands +" does.  This is unnecessary if arg is null,
1387
     because "show commands +" is not useful after "show commands".  */
1388
  if (from_tty && args)
1389
    {
1390
      args[0] = '+';
1391
      args[1] = '\0';
1392
    }
1393
}
1394
 
1395
/* Called by do_setshow_command.  */
1396
static void
1397
set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1398
{
1399
  if (history_size == INT_MAX)
1400
    unstifle_history ();
1401
  else if (history_size >= 0)
1402
    stifle_history (history_size);
1403
  else
1404
    {
1405
      history_size = INT_MAX;
1406
      error (_("History size must be non-negative"));
1407
    }
1408
}
1409
 
1410
void
1411
set_history (char *args, int from_tty)
1412
{
1413
  printf_unfiltered (_("\"set history\" must be followed by the name of a history subcommand.\n"));
1414
  help_list (sethistlist, "set history ", -1, gdb_stdout);
1415
}
1416
 
1417
void
1418
show_history (char *args, int from_tty)
1419
{
1420
  cmd_show_list (showhistlist, from_tty, "");
1421
}
1422
 
1423
int info_verbose = 0;            /* Default verbose msgs off */
1424
 
1425
/* Called by do_setshow_command.  An elaborate joke.  */
1426
void
1427
set_verbose (char *args, int from_tty, struct cmd_list_element *c)
1428
{
1429
  char *cmdname = "verbose";
1430
  struct cmd_list_element *showcmd;
1431
 
1432
  showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1433
 
1434
  if (info_verbose)
1435
    {
1436
      c->doc = "Set verbose printing of informational messages.";
1437
      showcmd->doc = "Show verbose printing of informational messages.";
1438
    }
1439
  else
1440
    {
1441
      c->doc = "Set verbosity.";
1442
      showcmd->doc = "Show verbosity.";
1443
    }
1444
}
1445
 
1446
/* Init the history buffer.  Note that we are called after the init file(s)
1447
 * have been read so that the user can change the history file via his
1448
 * .gdbinit file (for instance).  The GDBHISTFILE environment variable
1449
 * overrides all of this.
1450
 */
1451
 
1452
void
1453
init_history (void)
1454
{
1455
  char *tmpenv;
1456
 
1457
  tmpenv = getenv ("HISTSIZE");
1458
  if (tmpenv)
1459
    history_size = atoi (tmpenv);
1460
  else if (!history_size)
1461
    history_size = 256;
1462
 
1463
  stifle_history (history_size);
1464
 
1465
  tmpenv = getenv ("GDBHISTFILE");
1466
  if (tmpenv)
1467
    history_filename = xstrdup (tmpenv);
1468
  else if (!history_filename)
1469
    {
1470
      /* We include the current directory so that if the user changes
1471
         directories the file written will be the same as the one
1472
         that was read.  */
1473
#ifdef __MSDOS__
1474
      /* No leading dots in file names are allowed on MSDOS.  */
1475
      history_filename = concat (current_directory, "/_gdb_history",
1476
                                 (char *)NULL);
1477
#else
1478
      history_filename = concat (current_directory, "/.gdb_history",
1479
                                 (char *)NULL);
1480
#endif
1481
    }
1482
  read_history (history_filename);
1483
}
1484
 
1485
static void
1486
show_new_async_prompt (struct ui_file *file, int from_tty,
1487
                       struct cmd_list_element *c, const char *value)
1488
{
1489
  fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1490
}
1491
 
1492
static void
1493
show_async_command_editing_p (struct ui_file *file, int from_tty,
1494
                              struct cmd_list_element *c, const char *value)
1495
{
1496
  fprintf_filtered (file, _("\
1497
Editing of command lines as they are typed is %s.\n"),
1498
                    value);
1499
}
1500
 
1501
static void
1502
show_annotation_level (struct ui_file *file, int from_tty,
1503
                       struct cmd_list_element *c, const char *value)
1504
{
1505
  fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1506
}
1507
 
1508
static void
1509
show_exec_done_display_p (struct ui_file *file, int from_tty,
1510
                          struct cmd_list_element *c, const char *value)
1511
{
1512
  fprintf_filtered (file, _("\
1513
Notification of completion for asynchronous execution commands is %s.\n"),
1514
                    value);
1515
}
1516
static void
1517
init_main (void)
1518
{
1519
  struct cmd_list_element *c;
1520
 
1521
  /* initialize the prompt stack to a simple "(gdb) " prompt or to
1522
     whatever the DEFAULT_PROMPT is.  */
1523
  the_prompts.top = 0;
1524
  PREFIX (0) = "";
1525
  PROMPT (0) = xstrdup (DEFAULT_PROMPT);
1526
  SUFFIX (0) = "";
1527
  /* Set things up for annotation_level > 1, if the user ever decides
1528
     to use it.  */
1529
  async_annotation_suffix = "prompt";
1530
  /* Set the variable associated with the setshow prompt command.  */
1531
  new_async_prompt = xstrdup (PROMPT (0));
1532
 
1533
  /* If gdb was started with --annotate=2, this is equivalent to the
1534
     user entering the command 'set annotate 2' at the gdb prompt, so
1535
     we need to do extra processing.  */
1536
  if (annotation_level > 1)
1537
    set_async_annotation_level (NULL, 0, NULL);
1538
 
1539
  /* Set the important stuff up for command editing.  */
1540
  command_editing_p = 1;
1541
  history_expansion_p = 0;
1542
  write_history_p = 0;
1543
 
1544
  /* Setup important stuff for command line editing.  */
1545
  rl_completion_word_break_hook = gdb_completion_word_break_characters;
1546
  rl_completion_entry_function = readline_line_completion_function;
1547
  rl_completer_word_break_characters = default_word_break_characters ();
1548
  rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1549
  rl_readline_name = "gdb";
1550
  rl_terminal_name = getenv ("TERM");
1551
 
1552
  /* The name for this defun comes from Bash, where it originated.
1553
     15 is Control-o, the same binding this function has in Bash.  */
1554
  rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1555
 
1556
  add_setshow_string_cmd ("prompt", class_support,
1557
                          &new_async_prompt, _("\
1558
Set gdb's prompt"), _("\
1559
Show gdb's prompt"), NULL,
1560
                          set_async_prompt,
1561
                          show_new_async_prompt,
1562
                          &setlist, &showlist);
1563
 
1564
  add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1565
Don't repeat this command.\n\
1566
Primarily used inside of user-defined commands that should not be repeated when\n\
1567
hitting return."));
1568
 
1569
  add_setshow_boolean_cmd ("editing", class_support,
1570
                           &async_command_editing_p, _("\
1571
Set editing of command lines as they are typed."), _("\
1572
Show editing of command lines as they are typed."), _("\
1573
Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1574
Without an argument, command line editing is enabled.  To edit, use\n\
1575
EMACS-like or VI-like commands like control-P or ESC."),
1576
                           set_async_editing_command,
1577
                           show_async_command_editing_p,
1578
                           &setlist, &showlist);
1579
 
1580
  add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1581
Set saving of the history record on exit."), _("\
1582
Show saving of the history record on exit."), _("\
1583
Use \"on\" to enable the saving, and \"off\" to disable it.\n\
1584
Without an argument, saving is enabled."),
1585
                           NULL,
1586
                           show_write_history_p,
1587
                           &sethistlist, &showhistlist);
1588
 
1589
  add_setshow_integer_cmd ("size", no_class, &history_size, _("\
1590
Set the size of the command history,"), _("\
1591
Show the size of the command history,"), _("\
1592
ie. the number of previous commands to keep a record of."),
1593
                           set_history_size_command,
1594
                           show_history_size,
1595
                           &sethistlist, &showhistlist);
1596
 
1597
  add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1598
Set the filename in which to record the command history"), _("\
1599
Show the filename in which to record the command history"), _("\
1600
(the list of previous commands of which a record is kept)."),
1601
                            NULL,
1602
                            show_history_filename,
1603
                            &sethistlist, &showhistlist);
1604
 
1605
  add_setshow_boolean_cmd ("confirm", class_support, &caution, _("\
1606
Set whether to confirm potentially dangerous operations."), _("\
1607
Show whether to confirm potentially dangerous operations."), NULL,
1608
                           NULL,
1609
                           show_caution,
1610
                           &setlist, &showlist);
1611
 
1612
  add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1613
Set annotation_level."), _("\
1614
Show annotation_level."), _("\
1615
 
1616
2 == output annotated suitably for use by programs that control GDB."),
1617
                            set_async_annotation_level,
1618
                            show_annotation_level,
1619
                            &setlist, &showlist);
1620
 
1621
  add_setshow_boolean_cmd ("exec-done-display", class_support,
1622
                           &exec_done_display_p, _("\
1623
Set notification of completion for asynchronous execution commands."), _("\
1624
Show notification of completion for asynchronous execution commands."), _("\
1625
Use \"on\" to enable the notification, and \"off\" to disable it."),
1626
                           NULL,
1627
                           show_exec_done_display_p,
1628
                           &setlist, &showlist);
1629
 
1630
  add_setshow_auto_boolean_cmd ("interactive-mode", class_support,
1631
                                &interactive_mode, _("\
1632
Set whether GDB should run in interactive mode or not"), _("\
1633
Show whether GDB runs in interactive mode"), _("\
1634
If on, run in interactive mode and wait for the user to answer\n\
1635
all queries.  If off, run in non-interactive mode and automatically\n\
1636
assume the default answer to all queries.  If auto (the default),\n\
1637
determine which mode to use based on the standard input settings"),
1638
                        NULL,
1639
                        show_interactive_mode,
1640
                        &setlist, &showlist);
1641
 
1642
  add_setshow_filename_cmd ("data-directory", class_maintenance,
1643
                           &gdb_datadir, _("Set GDB's data directory."),
1644
                           _("Show GDB's data directory."),
1645
                           _("\
1646
When set, GDB uses the specified path to search for data files."),
1647
                           NULL, NULL,
1648
                           &setlist,
1649
                           &showlist);
1650
}
1651
 
1652
void
1653
gdb_init (char *argv0)
1654
{
1655
  if (pre_init_ui_hook)
1656
    pre_init_ui_hook ();
1657
 
1658
  /* Run the init function of each source file */
1659
 
1660
#ifdef __MSDOS__
1661
  /* Make sure we return to the original directory upon exit, come
1662
     what may, since the OS doesn't do that for us.  */
1663
  make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
1664
#endif
1665
 
1666
  init_cmd_lists ();            /* This needs to be done first */
1667
  initialize_targets ();        /* Setup target_terminal macros for utils.c */
1668
  initialize_utils ();          /* Make errors and warnings possible */
1669
  initialize_all_files ();
1670
  /* This creates the current_program_space.  Do this after all the
1671
     _initialize_foo routines have had a chance to install their
1672
     per-sspace data keys.  Also do this before
1673
     initialize_current_architecture is called, because it accesses
1674
     exec_bfd of the current program space.  */
1675
  initialize_progspace ();
1676
  initialize_inferiors ();
1677
  initialize_current_architecture ();
1678
  init_cli_cmds();
1679
  init_main ();                 /* But that omits this file!  Do it now */
1680
 
1681
  initialize_stdin_serial ();
1682
 
1683
  async_init_signals ();
1684
 
1685
  /* We need a default language for parsing expressions, so simple things like
1686
     "set width 0" won't fail if no language is explicitly set in a config file
1687
     or implicitly set by reading an executable during startup. */
1688
  set_language (language_c);
1689
  expected_language = current_language;         /* don't warn about the change.  */
1690
 
1691
  /* Allow another UI to initialize. If the UI fails to initialize,
1692
     and it wants GDB to revert to the CLI, it should clear
1693
     deprecated_init_ui_hook.  */
1694
  if (deprecated_init_ui_hook)
1695
    deprecated_init_ui_hook (argv0);
1696
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.