From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3999 invoked by alias); 27 Jun 2013 18:52:41 -0000 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 Received: (qmail 3947 invoked by uid 89); 27 Jun 2013 18:52:40 -0000 X-Spam-SWARE-Status: No, score=-8.1 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 27 Jun 2013 18:52:39 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r5RIqbgg009308 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 27 Jun 2013 14:52:38 -0400 Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r5RIqaFe021590 for ; Thu, 27 Jun 2013 14:52:37 -0400 Subject: [PATCH 5/9] Constify main.c:get_init_files. To: gdb-patches@sourceware.org From: Pedro Alves Date: Thu, 27 Jun 2013 18:52:00 -0000 Message-ID: <20130627185236.6625.4979.stgit@brno.lan> In-Reply-To: <20130627185200.6625.10526.stgit@brno.lan> References: <20130627185200.6625.10526.stgit@brno.lan> User-Agent: StGit/0.16 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-SW-Source: 2013-06/txt/msg00844.txt.bz2 A following patch will want to make the "gdbinit" global array const. As usual, that forces in a cascading series of const additions. This patch preemptively does those. I went all the way up to constifying catch_command_errors, but then that would require constifying execute_command as well (which is a much more significant effort). So as stop point, I found the cleanest would be to add a variant of catch_command_errors that takes const args, and use that in the few spots that needed it due to the the get_init_files constification. gdb/ 2013-06-27 Pedro Alves * cli/cli-cmds.c (source_script): Make 'file' parameter const. * cli/cli-cmds.h (source_script): Likewise. * exceptions.c (catch_command_errors_const): New function. * exceptions.h (catch_command_errors_const): Declare. * main.c (get_init_files): Make parameters const, and adjust. (captured_main): Make 'system_gdbinit', 'home_gdbinit' and 'local_gdbinit' locals const. Adjust to use catch_command_errors_const. (print_gdb_help): Make 'system_gdbinit', 'home_gdbinit' and 'local_gdbinit' locals const. --- gdb/cli/cli-cmds.c | 2 +- gdb/cli/cli-cmds.h | 2 +- gdb/exceptions.c | 16 ++++++++++++++++ gdb/exceptions.h | 6 ++++++ gdb/main.c | 40 +++++++++++++++++++++------------------- 5 files changed, 45 insertions(+), 21 deletions(-) diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 6ee7673..bd2ca2d 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -597,7 +597,7 @@ source_script_with_search (const char *file, int from_tty, int search_path) for use in loading .gdbinit scripts. */ void -source_script (char *file, int from_tty) +source_script (const char *file, int from_tty) { source_script_with_search (file, from_tty, 0); } diff --git a/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h index 9f6977c..34fe445 100644 --- a/gdb/cli/cli-cmds.h +++ b/gdb/cli/cli-cmds.h @@ -117,7 +117,7 @@ extern void cd_command (char *, int); extern void quit_command (char *, int); -extern void source_script (char *, int); +extern void source_script (const char *, int); /* Exported to objfiles.c. */ diff --git a/gdb/exceptions.c b/gdb/exceptions.c index 0cdd16b..416d81d 100644 --- a/gdb/exceptions.c +++ b/gdb/exceptions.c @@ -577,3 +577,19 @@ catch_command_errors (catch_command_errors_ftype *command, return 0; return 1; } + +int +catch_command_errors_const (catch_command_errors_const_ftype *command, + const char *arg, int from_tty, return_mask mask) +{ + volatile struct gdb_exception e; + + TRY_CATCH (e, mask) + { + command (arg, from_tty); + } + print_any_exception (gdb_stderr, NULL, e); + if (e.reason < 0) + return 0; + return 1; +} diff --git a/gdb/exceptions.h b/gdb/exceptions.h index 7e3be95..19eacd3 100644 --- a/gdb/exceptions.h +++ b/gdb/exceptions.h @@ -257,4 +257,10 @@ typedef void (catch_command_errors_ftype) (char *, int); extern int catch_command_errors (catch_command_errors_ftype *func, char *arg, int from_tty, return_mask); +/* Like catch_command_errors, but works with const command and args. */ + +typedef void (catch_command_errors_const_ftype) (const char *, int); +extern int catch_command_errors_const (catch_command_errors_const_ftype *func, + const char *arg, int from_tty, return_mask); + #endif diff --git a/gdb/main.c b/gdb/main.c index 3c1ef75..a0930ee 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -160,13 +160,13 @@ relocate_gdb_directory (const char *initial, int flag) to be loaded, then SYSTEM_GDBINIT (resp. HOME_GDBINIT and LOCAL_GDBINIT) is set to NULL. */ static void -get_init_files (char **system_gdbinit, - char **home_gdbinit, - char **local_gdbinit) +get_init_files (const char **system_gdbinit, + const char **home_gdbinit, + const char **local_gdbinit) { - static char *sysgdbinit = NULL; + static const char *sysgdbinit = NULL; static char *homeinit = NULL; - static char *localinit = NULL; + static const char *localinit = NULL; static int initialized = 0; if (!initialized) @@ -336,9 +336,9 @@ captured_main (void *data) int ndir; /* gdb init files. */ - char *system_gdbinit; - char *home_gdbinit; - char *local_gdbinit; + const char *system_gdbinit; + const char *home_gdbinit; + const char *local_gdbinit; int i; int save_auto_load; @@ -894,7 +894,8 @@ captured_main (void *data) processed; it sets global parameters, which are independent of what file you are debugging or what directory you are in. */ if (system_gdbinit && !inhibit_gdbinit) - catch_command_errors (source_script, system_gdbinit, 0, RETURN_MASK_ALL); + catch_command_errors_const (source_script, system_gdbinit, + 0, RETURN_MASK_ALL); /* Read and execute $HOME/.gdbinit file, if it exists. This is done *before* all the command line arguments are processed; it sets @@ -902,15 +903,16 @@ captured_main (void *data) debugging or what directory you are in. */ if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit) - catch_command_errors (source_script, home_gdbinit, 0, RETURN_MASK_ALL); + catch_command_errors_const (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); + catch_command_errors_const (source_script, cmdarg_p->string, + !batch_flag, RETURN_MASK_ALL); break; case CMDARG_INIT_COMMAND: catch_command_errors (execute_command, cmdarg_p->string, @@ -1006,8 +1008,8 @@ captured_main (void *data) { auto_load_local_gdbinit_loaded = 1; - catch_command_errors (source_script, local_gdbinit, 0, - RETURN_MASK_ALL); + catch_command_errors_const (source_script, local_gdbinit, 0, + RETURN_MASK_ALL); } } @@ -1024,8 +1026,8 @@ captured_main (void *data) switch (cmdarg_p->type) { case CMDARG_FILE: - catch_command_errors (source_script, cmdarg_p->string, - !batch_flag, RETURN_MASK_ALL); + catch_command_errors_const (source_script, cmdarg_p->string, + !batch_flag, RETURN_MASK_ALL); break; case CMDARG_COMMAND: catch_command_errors (execute_command, cmdarg_p->string, @@ -1075,9 +1077,9 @@ gdb_main (struct captured_main_args *args) static void print_gdb_help (struct ui_file *stream) { - char *system_gdbinit; - char *home_gdbinit; - char *local_gdbinit; + const char *system_gdbinit; + const char *home_gdbinit; + const char *local_gdbinit; get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);