From f60ee22ea1d62f7004511ec65a3ad76890032d88 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 11 Oct 2016 20:02:23 -0600 Subject: Remove last cleanup from captured_main_1 An earlier patch split captured_main into two parts. This patch removes the last remaining cleanup from captured_main_1, and also replaces a second hand-rolled VEC-like array with a std::vector. 2016-10-21 Tom Tromey * main.c: Include . (cmdarg_s): Remove typedef. Don't define VEC. (captured_main_1): Use vector, not VEC. Remove cleanups. --- gdb/ChangeLog | 6 ++++ gdb/main.c | 93 +++++++++++++++++++++++++---------------------------------- 2 files changed, 46 insertions(+), 53 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f10034bd5fd..857d2a46e53 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2016-10-21 Tom Tromey + + * main.c: Include . + (cmdarg_s): Remove typedef. Don't define VEC. + (captured_main_1): Use vector, not VEC. Remove cleanups. + 2016-10-21 Tom Tromey * dwarf2loc.c (struct dwarf_expr_context_funcs): Don't declare. diff --git a/gdb/main.c b/gdb/main.c index e55c07b4c2a..23852e2d470 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -45,6 +45,7 @@ #include "event-top.h" #include "infrun.h" #include "signals-state-save-restore.h" +#include /* The selected interpreter. This will be used as a set command variable, so it should always be malloc'ed - since @@ -429,17 +430,14 @@ enum cmdarg_kind }; /* Arguments of --command option and its counterpart. */ -typedef struct cmdarg { +struct cmdarg { /* Type of this option. */ enum cmdarg_kind type; /* Value of this option - filename or the GDB command itself. String memory is not owned by this structure despite it is 'const'. */ char *string; -} cmdarg_s; - -/* Define type VEC (cmdarg_s). */ -DEF_VEC_O (cmdarg_s); +}; static void captured_main_1 (struct captured_main_args *context) @@ -467,15 +465,10 @@ captured_main_1 (struct captured_main_args *context) static int print_configuration; /* Pointers to all arguments of --command option. */ - VEC (cmdarg_s) *cmdarg_vec = NULL; - struct cmdarg *cmdarg_p; + std::vector cmdarg_vec; - /* Indices of all arguments of --directory option. */ - char **dirarg; - /* Allocated size. */ - int dirsize; - /* Number of elements used. */ - int ndir; + /* All arguments of --directory option. */ + std::vector dirarg; /* gdb init files. */ const char *system_gdbinit; @@ -510,11 +503,6 @@ captured_main_1 (struct captured_main_args *context) notice_open_fds (); save_original_signals_state (); - chain = make_cleanup (VEC_cleanup (cmdarg_s), &cmdarg_vec); - dirsize = 1; - dirarg = (char **) xmalloc (dirsize * sizeof (*dirarg)); - ndir = 0; - saved_command_line = (char *) xstrdup (""); #ifdef __MINGW32__ @@ -746,28 +734,28 @@ captured_main_1 (struct captured_main_args *context) { struct cmdarg cmdarg = { CMDARG_FILE, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case 'X': { struct cmdarg cmdarg = { CMDARG_COMMAND, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case OPT_IX: { struct cmdarg cmdarg = { CMDARG_INIT_FILE, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case OPT_IEX: { struct cmdarg cmdarg = { CMDARG_INIT_COMMAND, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case 'B': @@ -809,13 +797,7 @@ captured_main_1 (struct captured_main_args *context) interpreter_p = xstrdup (optarg); break; case 'd': - dirarg[ndir++] = optarg; - if (ndir >= dirsize) - { - dirsize *= 2; - dirarg = (char **) xrealloc ((char *) dirarg, - dirsize * sizeof (*dirarg)); - } + dirarg.push_back (optarg); break; case 't': ttyarg = optarg; @@ -1006,17 +988,21 @@ captured_main_1 (struct captured_main_args *context) catch_command_errors_const (source_script, home_gdbinit, 0); /* Process '-ix' and '-iex' options early. */ - for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++) - switch (cmdarg_p->type) + for (i = 0; i < cmdarg_vec.size (); i++) { - case CMDARG_INIT_FILE: - catch_command_errors_const (source_script, cmdarg_p->string, - !batch_flag); - break; - case CMDARG_INIT_COMMAND: - catch_command_errors (execute_command, cmdarg_p->string, - !batch_flag); - break; + const struct cmdarg &cmdarg_p = cmdarg_vec[i]; + + switch (cmdarg_p.type) + { + case CMDARG_INIT_FILE: + catch_command_errors_const (source_script, cmdarg_p.string, + !batch_flag); + break; + case CMDARG_INIT_COMMAND: + catch_command_errors (execute_command, cmdarg_p.string, + !batch_flag); + break; + } } /* Now perform all the actions indicated by the arguments. */ @@ -1025,9 +1011,8 @@ captured_main_1 (struct captured_main_args *context) catch_command_errors (cd_command, cdarg, 0); } - for (i = 0; i < ndir; i++) + for (i = 0; i < dirarg.size (); i++) catch_command_errors (directory_switch, dirarg[i], 0); - xfree (dirarg); /* Skip auto-loading section-specified scripts until we've sourced local_gdbinit (which is often used to augment the source search @@ -1116,17 +1101,21 @@ captured_main_1 (struct captured_main_args *context) load_auto_scripts_for_objfile (objfile); /* Process '-x' and '-ex' options. */ - for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++) - switch (cmdarg_p->type) + for (i = 0; i < cmdarg_vec.size (); i++) { - case CMDARG_FILE: - catch_command_errors_const (source_script, cmdarg_p->string, - !batch_flag); - break; - case CMDARG_COMMAND: - catch_command_errors (execute_command, cmdarg_p->string, - !batch_flag); - break; + const struct cmdarg &cmdarg_p = cmdarg_vec[i]; + + switch (cmdarg_p.type) + { + case CMDARG_FILE: + catch_command_errors_const (source_script, cmdarg_p.string, + !batch_flag); + break; + case CMDARG_COMMAND: + catch_command_errors (execute_command, cmdarg_p.string, + !batch_flag); + break; + } } /* Read in the old history after all the command files have been @@ -1138,8 +1127,6 @@ captured_main_1 (struct captured_main_args *context) /* We have hit the end of the batch file. */ quit_force (NULL, 0); } - - do_cleanups (chain); } static void -- cgit v1.2.1