245 lines
8.8 KiB
Diff
245 lines
8.8 KiB
Diff
|
http://sourceware.org/ml/gdb-cvs/2012-03/msg00235.html
|
||
|
|
||
|
### src/gdb/ChangeLog 2012/03/19 18:16:17 1.14026
|
||
|
### src/gdb/ChangeLog 2012/03/19 18:19:23 1.14027
|
||
|
## -1,5 +1,18 @@
|
||
|
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.
|
||
|
* main.c (struct cmdarg): Move it here from main. Add more comments.
|
||
|
(cmdarg_s, VEC (cmdarg_s)): New.
|
||
|
Index: gdb-7.4.50.20120120/gdb/NEWS
|
||
|
===================================================================
|
||
|
--- gdb-7.4.50.20120120.orig/gdb/NEWS 2012-04-18 00:41:30.000000000 +0200
|
||
|
+++ gdb-7.4.50.20120120/gdb/NEWS 2012-04-18 00:42:51.226681068 +0200
|
||
|
@@ -28,6 +28,13 @@
|
||
|
now set a breakpoint in build/gcc/expr.c, but not
|
||
|
build/libcpp/expr.c.
|
||
|
|
||
|
+* 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
|
||
|
Index: gdb-7.4.50.20120120/gdb/main.c
|
||
|
===================================================================
|
||
|
--- gdb-7.4.50.20120120.orig/gdb/main.c 2012-04-18 00:42:15.000000000 +0200
|
||
|
+++ gdb-7.4.50.20120120/gdb/main.c 2012-04-18 00:42:51.226681068 +0200
|
||
|
@@ -285,7 +285,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
|
||
|
@@ -434,7 +440,9 @@ captured_main (void *data)
|
||
|
OPT_STATISTICS,
|
||
|
OPT_TUI,
|
||
|
OPT_NOWINDOWS,
|
||
|
- OPT_WINDOWS
|
||
|
+ OPT_WINDOWS,
|
||
|
+ OPT_IX,
|
||
|
+ OPT_IEX
|
||
|
};
|
||
|
static struct option long_options[] =
|
||
|
{
|
||
|
@@ -475,6 +483,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'},
|
||
|
@@ -603,6 +615,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;
|
||
|
@@ -877,6 +902,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
|
||
|
@@ -993,6 +1032,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)
|
||
|
{
|
||
|
@@ -1093,6 +1133,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);
|
||
|
Index: gdb-7.4.50.20120120/gdb/doc/gdb.texinfo
|
||
|
===================================================================
|
||
|
--- gdb-7.4.50.20120120.orig/gdb/doc/gdb.texinfo 2012-04-18 00:41:31.000000000 +0200
|
||
|
+++ gdb-7.4.50.20120120/gdb/doc/gdb.texinfo 2012-04-18 00:42:51.232681052 +0200
|
||
|
@@ -989,6 +989,22 @@ also be interleaved with @samp{-command}
|
||
|
-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}
|
||
|
@@ -1250,6 +1266,13 @@ Sets up the command interpreter as speci
|
||
|
(@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
|
||
|
used when building @value{GDBN}; @pxref{System-wide configuration,
|
||
|
@@ -1283,14 +1306,11 @@ If you wish to disable the auto-loading
|
||
|
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
|
||
|
Reads command files specified by the @samp{-x} option. @xref{Command
|
||
|
Index: gdb-7.4.50.20120120/gdb/testsuite/gdb.gdb/selftest.exp
|
||
|
===================================================================
|
||
|
--- gdb-7.4.50.20120120.orig/gdb/testsuite/gdb.gdb/selftest.exp 2012-04-18 00:41:31.000000000 +0200
|
||
|
+++ gdb-7.4.50.20120120/gdb/testsuite/gdb.gdb/selftest.exp 2012-04-18 00:42:51.232681052 +0200
|
||
|
@@ -92,6 +92,10 @@ proc do_steps_and_nexts {} {
|
||
|
set description "step over python_script 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"
|
||
|
@@ -128,18 +132,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"
|
||
|
@@ -163,6 +155,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"
|