From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23755 invoked by alias); 16 Jun 2012 19:54:40 -0000 Received: (qmail 23741 invoked by uid 22791); 16 Jun 2012 19:54:38 -0000 X-SWARE-Spam-Status: No, hits=-6.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 16 Jun 2012 19:54:22 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q5GJsM6V004144 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sat, 16 Jun 2012 15:54:22 -0400 Received: from host2.jankratochvil.net (ovpn-116-33.ams2.redhat.com [10.36.116.33]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q5GJsHpL025445 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Sat, 16 Jun 2012 15:54:20 -0400 Date: Sat, 16 Jun 2012 19:54:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Subject: [patch] -iex and -ix: Execute them _after_ gdbinits Message-ID: <20120616195417.GA6368@host2.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-06/txt/msg00549.txt.bz2 Hi, [patch 2/2] [+doc] New -iex and -ix: -ex and -x before inferior load http://sourceware.org/ml/gdb-patches/2012-02/msg00606.html Before 7.5 gets branched/released I would like to yet change behavior of this new feature. The current order is: 1. -iex and -ix 2. /etc/gdbinit, ~/.gdbinit 2. inferior load 3. -ex and -x etc. I would like to swap 1 <-> 2: 1. /etc/gdbinit, ~/.gdbinit 2. -iex and -ix 2. inferior load 3. -ex and -x etc. In practice I found I need to override 'set auto-load safe-path ...' pre-set by ~/.gdbinit for specific GDB runs by -iex. There is no other way to do it. Contrary to it I cannot imagine why one would want to get -iex commands overriden by /etc/gdbinit and ~/.gdbinit. I do not think this change can cause any negative change, only the positive one. Moreover the behavior of 7.4.50.* snapshots should not be too binding. I chose the current FSF GDB HEAD behavior more randomly, if it is "init" then it should be really the very first thing. But that was wrong idea I think. No regressions on {x86_64,x86_64-m32,i686}-fedorarawhide-linux-gnu. Thanks, Jan gdb/ 2012-06-16 Jan Kratochvil Execute -ix and -iex only after system and user gdbinit files. * main.c (captured_main): Move CMDARG_INIT_FILE and CMDARG_INIT_COMMAND processing down after gdbinit files. gdb/doc/ 2012-06-16 Jan Kratochvil * gdb.texinfo (File Options): Change -ix and -iex commands that apply only after gdbinit files. (Startup): Move -iex and -iex commands down after gdbinit files. diff --git a/gdb/main.c b/gdb/main.c index 3148d72..025bbe0 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -835,20 +835,6 @@ 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 @@ -864,6 +850,20 @@ captured_main (void *data) if (home_gdbinit && !inhibit_gdbinit) catch_command_errors (source_script, home_gdbinit, 0, RETURN_MASK_ALL); + /* 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; + } + /* Now perform all the actions indicated by the arguments. */ if (cdarg != NULL) { diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index a14e322..e0f8469 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -997,16 +997,16 @@ also be interleaved with @samp{-command} as required. @itemx -ix @var{file} @cindex @code{--init-command} @cindex @code{-ix} -Execute commands from file @var{file} before loading gdbinit files or the -inferior. +Execute commands from file @var{file} before loading the inferior (but +after loading gdbinit files). @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. +Execute a single @value{GDBN} command before loading the inferior (but +after loading gdbinit files). @xref{Startup}. @item -directory @var{directory} @@ -1261,14 +1261,6 @@ 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}). -@anchor{Option -init-eval-command} -@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 @@ -1283,6 +1275,14 @@ DOS/Windows systems, the home directory is the one pointed to by the @code{HOME} environment variable.} and executes all the commands in that file. +@anchor{Option -init-eval-command} +@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 Processes command line options and operands.