From 5b96932ba38475227c261557a886e1dff1948ce6 Mon Sep 17 00:00:00 2001 From: Andrew Stubbs Date: Tue, 21 Feb 2006 19:13:20 +0000 Subject: [PATCH] 2006-02-21 Andrew Stubbs * symfile.c (add_symbol_file_command): Use buildargv(), instead of hand decoding the command line, to allow use of quotes and spaces. (_initialize_symfile): Reorganize the help message for add-symbol-file such that 'help files' shows a better message. testsuite/ * gdb.base/help.exp (help add-symbol-file): Update. --- gdb/ChangeLog | 7 +++++++ gdb/symfile.c | 31 +++++++++---------------------- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.base/help.exp | 2 +- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 42ae90cf48..e5111186b3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2006-02-21 Andrew Stubbs + + * symfile.c (add_symbol_file_command): Use buildargv(), instead of + hand decoding the command line, to allow use of quotes and spaces. + (_initialize_symfile): Reorganize the help message for add-symbol-file + such that 'help files' shows a better message. + 2006-02-21 Andrew Stubbs * sh-tdep.c (sh_generic_show_regs): Reformat both code and output. diff --git a/gdb/symfile.c b/gdb/symfile.c index c7168c0405..841d738a83 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1811,6 +1811,7 @@ add_symbol_file_command (char *args, int from_tty) int i; int expecting_sec_name = 0; int expecting_sec_addr = 0; + char **argv; struct sect_opt { @@ -1832,28 +1833,15 @@ add_symbol_file_command (char *args, int from_tty) if (args == NULL) error (_("add-symbol-file takes a file name and an address")); - /* Make a copy of the string that we can safely write into. */ - args = xstrdup (args); + argv = buildargv (args); + make_cleanup_freeargv (argv); - while (*args != '\000') + if (argv == NULL) + nomem (0); + + for (arg = argv[0], argcnt = 0; arg != NULL; arg = argv[++argcnt]) { - /* Any leading spaces? */ - while (isspace (*args)) - args++; - - /* Point arg to the beginning of the argument. */ - arg = args; - - /* Move args pointer over the argument. */ - while ((*args != '\000') && !isspace (*args)) - args++; - - /* If there are more arguments, terminate arg and - proceed past it. */ - if (*args != '\000') - *args++ = '\000'; - - /* Now process the argument. */ + /* Process the argument. */ if (argcnt == 0) { /* The first argument is the file name. */ @@ -1916,7 +1904,6 @@ add_symbol_file_command (char *args, int from_tty) error (_("USAGE: add-symbol-file [-mapped] [-readnow] [-s ]*")); } } - argcnt++; } /* This command takes at least two arguments. The first one is a @@ -3748,8 +3735,8 @@ to execute."), &cmdlist); set_cmd_completer (c, filename_completer); c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\ +Load symbols from FILE, assuming FILE has been dynamically loaded.\n\ Usage: add-symbol-file FILE ADDR [-s -s ...]\n\ -Load the symbols from FILE, assuming FILE has been dynamically loaded.\n\ ADDR is the starting address of the file's text.\n\ The optional arguments are section-name section-address pairs and\n\ should be specified if the data and bss segments are not contiguous\n\ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 46fca9f939..9eff44b7cc 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2006-02-21 Andrew Stubbs + + * gdb.base/help.exp (help add-symbol-file): Update. + 2006-02-21 Andrew Stubbs * gdb.base/help.exp (help load): Update expected results. diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/help.exp index f4c6d36de6..437c39ea2a 100644 --- a/gdb/testsuite/gdb.base/help.exp +++ b/gdb/testsuite/gdb.base/help.exp @@ -35,7 +35,7 @@ gdb_test "set height 400" "" "test set height" # use a larger expect input buffer for long help outputs. # test help add-symbol-file -gdb_test "help add-symbol-file" "Usage: add-symbol-file FILE ADDR \\\[-s -s \.\.\.\\\]\[\r\n\]+Load the symbols from FILE, assuming FILE has been dynamically loaded\.\[\r\n\]+ADDR is the starting address of the file's text\.\[\r\n\]+The optional arguments are section-name section-address pairs and\[\r\n\]+should be specified if the data and bss segments are not contiguous\[\r\n\]+with the text\. SECT is a section name to be loaded at SECT_ADDR\." "help add-symbol-file" +gdb_test "help add-symbol-file" "Load symbols from FILE, assuming FILE has been dynamically loaded\.\[\r\n\]+Usage: add-symbol-file FILE ADDR \\\[-s -s \.\.\.\\\]\[\r\n\]+ADDR is the starting address of the file's text\.\[\r\n\]+The optional arguments are section-name section-address pairs and\[\r\n\]+should be specified if the data and bss segments are not contiguous\[\r\n\]+with the text\. SECT is a section name to be loaded at SECT_ADDR\." "help add-symbol-file" # test help advance gdb_test "help advance" "Continue the program up to the given location \\(same form as args for break command\\)\.\[\r\n]+Execution will also stop upon exit from the current stack frame\." "help advance" # test help aliases