X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fcli%2Fcli-cmds.c;h=bfcd975dfc8272dc98512b62e463380797d19901;hb=ed3ef33944c39d9a3cea72b9a7cef3c20f0e3461;hp=0649cbc02a0dcbe84bb0a302e229b14cd7a2f0ae;hpb=453e48a5a576472ddf5b099a1c0a0e00ff1da657;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 0649cbc02a..bfcd975dfc 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -1,6 +1,6 @@ /* GDB CLI commands. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -27,7 +27,7 @@ #include "target.h" /* For baud_rate, remote_debug and remote_timeout. */ #include "gdb_wait.h" /* For shell escape implementation. */ #include "gdb_regex.h" /* Used by apropos_command. */ -#include "gdb_string.h" +#include #include "gdb_vfork.h" #include "linespec.h" #include "expression.h" @@ -50,7 +50,7 @@ #include "cli/cli-cmds.h" #include "cli/cli-utils.h" -#include "python/python.h" +#include "extension.h" #ifdef TUI #include "tui/tui.h" /* For tui_active et.al. */ @@ -479,7 +479,7 @@ find_and_open_script (const char *script_file, int search_path, char *file; int fd; struct cleanup *old_cleanups; - int search_flags = OPF_TRY_CWD_FIRST; + int search_flags = OPF_TRY_CWD_FIRST | OPF_RETURN_REALPATH; file = tilde_expand (script_file); old_cleanups = make_cleanup (xfree, file); @@ -522,33 +522,33 @@ find_and_open_script (const char *script_file, int search_path, static void source_script_from_stream (FILE *stream, const char *file) { - if (script_ext_mode != script_ext_off - && strlen (file) > 3 && !strcmp (&file[strlen (file) - 3], ".py")) + if (script_ext_mode != script_ext_off) { - volatile struct gdb_exception e; + const struct extension_language_defn *extlang + = get_ext_lang_of_file (file); - TRY_CATCH (e, RETURN_MASK_ERROR) + if (extlang != NULL) { - source_python_script (stream, file); - } - if (e.reason < 0) - { - /* Should we fallback to ye olde GDB script mode? */ - if (script_ext_mode == script_ext_soft - && e.reason == RETURN_ERROR && e.error == UNSUPPORTED_ERROR) + if (ext_lang_present_p (extlang)) { - fseek (stream, 0, SEEK_SET); - script_from_file (stream, (char*) file); + script_sourcer_func *sourcer + = ext_lang_script_sourcer (extlang); + + gdb_assert (sourcer != NULL); + sourcer (extlang, stream, file); + return; } - else + else if (script_ext_mode == script_ext_soft) { - /* Nope, just punt. */ - throw_exception (e); + /* Assume the file is a gdb script. + This is handled below. */ } + else + throw_ext_lang_unsupported (extlang); } } - else - script_from_file (stream, file); + + script_from_file (stream, file); } /* Worker to perform the "source" command. @@ -571,11 +571,14 @@ source_script_with_search (const char *file, int from_tty, int search_path) /* The script wasn't found, or was otherwise inaccessible. If the source command was invoked interactively, throw an error. Otherwise (e.g. if it was invoked by a script), - silently ignore the error. */ + just emit a warning, rather than cause an error. */ if (from_tty) perror_with_name (file); else - return; + { + perror_warning_with_name (file); + return; + } } old_cleanups = make_cleanup (xfree, full_path); @@ -666,7 +669,7 @@ source_command (char *args, int from_tty) static void echo_command (char *text, int from_tty) { - char *p = text; + const char *p = text; int c; if (text) @@ -814,9 +817,8 @@ edit_command (char *arg, int from_tty) struct gdbarch *gdbarch; if (sal.symtab == 0) - /* FIXME-32x64--assumes sal.pc fits in long. */ error (_("No source file for address %s."), - hex_string ((unsigned long) sal.pc)); + paddress (get_current_arch (), sal.pc)); gdbarch = get_objfile_arch (sal.symtab->objfile); sym = find_pc_function (sal.pc); @@ -979,9 +981,8 @@ list_command (char *arg, int from_tty) struct gdbarch *gdbarch; if (sal.symtab == 0) - /* FIXME-32x64--assumes sal.pc fits in long. */ error (_("No source file for address %s."), - hex_string ((unsigned long) sal.pc)); + paddress (get_current_arch (), sal.pc)); gdbarch = get_objfile_arch (sal.symtab->objfile); sym = find_pc_function (sal.pc); @@ -1224,7 +1225,7 @@ show_user (char *args, int from_tty) const char *comname = args; c = lookup_cmd (&comname, cmdlist, "", 0, 1); - /* c->user_commands would be NULL if it's a python command. */ + /* c->user_commands would be NULL if it's a python/scheme command. */ if (c->class != class_user || !c->user_commands) error (_("Not a user command.")); show_user_1 (c, "", args, gdb_stdout); @@ -1581,14 +1582,6 @@ show_history_expansion_p (struct ui_file *file, int from_tty, value); } -static void -show_baud_rate (struct ui_file *file, int from_tty, - struct cmd_list_element *c, const char *value) -{ - fprintf_filtered (file, _("Baud rate for remote serial I/O is %s.\n"), - value); -} - static void show_remote_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) @@ -1748,17 +1741,6 @@ the previous command number shown."), add_cmd ("configuration", no_set_class, show_configuration, _("Show how GDB was configured at build time."), &showlist); - /* 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, _("\ -Set baud rate for remote serial I/O."), _("\ -Show baud rate for remote serial I/O."), _("\ -This value is used to set the speed of the serial port when debugging\n\ -using remote targets."), - NULL, - show_baud_rate, - &setlist, &showlist); - add_setshow_zinteger_cmd ("remote", no_class, &remote_debug, _("\ Set debugging of remote protocol."), _("\ Show debugging of remote protocol."), _("\ @@ -1849,7 +1831,7 @@ you must type \"disassemble 'foo.c'::bar\" and not \"disassemble foo.c:bar\".")) Run the ``make'' program using the rest of the line as arguments.")); set_cmd_completer (c, filename_completer); add_cmd ("user", no_class, show_user, _("\ -Show definitions of non-python user defined commands.\n\ +Show definitions of non-python/scheme user defined commands.\n\ Argument is the name of the user defined command.\n\ With no argument, show definitions of all user defined commands."), &showlist); add_com ("apropos", class_support, apropos_command, @@ -1857,8 +1839,8 @@ With no argument, show definitions of all user defined commands."), &showlist); 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, +Set the max call depth for non-python/scheme user-defined commands."), _("\ +Show the max call depth for non-python/scheme user-defined commands."), NULL, NULL, show_max_user_call_depth, &setlist, &showlist);