* NEWS: Describe new options --init-command=FILE, -ix and
	--init-eval-command=COMMAND, -iex.
	* main.c (struct cmdarg): New enum items CMDARG_INIT_FILE and
	CMDARG_INIT_COMMAND.
	(captured_main): New enum items OPT_IX and OPT_IEX.  Add
	"init-command", "init-eval-command", "ix" and "iex" to the variable
	long_options.  Handle OPT_IX and OPT_IEX.  Process them from CMDARG_VEC.
	New comment for CMDARG_FILE and CMDARG_COMMAND processing.
	(print_gdb_help): Describe --init-command=FILE, -ix and
	--init-eval-command=COMMAND, -iex.

gdb/doc/
	* gdb.texinfo (File Options): Describe --init-command=FILE, -ix and
	--init-eval-command=COMMAND, -iex.
	(Startup): Describe -iex and -ix.  Simplify the example
	for "set auto-load-scripts off".

gdb/testsuite/
	* gdb.gdb/selftest.exp (do_steps_and_nexts): New entry
	for cmdarg_vec = NULL.  Remove entries for cmdsize = 1, cmdarg = and
	ncmd = 0.  New entry for VEC_cleanup cmdarg_s.
This commit is contained in:
Jan Kratochvil 2012-03-19 18:19:26 +00:00
parent 26743505e3
commit 8320cc4fa3
7 changed files with 111 additions and 20 deletions

View File

@ -1,3 +1,16 @@
2012-03-19 Jan Kratochvil <jan.kratochvil@redhat.com>
* NEWS: Describe new options --init-command=FILE, -ix and
--init-eval-command=COMMAND, -iex.
* main.c (struct cmdarg): New enum items CMDARG_INIT_FILE and
CMDARG_INIT_COMMAND.
(captured_main): New enum items OPT_IX and OPT_IEX. Add
"init-command", "init-eval-command", "ix" and "iex" to the variable
long_options. Handle OPT_IX and OPT_IEX. Process them from CMDARG_VEC.
New comment for CMDARG_FILE and CMDARG_COMMAND processing.
(print_gdb_help): Describe --init-command=FILE, -ix and
--init-eval-command=COMMAND, -iex.
2012-03-19 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup.

View File

@ -118,6 +118,13 @@ QProgramSignals:
Specify the signals which the remote stub may pass to the debugged
program without GDB involvement.
* New command line options
--init-command=FILE, -ix Like --command, -x but execute it
before loading inferior.
--init-eval-command=COMMAND, -iex Like --eval-command=COMMAND, -ex but
execute it before loading inferior.
*** Changes in GDB 7.4
* GDB now handles ambiguous linespecs more consistently; the existing

View File

@ -1,3 +1,10 @@
2012-03-19 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.texinfo (File Options): Describe --init-command=FILE, -ix and
--init-eval-command=COMMAND, -iex.
(Startup): Describe -iex and -ix. Simplify the example
for "set auto-load-scripts off".
2012-03-16 Gary Benson <gbenson@redhat.com>
PR breakpoints/10738

View File

@ -990,6 +990,22 @@ also be interleaved with @samp{-command} as required.
-x setbreakpoints -ex 'run' a.out
@end smallexample
@item -init-command @var{file}
@itemx -ix @var{file}
@cindex @code{--init-command}
@cindex @code{-ix}
Execute commands from file @var{file} before loading gdbinit files or the
inferior.
@xref{Startup}.
@item -init-eval-command @var{command}
@itemx -iex @var{command}
@cindex @code{--init-eval-command}
@cindex @code{-iex}
Execute a single @value{GDBN} command before loading gdbinit files or the
inferior.
@xref{Startup}.
@item -directory @var{directory}
@itemx -d @var{directory}
@cindex @code{--directory}
@ -1241,6 +1257,13 @@ Here's the description of what @value{GDBN} does during session startup:
Sets up the command interpreter as specified by the command line
(@pxref{Mode Options, interpreter}).
@item
Executes commands and command files specified by the @samp{-iex} and
@samp{-ix} options in their specified order. Usually you should use the
@samp{-ex} and @samp{-x} options instead, but this way you can apply
settings before @value{GDBN} init files get executed and before inferior
gets loaded.
@item
@cindex init file
Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
@ -1275,14 +1298,11 @@ If you wish to disable the auto-loading during startup,
you must do something like the following:
@smallexample
$ gdb -ex "set auto-load-scripts off" -ex "file myprogram"
$ gdb -iex "set auto-load-scripts off" myprogram
@end smallexample
The following does not work because the auto-loading is turned off too late:
@smallexample
$ gdb -ex "set auto-load-scripts off" myprogram
@end smallexample
Option @samp{-ex} does not work because the auto-loading is then turned
off too late.
@item
Executes commands and command files specified by the @samp{-ex} and

View File

@ -247,7 +247,13 @@ typedef struct cmdarg {
CMDARG_FILE,
/* Option type -ex. */
CMDARG_COMMAND
CMDARG_COMMAND,
/* Option type -ix. */
CMDARG_INIT_FILE,
/* Option type -iex. */
CMDARG_INIT_COMMAND
} type;
/* Value of this option - filename or the GDB command itself. String memory
@ -394,7 +400,9 @@ captured_main (void *data)
OPT_STATISTICS,
OPT_TUI,
OPT_NOWINDOWS,
OPT_WINDOWS
OPT_WINDOWS,
OPT_IX,
OPT_IEX
};
static struct option long_options[] =
{
@ -434,6 +442,10 @@ captured_main (void *data)
{"version", no_argument, &print_version, 1},
{"x", required_argument, 0, 'x'},
{"ex", required_argument, 0, 'X'},
{"init-command", required_argument, 0, OPT_IX},
{"init-eval-command", required_argument, 0, OPT_IEX},
{"ix", required_argument, 0, OPT_IX},
{"iex", required_argument, 0, OPT_IEX},
#ifdef GDBTK
{"tclcommand", required_argument, 0, 'z'},
{"enable-external-editor", no_argument, 0, 'y'},
@ -557,6 +569,19 @@ captured_main (void *data)
VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
}
break;
case OPT_IX:
{
struct cmdarg cmdarg = { CMDARG_INIT_FILE, optarg };
VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
}
break;
case OPT_IEX:
{
struct cmdarg cmdarg = { CMDARG_INIT_COMMAND, optarg };
VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
}
break;
case 'B':
batch_flag = batch_silent = 1;
@ -809,6 +834,20 @@ captured_main (void *data)
quit_pre_print = error_pre_print;
warning_pre_print = _("\nwarning: ");
/* Process '-ix' and '-iex' options early. */
for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++)
switch (cmdarg_p->type)
{
case CMDARG_INIT_FILE:
catch_command_errors (source_script, cmdarg_p->string,
!batch_flag, RETURN_MASK_ALL);
break;
case CMDARG_INIT_COMMAND:
catch_command_errors (execute_command, cmdarg_p->string,
!batch_flag, RETURN_MASK_ALL);
break;
}
/* Read and execute the system-wide gdbinit file, if it exists.
This is done *before* all the command line arguments are
processed; it sets global parameters, which are independent of
@ -911,6 +950,7 @@ captured_main (void *data)
ALL_OBJFILES (objfile)
load_auto_scripts_for_objfile (objfile);
/* Process '-x' and '-ex' options. */
for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++)
switch (cmdarg_p->type)
{
@ -993,6 +1033,8 @@ Options:\n\n\
Execute a single GDB command.\n\
May be used multiple times and in conjunction\n\
with --command.\n\
--init-command=FILE, -ix Like -x but execute it before loading inferior.\n\
--init-eval-command=COMMAND, -iex Like -ex but before loading inferior.\n\
--core=COREFILE Analyze the core dump COREFILE.\n\
--pid=PID Attach to running process PID.\n\
"), stream);

View File

@ -1,3 +1,9 @@
2012-03-19 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.gdb/selftest.exp (do_steps_and_nexts): New entry
for cmdarg_vec = NULL. Remove entries for cmdsize = 1, cmdarg = and
ncmd = 0. New entry for VEC_cleanup cmdarg_s.
2012-03-19 Siddhesh Poyarekar <siddhesh@redhat.com>
* gdb.base/cond-eval-mode.exp: Fix the anticipated warning string.

View File

@ -88,6 +88,10 @@ proc do_steps_and_nexts {} {
set description "step over ttyarg initialization"
set command "step"
}
-re ".*cmdarg_vec = NULL.*$gdb_prompt $" {
set description "step over cmdarg_vec initialization"
set command "step"
}
-re ".*pre_stat_chain = make_command_stats_cleanup.*$gdb_prompt $" {
set description "next over make_command_stats_cleanup and everything it calls"
set command "next"
@ -124,18 +128,6 @@ proc do_steps_and_nexts {} {
set description "next over conditional stack alignment alloca"
set command "next"
}
-re ".*cmdsize = 1.*$gdb_prompt $" {
set description "step over cmdsize initialization"
set command "next"
}
-re ".*cmdarg = .* xmalloc.*$gdb_prompt $" {
set description "next over cmdarg initialization via xmalloc"
set command "next"
}
-re ".*ncmd = 0.*$gdb_prompt $" {
set description "next over ncmd initialization"
set command "next"
}
-re ".*dirsize = 1.*$gdb_prompt $" {
set description "next over dirsize initialization"
set command "next"
@ -159,6 +151,10 @@ proc do_steps_and_nexts {} {
set description "next over textdomain PACKAGE"
set command "next"
}
-re ".*VEC_cleanup .cmdarg_s.*$gdb_prompt $" {
set description "next over cmdarg_s VEC_cleanup"
set command "next"
}
-re "\[0-9\]+\[\t \]+\{\r\n$gdb_prompt $" {
set description "step over initial brace"
set command "step"