diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2017-09-12 14:15:23 +0200 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2017-09-12 14:15:23 +0200 |
commit | 0782db848b52ecaf29e13d9f12a2c7cfabec2bdb (patch) | |
tree | fa9363f082aa5fc8678fd60e12b247c74dfe2540 /gdb/probe.c | |
parent | 1eac6bea98f41ee12ba9e750a9578bd8585011c9 (diff) | |
download | fsf-binutils-gdb-0782db848b52ecaf29e13d9f12a2c7cfabec2bdb.zip fsf-binutils-gdb-0782db848b52ecaf29e13d9f12a2c7cfabec2bdb.tar.gz fsf-binutils-gdb-0782db848b52ecaf29e13d9f12a2c7cfabec2bdb.tar.bz2 |
probe: Replace VEC(probe_ops_cp) with std::vector
This patch replaces the usage of VEC to store pointers to probe_ops with
an std::vector. The sole usage of that vector type is one global
variable that holds the ops for the various kinds of probes, so this is
pretty straightforward (no allocation/deallocation issues).
gdb/ChangeLog:
* probe.h (probe_ops_cp): Remove typedef.
(DEF_VEC_P (probe_ops_cp)): Remove.
(all_probe_ops): Change type to std::vector.
* probe.c (info_probes_for_ops): Adjust to vector change.
(probe_linespec_to_ops): Likewise.
(all_probe_ops): Change type to std::vector.
(_initialize_probe): Adjust to vector change.
* dtrace-probe.c (_initialize_dtrace_probe): Likewise.
* elfread.c (elf_get_probes): Likewise.
* stap-probe.c (_initialize_stap_probe): Likewise.
Diffstat (limited to 'gdb/probe.c')
-rw-r--r-- | gdb/probe.c | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/gdb/probe.c b/gdb/probe.c index 36211ea..f44d25d 100644 --- a/gdb/probe.c +++ b/gdb/probe.c @@ -565,9 +565,6 @@ info_probes_for_ops (const char *arg, int from_tty, if (pops == NULL) { - const struct probe_ops *po; - int ix; - /* If the probe_ops is NULL, it means the user has requested a "simple" `info probes', i.e., she wants to print all information about all probes. For that, we have to identify how many extra fields we will @@ -578,7 +575,7 @@ info_probes_for_ops (const char *arg, int from_tty, that number. But note that we ignore the probe_ops for which no probes are defined with the given search criteria. */ - for (ix = 0; VEC_iterate (probe_ops_cp, all_probe_ops, ix, po); ++ix) + for (const probe_ops *po : all_probe_ops) if (exists_probe_with_pops (probes, po)) ui_out_extra_fields += get_number_extra_fields (po); } @@ -616,13 +613,10 @@ info_probes_for_ops (const char *arg, int from_tty, if (pops == NULL) { - const struct probe_ops *po; - int ix; - /* We have to generate the table header for each new probe type that we will print. Note that this excludes probe types not having any defined probe with the search criteria. */ - for (ix = 0; VEC_iterate (probe_ops_cp, all_probe_ops, ix, po); ++ix) + for (const probe_ops *po : all_probe_ops) if (exists_probe_with_pops (probes, po)) gen_ui_out_table_header_info (probes, po); } @@ -647,11 +641,7 @@ info_probes_for_ops (const char *arg, int from_tty, if (pops == NULL) { - const struct probe_ops *po; - int ix; - - for (ix = 0; VEC_iterate (probe_ops_cp, all_probe_ops, ix, po); - ++ix) + for (const probe_ops *po : all_probe_ops) if (probe.probe->pops == po) print_ui_out_info (probe.probe); else if (exists_probe_with_pops (probes, po)) @@ -816,12 +806,9 @@ probe_safe_evaluate_at_pc (struct frame_info *frame, unsigned n) const struct probe_ops * probe_linespec_to_ops (const char **linespecp) { - int ix; - const struct probe_ops *probe_ops; - - for (ix = 0; VEC_iterate (probe_ops_cp, all_probe_ops, ix, probe_ops); ix++) - if (probe_ops->is_linespec (linespecp)) - return probe_ops; + for (const probe_ops *ops : all_probe_ops) + if (ops->is_linespec (linespecp)) + return ops; return NULL; } @@ -980,12 +967,12 @@ static const struct internalvar_funcs probe_funcs = }; -VEC (probe_ops_cp) *all_probe_ops; +std::vector<const probe_ops *> all_probe_ops; void _initialize_probe (void) { - VEC_safe_push (probe_ops_cp, all_probe_ops, &probe_ops_any); + all_probe_ops.push_back (&probe_ops_any); create_internalvar_type_lazy ("_probe_argc", &probe_funcs, (void *) (uintptr_t) -1); |