diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/cli/cli-cmds.c | 10 | ||||
-rw-r--r-- | gdb/cli/cli-dump.c | 3 | ||||
-rw-r--r-- | gdb/interps.c | 5 | ||||
-rw-r--r-- | gdb/source.c | 15 | ||||
-rw-r--r-- | gdb/symfile.c | 4 |
6 files changed, 40 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 971295dc6e7..e608b0a8579 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,15 @@ 2013-05-30 Tom Tromey <tromey@redhat.com> + * cli/cli-cmds.c (cd_command, alias_command): Call do_cleanups. + * cli/cli-dump.c (restore_binary_file): Call do_cleanups. + * interps.c (interpreter_exec_cmd): Call do_cleanups. + * source.c (show_substitute_path_command): Call do_cleanups. + (unset_substitute_path_command, set_substitute_path_command): + Likewise. + * symfile.c (load_command): Call do_cleanups. + +2013-05-30 Tom Tromey <tromey@redhat.com> + * contrib/cleanup_check.py: New file. * contrib/gcc-with-excheck: Add option parsing. diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index cf88b6dd657..6ee767320b0 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -357,6 +357,7 @@ cd_command (char *dir, int from_tty) /* Found something other than leading repetitions of "/..". */ int found_real_path; char *p; + struct cleanup *cleanup; /* If the new directory is absolute, repeat is a no-op; if relative, repeat might be useful but is more likely to be a mistake. */ @@ -366,7 +367,7 @@ cd_command (char *dir, int from_tty) dir = "~"; dir = tilde_expand (dir); - make_cleanup (xfree, dir); + cleanup = make_cleanup (xfree, dir); if (chdir (dir) < 0) perror_with_name (dir); @@ -450,6 +451,8 @@ cd_command (char *dir, int from_tty) if (from_tty) pwd_command ((char *) 0, 1); + + do_cleanups (cleanup); } /* Show the current value of the 'script-extension' option. */ @@ -1327,13 +1330,14 @@ alias_command (char *args, int from_tty) char *args2, *equals, *alias, *command; char **alias_argv, **command_argv; dyn_string_t alias_dyn_string, command_dyn_string; + struct cleanup *cleanup; static const char usage[] = N_("Usage: alias [-a] [--] ALIAS = COMMAND"); if (args == NULL || strchr (args, '=') == NULL) error (_(usage)); args2 = xstrdup (args); - make_cleanup (xfree, args2); + cleanup = make_cleanup (xfree, args2); equals = strchr (args2, '='); *equals = '\0'; alias_argv = gdb_buildargv (args2); @@ -1440,6 +1444,8 @@ alias_command (char *args, int from_tty) command_argv[command_argc - 1], class_alias, abbrev_flag, c_command->prefixlist); } + + do_cleanups (cleanup); } /* Print a list of files and line numbers which a user may choose from diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c index 529e0a0fe42..208916cab15 100644 --- a/gdb/cli/cli-dump.c +++ b/gdb/cli/cli-dump.c @@ -508,6 +508,7 @@ restore_section_callback (bfd *ibfd, asection *isec, void *args) static void restore_binary_file (char *filename, struct callback_data *data) { + struct cleanup *cleanup = make_cleanup (null_cleanup, NULL); FILE *file = fopen_with_cleanup (filename, FOPEN_RB); gdb_byte *buf; long len; @@ -553,7 +554,7 @@ restore_binary_file (char *filename, struct callback_data *data) len = target_write_memory (data->load_start + data->load_offset, buf, len); if (len != 0) warning (_("restore: memory write failed (%s)."), safe_strerror (len)); - return; + do_cleanups (cleanup); } static void diff --git a/gdb/interps.c b/gdb/interps.c index bd23118227e..25500d6e835 100644 --- a/gdb/interps.c +++ b/gdb/interps.c @@ -409,12 +409,13 @@ interpreter_exec_cmd (char *args, int from_tty) unsigned int nrules; unsigned int i; int old_quiet, use_quiet; + struct cleanup *cleanup; if (args == NULL) error_no_arg (_("interpreter-exec command")); prules = gdb_buildargv (args); - make_cleanup_freeargv (prules); + cleanup = make_cleanup_freeargv (prules); nrules = 0; for (trule = prules; *trule != NULL; trule++) @@ -452,6 +453,8 @@ interpreter_exec_cmd (char *args, int from_tty) interp_set (old_interp, 0); interp_set_quiet (interp_to_use, use_quiet); interp_set_quiet (old_interp, old_quiet); + + do_cleanups (cleanup); } /* List the possible interpreters which could complete the given text. */ diff --git a/gdb/source.c b/gdb/source.c index 710b90c9eb9..161a6c43d02 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -1840,9 +1840,10 @@ show_substitute_path_command (char *args, int from_tty) struct substitute_path_rule *rule = substitute_path_rules; char **argv; char *from = NULL; + struct cleanup *cleanup; argv = gdb_buildargv (args); - make_cleanup_freeargv (argv); + cleanup = make_cleanup_freeargv (argv); /* We expect zero or one argument. */ @@ -1866,6 +1867,8 @@ show_substitute_path_command (char *args, int from_tty) printf_filtered (" `%s' -> `%s'.\n", rule->from, rule->to); rule = rule->next; } + + do_cleanups (cleanup); } /* Implement the "unset substitute-path" command. */ @@ -1877,10 +1880,11 @@ unset_substitute_path_command (char *args, int from_tty) char **argv = gdb_buildargv (args); char *from = NULL; int rule_found = 0; + struct cleanup *cleanup; /* This function takes either 0 or 1 argument. */ - make_cleanup_freeargv (argv); + cleanup = make_cleanup_freeargv (argv); if (argv != NULL && argv[0] != NULL && argv[1] != NULL) error (_("Incorrect usage, too many arguments in command")); @@ -1918,6 +1922,8 @@ unset_substitute_path_command (char *args, int from_tty) error (_("No substitution rule defined for `%s'"), from); forget_cached_source_info (); + + do_cleanups (cleanup); } /* Add a new source path substitution rule. */ @@ -1927,9 +1933,10 @@ set_substitute_path_command (char *args, int from_tty) { char **argv; struct substitute_path_rule *rule; + struct cleanup *cleanup; argv = gdb_buildargv (args); - make_cleanup_freeargv (argv); + cleanup = make_cleanup_freeargv (argv); if (argv == NULL || argv[0] == NULL || argv [1] == NULL) error (_("Incorrect usage, too few arguments in command")); @@ -1956,6 +1963,8 @@ set_substitute_path_command (char *args, int from_tty) add_substitute_path_rule (argv[0], argv[1]); forget_cached_source_info (); + + do_cleanups (cleanup); } diff --git a/gdb/symfile.c b/gdb/symfile.c index e9609b26e0d..360f9993ec6 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1772,6 +1772,8 @@ find_sym_fns (bfd *abfd) static void load_command (char *arg, int from_tty) { + struct cleanup *cleanup = make_cleanup (null_cleanup, NULL); + dont_repeat (); /* The user might be reloading because the binary has changed. Take @@ -1821,6 +1823,8 @@ load_command (char *arg, int from_tty) /* After re-loading the executable, we don't really know which overlays are mapped any more. */ overlay_cache_invalid = 1; + + do_cleanups (cleanup); } /* This version of "load" should be usable for any target. Currently |