Constify main.c:get_init_files.

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-07-01  Pedro Alves  <palves@redhat.com>

	* 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.
This commit is contained in:
Pedro Alves
2013-07-01 11:22:12 +00:00
parent bc7dea8de9
commit 50dd979345
6 changed files with 58 additions and 21 deletions

View File

@ -1,3 +1,16 @@
2013-07-01 Pedro Alves <palves@redhat.com>
* 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.
2013-07-01 Pedro Alves <palves@redhat.com> 2013-07-01 Pedro Alves <palves@redhat.com>
* defs.h: Don't check HAVE_UNISTD_H before including <unistd.h>. * defs.h: Don't check HAVE_UNISTD_H before including <unistd.h>.

View File

@ -597,7 +597,7 @@ source_script_with_search (const char *file, int from_tty, int search_path)
for use in loading .gdbinit scripts. */ for use in loading .gdbinit scripts. */
void void
source_script (char *file, int from_tty) source_script (const char *file, int from_tty)
{ {
source_script_with_search (file, from_tty, 0); source_script_with_search (file, from_tty, 0);
} }

View File

@ -117,7 +117,7 @@ extern void cd_command (char *, int);
extern void quit_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. */ /* Exported to objfiles.c. */

View File

@ -577,3 +577,19 @@ catch_command_errors (catch_command_errors_ftype *command,
return 0; return 0;
return 1; 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;
}

View File

@ -257,4 +257,10 @@ typedef void (catch_command_errors_ftype) (char *, int);
extern int catch_command_errors (catch_command_errors_ftype *func, extern int catch_command_errors (catch_command_errors_ftype *func,
char *arg, int from_tty, return_mask); 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 #endif

View File

@ -160,13 +160,13 @@ relocate_gdb_directory (const char *initial, int flag)
to be loaded, then SYSTEM_GDBINIT (resp. HOME_GDBINIT and to be loaded, then SYSTEM_GDBINIT (resp. HOME_GDBINIT and
LOCAL_GDBINIT) is set to NULL. */ LOCAL_GDBINIT) is set to NULL. */
static void static void
get_init_files (char **system_gdbinit, get_init_files (const char **system_gdbinit,
char **home_gdbinit, const char **home_gdbinit,
char **local_gdbinit) const char **local_gdbinit)
{ {
static char *sysgdbinit = NULL; static const char *sysgdbinit = NULL;
static char *homeinit = NULL; static char *homeinit = NULL;
static char *localinit = NULL; static const char *localinit = NULL;
static int initialized = 0; static int initialized = 0;
if (!initialized) if (!initialized)
@ -336,9 +336,9 @@ captured_main (void *data)
int ndir; int ndir;
/* gdb init files. */ /* gdb init files. */
char *system_gdbinit; const char *system_gdbinit;
char *home_gdbinit; const char *home_gdbinit;
char *local_gdbinit; const char *local_gdbinit;
int i; int i;
int save_auto_load; int save_auto_load;
@ -894,7 +894,8 @@ captured_main (void *data)
processed; it sets global parameters, which are independent of processed; it sets global parameters, which are independent of
what file you are debugging or what directory you are in. */ what file you are debugging or what directory you are in. */
if (system_gdbinit && !inhibit_gdbinit) 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 /* Read and execute $HOME/.gdbinit file, if it exists. This is done
*before* all the command line arguments are processed; it sets *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. */ debugging or what directory you are in. */
if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit) 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. */ /* Process '-ix' and '-iex' options early. */
for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++) for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++)
switch (cmdarg_p->type) switch (cmdarg_p->type)
{ {
case CMDARG_INIT_FILE: case CMDARG_INIT_FILE:
catch_command_errors (source_script, cmdarg_p->string, catch_command_errors_const (source_script, cmdarg_p->string,
!batch_flag, RETURN_MASK_ALL); !batch_flag, RETURN_MASK_ALL);
break; break;
case CMDARG_INIT_COMMAND: case CMDARG_INIT_COMMAND:
catch_command_errors (execute_command, cmdarg_p->string, catch_command_errors (execute_command, cmdarg_p->string,
@ -1006,8 +1008,8 @@ captured_main (void *data)
{ {
auto_load_local_gdbinit_loaded = 1; auto_load_local_gdbinit_loaded = 1;
catch_command_errors (source_script, local_gdbinit, 0, catch_command_errors_const (source_script, local_gdbinit, 0,
RETURN_MASK_ALL); RETURN_MASK_ALL);
} }
} }
@ -1024,8 +1026,8 @@ captured_main (void *data)
switch (cmdarg_p->type) switch (cmdarg_p->type)
{ {
case CMDARG_FILE: case CMDARG_FILE:
catch_command_errors (source_script, cmdarg_p->string, catch_command_errors_const (source_script, cmdarg_p->string,
!batch_flag, RETURN_MASK_ALL); !batch_flag, RETURN_MASK_ALL);
break; break;
case CMDARG_COMMAND: case CMDARG_COMMAND:
catch_command_errors (execute_command, cmdarg_p->string, catch_command_errors (execute_command, cmdarg_p->string,
@ -1075,9 +1077,9 @@ gdb_main (struct captured_main_args *args)
static void static void
print_gdb_help (struct ui_file *stream) print_gdb_help (struct ui_file *stream)
{ {
char *system_gdbinit; const char *system_gdbinit;
char *home_gdbinit; const char *home_gdbinit;
char *local_gdbinit; const char *local_gdbinit;
get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit); get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);