diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a2c457ef94..8e5c37cf71 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2012-10-15 Doug Evans + + New option -nh: inhibit loading of ~/.gdbinit. + * NEWS: Mention -nh. + * main.c (captured_main): Recognize and process -nh. + (print_gdb_help): Mention -nh. + * gdb.1: Mention -nh. Remove erroneous docs on -nx behavior. + 2012-10-15 H.J. Lu PR backtrace/14646 diff --git a/gdb/NEWS b/gdb/NEWS index abd0932640..81d5f76d17 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -3,6 +3,11 @@ *** Changes since GDB 7.5 +* New command line options: + +-nh Disables auto-loading of ~/.gdbinit, but still executes all the + other initialization files, unlike -nx which disables all of them. + * Python scripting ** Vectors can be created with gdb.Type.vector. diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 05ac4066a3..c33445a0a0 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2012-10-15 Doug Evans + + * gdb.texinfo (Mode Options): Document -nh. + Elaborate on docs for -nx. + 2012-09-26 Siddhesh Poyarekar * observer.texi (memory_changed): Expand parameter LEN to ssize_t. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 5fcbada3c8..aed2556832 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1043,10 +1043,37 @@ batch mode or quiet mode. @itemx -n @cindex @code{--nx} @cindex @code{-n} -Do not execute commands found in any initialization files. Normally, -@value{GDBN} executes the commands in these files after all the command -options and arguments have been processed. @xref{Command Files,,Command -Files}. +Do not execute commands found in any initialization file. +There are three init files, loaded in the following order: + +@table @code +@item @file{system.gdbinit} +This is the system-wide init file. +Its location is specified with the @code{--with-system-gdbinit} +configure option (@pxref{System-wide configuration}). +It is loaded first when @value{GDBN} starts, before command line options +have been processed. +@item @file{~/.gdbinit} +This is the init file in your home directory. +It is loaded next, after @file{system.gdbinit}, and before +command options have been processed. +@item @file{./.gdbinit} +This is the init file in the current directory. +It is loaded last, after command line options other than @code{-x} and +@code{-ex} have been processed. Command line options @code{-x} and +@code{-ex} are processed last, after @file{./.gdbinit} has been loaded. +@end table + +For further documentation on startup processing, @xref{Startup}. +For documentation on how to write command files, +@xref{Command Files,,Command Files}. + +@anchor{-nh} +@item -nh +@cindex @code{--nh} +Do not execute commands found in @file{~/.gdbinit}, the init file +in your home directory. +@xref{Startup}. @item -quiet @itemx -silent diff --git a/gdb/gdb.1 b/gdb/gdb.1 index 7a54f85931..68a5e42bc3 100644 --- a/gdb/gdb.1 +++ b/gdb/gdb.1 @@ -9,6 +9,7 @@ gdb \- The GNU Debugger .TP .B gdb .RB "[\|" \-help "\|]" +.RB "[\|" \-nh "\|]" .RB "[\|" \-nx "\|]" .RB "[\|" \-q "\|]" .RB "[\|" \-batch "\|]" @@ -282,6 +283,10 @@ Add \c \& to the path to search for source files. .PP +.TP +.B \-nh +Do not execute commands from ~/.gdbinit. + .TP .B \-nx .TP @@ -289,8 +294,6 @@ Add \c Do not execute commands from any `\|\c .B .gdbinit\c \&\|' initialization files. -Normally, the commands in these files are executed after all the -command options and arguments have been processed. .TP diff --git a/gdb/main.c b/gdb/main.c index 155b609977..923a7fea04 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -273,6 +273,7 @@ captured_main (void *data) char **argv = context->argv; static int quiet = 0; static int set_args = 0; + static int inhibit_home_gdbinit = 0; /* Pointers to various arguments from command line. */ char *symarg = NULL; @@ -415,6 +416,7 @@ captured_main (void *data) {"quiet", no_argument, &quiet, 1}, {"q", no_argument, &quiet, 1}, {"silent", no_argument, &quiet, 1}, + {"nh", no_argument, &inhibit_home_gdbinit, 1}, {"nx", no_argument, &inhibit_gdbinit, 1}, {"n", no_argument, &inhibit_gdbinit, 1}, {"batch-silent", no_argument, 0, 'B'}, @@ -845,7 +847,7 @@ captured_main (void *data) global parameters, which are independent of what file you are debugging or what directory you are in. */ - if (home_gdbinit && !inhibit_gdbinit) + if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit) catch_command_errors (source_script, home_gdbinit, 0, RETURN_MASK_ALL); /* Process '-ix' and '-iex' options early. */ @@ -1066,9 +1068,12 @@ Options:\n\n\ fputs_unfiltered (_("\ -l TIMEOUT Set timeout in seconds for remote debugging.\n\ --nw Do not use a window interface.\n\ - --nx Do not read "), stream); + --nx Do not read any "), stream); fputs_unfiltered (gdbinit, stream); - fputs_unfiltered (_(" file.\n\ + fputs_unfiltered (_(" files.\n\ + --nh Do not read "), stream); + fputs_unfiltered (gdbinit, stream); + fputs_unfiltered (_(" file from home directory.\n\ --quiet Do not print version number on startup.\n\ --readnow Fully read symbol files on first access.\n\ "), stream);