* breakpoint.c (catch_syscall_split_args): Use skip_spaces.
[deliverable/binutils-gdb.git] / gdb / cli / cli-cmds.c
index 5d8a124ab26c9d8240f63c75aba36e4e5b63db44..0d37d578b451e3f72e59b93b8ec255aa5b300cb0 100644 (file)
@@ -1,6 +1,6 @@
 /* GDB CLI commands.
 
-   Copyright (C) 2000-2005, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2013 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,6 +47,7 @@
 #include "cli/cli-script.h"
 #include "cli/cli-setshow.h"
 #include "cli/cli-cmds.h"
+#include "cli/cli-utils.h"
 
 #include "python/python.h"
 
@@ -86,8 +87,6 @@ static void edit_command (char *, int);
 
 static void list_command (char *, int);
 
-void apropos_command (char *, int);
-
 /* Prototypes for local utility functions */
 
 static void ambiguous_line_spec (struct symtabs_and_lines *);
@@ -96,7 +95,7 @@ static void filter_sals (struct symtabs_and_lines *);
 
 \f
 /* Limit the call depth of user-defined commands */
-int max_user_call_depth;
+unsigned int max_user_call_depth;
 
 /* Define all cmd_list_elements.  */
 
@@ -287,8 +286,6 @@ complete_command (char *arg, int from_tty)
         unique item once.  */
       for (ix = 0; VEC_iterate (char_ptr, completions, ix, item); ++ix)
        {
-         int next_item;
-
          if (prev == NULL || strcmp (item, prev) != 0)
            {
              printf_unfiltered ("%s%s\n", arg_prefix, item);
@@ -467,10 +464,7 @@ show_script_ext_mode (struct ui_file *file, int from_tty,
    we tried to open.
 
    If SEARCH_PATH is non-zero, and the file isn't found in cwd,
-   search for it in the source search path.
-
-   NOTE: This calls openp which uses xfullpath to compute the full path
-   instead of gdb_realpath.  Symbolic links are not resolved.  */
+   search for it in the source search path.  */
 
 int
 find_and_open_script (const char *script_file, int search_path,
@@ -631,8 +625,7 @@ source_command (char *args, int from_tty)
        {
          /* Make sure leading white space does not break the
             comparisons.  */
-         while (isspace(args[0]))
-           args++;
+         args = skip_spaces (args);
 
          if (args[0] != '-')
            break;
@@ -655,9 +648,7 @@ source_command (char *args, int from_tty)
            break;
        }
 
-      while (isspace (args[0]))
-       args++;
-      file = args;
+      file = skip_spaces (args);
     }
 
   source_script_with_search (file, from_tty, search_path);
@@ -762,7 +753,8 @@ edit_command (char *arg, int from_tty)
   struct symbol *sym;
   char *arg1;
   char *editor;
-  char *p, *fn;
+  char *p;
+  const char *fn;
 
   /* Pull in the current default source line if necessary.  */
   if (arg == 0)
@@ -824,11 +816,13 @@ edit_command (char *arg, int from_tty)
            printf_filtered ("%s is in %s (%s:%d).\n",
                             paddress (gdbarch, sal.pc),
                             SYMBOL_PRINT_NAME (sym),
-                            sal.symtab->filename, sal.line);
+                            symtab_to_filename_for_display (sal.symtab),
+                            sal.line);
           else
            printf_filtered ("%s is at %s:%d.\n",
                             paddress (gdbarch, sal.pc),
-                            sal.symtab->filename, sal.line);
+                            symtab_to_filename_for_display (sal.symtab),
+                            sal.line);
         }
 
       /* If what was given does not imply a symtab, it must be an
@@ -841,16 +835,7 @@ edit_command (char *arg, int from_tty)
   if ((editor = (char *) getenv ("EDITOR")) == NULL)
       editor = "/bin/ex";
 
-  /* If we don't already know the full absolute file name of the
-     source file, find it now.  */
-  if (!sal.symtab->fullname)
-    {
-      fn = symtab_to_fullname (sal.symtab);
-      if (!fn)
-       fn = "unknown";
-    }
-  else
-    fn = sal.symtab->fullname;
+  fn = symtab_to_fullname (sal.symtab);
 
   /* Quote the file name, in case it has whitespace or other special
      characters.  */
@@ -996,11 +981,11 @@ list_command (char *arg, int from_tty)
        printf_filtered ("%s is in %s (%s:%d).\n",
                         paddress (gdbarch, sal.pc),
                         SYMBOL_PRINT_NAME (sym),
-                        sal.symtab->filename, sal.line);
+                        symtab_to_filename_for_display (sal.symtab), sal.line);
       else
        printf_filtered ("%s is at %s:%d.\n",
                         paddress (gdbarch, sal.pc),
-                        sal.symtab->filename, sal.line);
+                        symtab_to_filename_for_display (sal.symtab), sal.line);
     }
 
   /* If line was not specified by just a line number, and it does not
@@ -1091,7 +1076,7 @@ disassemble_current_function (int flags)
 
   frame = get_selected_frame (_("No frame selected."));
   gdbarch = get_frame_arch (frame);
-  pc = get_frame_pc (frame);
+  pc = get_frame_address_in_block (frame);
   if (find_pc_partial_function (pc, &name, &low, &high) == 0)
     error (_("No function contains program counter for selected frame."));
 #if defined(TUI)
@@ -1154,8 +1139,7 @@ disassemble_command (char *arg, int from_tty)
            }
        }
 
-      while (isspace (*arg))
-       ++arg;
+      arg = skip_spaces (arg);
     }
 
   if (! arg || ! *arg)
@@ -1188,8 +1172,7 @@ disassemble_command (char *arg, int from_tty)
       /* Two arguments.  */
       int incl_flag = 0;
       low = pc;
-      while (isspace (*arg))
-       arg++;
+      arg = skip_spaces (arg);
       if (arg[0] == '+')
        {
          ++arg;
@@ -1249,7 +1232,7 @@ show_user (char *args, int from_tty)
 /* Search through names of commands and documentations for a certain
    regular expression.  */
 
-void 
+static void 
 apropos_command (char *searchstr, int from_tty)
 {
   regex_t pattern;
@@ -1333,7 +1316,6 @@ alias_command (char *args, int from_tty)
   char *args2, *equals, *alias, *command;
   char **alias_argv, **command_argv;
   dyn_string_t alias_dyn_string, command_dyn_string;
-  struct cmd_list_element *c;
   static const char usage[] = N_("Usage: alias [-a] [--] ALIAS = COMMAND");
 
   if (args == NULL || strchr (args, '=') == NULL)
@@ -1461,7 +1443,8 @@ ambiguous_line_spec (struct symtabs_and_lines *sals)
 
   for (i = 0; i < sals->nelts; ++i)
     printf_filtered (_("file: \"%s\", line number: %d\n"),
-                    sals->sals[i].symtab->filename, sals->sals[i].line);
+                    symtab_to_filename_for_display (sals->sals[i].symtab),
+                    sals->sals[i].line);
 }
 
 /* Sort function for filter_sals.  */
@@ -1642,11 +1625,13 @@ show_max_user_call_depth (struct ui_file *file, int from_tty,
 }
 
 \f
+
+initialize_file_ftype _initialize_cli_cmds;
+
 void
-init_cli_cmds (void)
+_initialize_cli_cmds (void)
 {
   struct cmd_list_element *c;
-  char *source_help_text;
 
   /* Define the classes of commands.
      They will appear in the help list in alphabetical order.  */
@@ -1702,30 +1687,6 @@ use \"\\n\" if you want a newline to be printed.\n\
 Since leading and trailing whitespace are ignored in command arguments,\n\
 if you want to print some you must use \"\\\" before leading whitespace\n\
 to be printed or after trailing whitespace."));
-  add_com ("document", class_support, document_command, _("\
-Document a user-defined command.\n\
-Give command name as argument.  Give documentation on following lines.\n\
-End with a line of just \"end\"."));
-  add_com ("define", class_support, define_command, _("\
-Define a new command name.  Command name is argument.\n\
-Definition appears on following lines, one command per line.\n\
-End with a line of just \"end\".\n\
-Use the \"document\" command to give documentation for the new command.\n\
-Commands defined in this way may have up to ten arguments."));
-
-  source_help_text = xstrprintf (_("\
-Read commands from a file named FILE.\n\
-\n\
-Usage: source [-s] [-v] FILE\n\
--s: search for the script in the source search path,\n\
-    even if FILE contains directories.\n\
--v: each command in FILE is echoed as it is executed.\n\
-\n\
-Note that the file \"%s\" is read automatically in this way\n\
-when GDB is started."), gdbinit);
-  c = add_cmd ("source", class_support, source_command,
-              source_help_text, &cmdlist);
-  set_cmd_completer (c, filename_completer);
 
   add_setshow_enum_cmd ("script-extension", class_support,
                        script_ext_enums, &script_ext_mode, _("\
@@ -1793,19 +1754,6 @@ the previous command number shown."),
   add_cmd ("version", no_set_class, show_version,
           _("Show what version of GDB this is."), &showlist);
 
-  add_com ("while", class_support, while_command, _("\
-Execute nested commands WHILE the conditional expression is non zero.\n\
-The conditional expression must follow the word `while' and must in turn be\n\
-followed by a new line.  The nested commands must be entered one per line,\n\
-and should be terminated by the word `end'."));
-
-  add_com ("if", class_support, if_command, _("\
-Execute nested commands once IF the conditional expression is non zero.\n\
-The conditional expression must follow the word `if' and must in turn be\n\
-followed by a new line.  The nested commands must be entered one per line,\n\
-and should be terminated by the word 'else' or `end'.  If an else clause\n\
-is used, the same rules apply to its nested commands as to the first ones."));
-
   /* If target is open when baud changes, it doesn't take effect until
      the next open (I think, not sure).  */
   add_setshow_zinteger_cmd ("remotebaud", no_class, &baud_rate, _("\
@@ -1826,14 +1774,15 @@ is displayed."),
                            show_remote_debug,
                            &setdebuglist, &showdebuglist);
 
-  add_setshow_integer_cmd ("remotetimeout", no_class, &remote_timeout, _("\
+  add_setshow_zuinteger_unlimited_cmd ("remotetimeout", no_class,
+                                      &remote_timeout, _("\
 Set timeout limit to wait for target to respond."), _("\
 Show timeout limit to wait for target to respond."), _("\
 This value is used to set the time limit for gdb to wait for a response\n\
 from the target."),
-                          NULL,
-                          show_remote_timeout,
-                          &setlist, &showlist);
+                                      NULL,
+                                      show_remote_timeout,
+                                      &setlist, &showlist);
 
   add_prefix_cmd ("debug", no_class, set_debug,
                  _("Generic command for setting gdb debugging flags"),
@@ -1890,7 +1839,12 @@ With a /m modifier, source lines are included (if available).\n\
 With a /r modifier, raw instructions in hex are included.\n\
 With a single argument, the function surrounding that address is dumped.\n\
 Two arguments (separated by a comma) are taken as a range of memory to dump,\n\
-  in the form of \"start,end\", or \"start,+length\"."));
+  in the form of \"start,end\", or \"start,+length\".\n\
+\n\
+Note that the address is interpreted as an expression, not as a location\n\
+like in the \"break\" command.\n\
+So, for example, if you want to disassemble function bar in file foo.c\n\
+you must type \"disassemble 'foo.c'::bar\" and not \"disassemble foo.c:bar\"."));
   set_cmd_completer (c, location_completer);
   if (xdb_commands)
     add_com_alias ("va", "disassemble", class_xdb, 0);
@@ -1907,13 +1861,13 @@ With no argument, show definitions of all user defined commands."), &showlist);
   add_com ("apropos", class_support, apropos_command,
           _("Search for commands matching a REGEXP"));
 
-  add_setshow_integer_cmd ("max-user-call-depth", no_class,
+  add_setshow_uinteger_cmd ("max-user-call-depth", no_class,
                           &max_user_call_depth, _("\
 Set the max call depth for non-python user-defined commands."), _("\
 Show the max call depth for non-python user-defined commands."), NULL,
-                          NULL,
-                          show_max_user_call_depth,
-                          &setlist, &showlist);
+                           NULL,
+                           show_max_user_call_depth,
+                           &setlist, &showlist);
 
   add_setshow_boolean_cmd ("trace-commands", no_class, &trace_commands, _("\
 Set tracing of GDB CLI commands."), _("\
@@ -1937,3 +1891,24 @@ Make \"spe\" an alias of \"set print elements\":\n\
 Make \"elms\" an alias of \"elements\" in the \"set print\" command:\n\
   alias -a set print elms = set print elements"));
 }
+
+void
+init_cli_cmds (void)
+{
+  struct cmd_list_element *c;
+  char *source_help_text;
+
+  source_help_text = xstrprintf (_("\
+Read commands from a file named FILE.\n\
+\n\
+Usage: source [-s] [-v] FILE\n\
+-s: search for the script in the source search path,\n\
+    even if FILE contains directories.\n\
+-v: each command in FILE is echoed as it is executed.\n\
+\n\
+Note that the file \"%s\" is read automatically in this way\n\
+when GDB is started."), gdbinit);
+  c = add_cmd ("source", class_support, source_command,
+              source_help_text, &cmdlist);
+  set_cmd_completer (c, filename_completer);
+}
This page took 0.027876 seconds and 4 git commands to generate.